二叉堆,老是WA,请问错误在哪,我实在找不出~

csdon000 2012-03-23 12:26:34
http://acm.dlut.edu.cn/problem.php?id=1081
Description

三国演义有记载,新野一战,刘备以少胜多打败曹操,曹操引五十万大军前来报仇。刘备的三千人马走到当阳县,突然被曹兵截住,战到天明才摆脱曹兵的追赶,护卫刘备家小的赵云发现不见了刘备,走散了糜夫人母子,急集合三十骑,又杀回乱军中寻找。赵云在一位大嫂的指引下,在一截断墙后面的枯井旁找到糜夫人母子。糜夫人说:"见到将军阿斗有救了,……我死而无恨!"说完,趁赵云不注意跳井身亡。这时曹兵向这边杀来,赵云含泪推倒土墙埋了夫人,急忙抱起阿斗往外冲。曹将杀来,战三回合,被赵云杀死。赵云力战众将,威武勇猛。正在山上观战的曹操见赵云势不可挡,传令一定要活捉。赵云利用这个机会冲出包围,连杀50员曹将,终于将阿斗交给了刘备。

赵云单骑救主的故事广为流传。话说赵云有一招绝技,没有人能够在绝技下幸存。赵云救到刘禅后,要突出重围。已知赵云一共遇到了n名敌人,每个敌人有一个攻击力,每个敌人的攻击力各不相同,且最大为n。为了减轻自己的压力,赵云每次会选择当前幸存的攻击力最大的敌人并将其杀死。n名敌人会依次过来增援,一次来一个,并且都围在赵云周围(即来了之后赵云都可以攻击到),现在给出敌人的增援序列和赵云使用绝技的时间,请依次给出死亡敌人的攻击力。

Input

第一个整数为case(case<=10)数。对于每个case,一定以整数n(n<=100000)开头,表示对应的敌人总数。下一行n个整数依次表示增援敌人的攻击力。下一行一个整数,表示赵云使用绝技的次数q(q<=n),接下来一行q个整数(由小到大),qi表示赵云在第qi个敌人来了之后使用了一次绝技。

Output

依次输出死亡敌人的攻击力,每两个整数之间一个空格,每个case结尾有个换行。

Sample Input

2
5
1 2 3 4 5
2
2 5
4
1 2 3 4
1
4
Sample Output

2 5
4
# include<stdio.h>
# include<string.h>

int heap[100001],b[100001],all=0;

void insert(int x)
{
heap[all] = x;
all++;
int s,p = all-1,t;
while(p>0)
{
s = (p-1)/2;
if(heap[s]<heap[p])
{
t = heap[s];
heap[s] = heap[p];
heap[p] = t;
p = s;
}
else break;
}
}

void del()
{
heap[0] = heap[all-1];
all--;
int i,s=0,t;
for(i=1;i<all;i=2*s+1)
{
if(heap[i]<heap[i+1] && i+1<all) i++;
if(heap[s]>=heap[i]) break;
t = heap[s];
heap[s] = heap[i];
heap[i] = t;
s = i;
}
}

int main()
{
int n,i,t,x,q,j;
scanf("%d",&t);
while(t--)
{
all = 0;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&b[i]);
scanf("%d",&q);
for(i=1,j=0;i<=q;i++)
{
scanf("%d",&x);
while(j<x)
{
insert(b[j]);
j++;
}
printf("%d",heap[0]);
if(j<n)printf(" ");
del();
}
printf("\n");
}
return 0;
}
...全文
93 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
代码转载自:https://pan.quark.cn/s/8ce4326d996e 对于在 CentOS 7 系统中修改网卡配置文件后无法使设置生效的情况,经过实践验证,可以通过使用 nmcli 命令来进行调整。完成修改之后,需要重新启动虚拟机以使更改生效,这样操作流程即告完成。如果设置仍然无法生效,则表明虚拟机在启动过程中所获取的 IP 地址配置并非针对 eth0,此时可以对其它网卡的配置文件进行修改或将其移除。在 CentOS 7 系统中,网络配置的管理机制与早期版本存在差异,主要体现为采用了 Network Manager 服务来负责网络接口的管理。在某些情形下,尽管修改了 `/etc/sysconfig/network-scripts` 目录下的 `ifcfg-eth0` 文件,但网络配置却未能即时生效。此类问题的发生通常源于 CentOS 7 采用了不同于以往的配置读取方法。接下来将具体阐述如何借助 nmcli 命令来处理这一挑战。 以 root 用户身份登录系统并打开终端界面。nmcli 是 Network Manager 提供的命令行界面工具,它支持在命令行环境下执行网络连接的建立、编辑、查询及管理任务。针对修改 eth0 网卡配置的需求,可以遵循以下步骤进行操作: 1. 导航至 `/etc/sysconfig/network-scripts` 目录: ``` cd /etc/sysconfig/network-scripts ``` 2. 检查该目录内是否存在 `ifcfg-eth0.bak` 文件,该备份文件可能是先前调整配置时遗留下来的,若存在可能造成冲突。若发现该文件,可以选择将其删除: ``` [root@localhost netw...
代码转载自:https://pan.quark.cn/s/46fd08fb879c 网管教程 从入门到精通软件篇 ★一。★详尽的xp修复控制台指令及其应用!!! 放入xp(2000)的光盘,安装时选择R,执行修复! Windows XP(涵盖 Windows 2000)的控制台指令是在系统遭遇某些意外状况时的一种极具效用的诊断、检测以及恢复系统功能的工具。笔者确实一直期望能够将这方面的指令进行归纳,此次由老范辛苦整理了这份极具价值的秘籍。 Bootcfg bootcfg 命令用于启动配置与故障恢复(对大多数计算机而言,即 boot.ini 文件)。 带有特定参数的 bootcfg 命令仅在运用故障恢复控制台时方可使用。能够在命令行界面下运用带有不同参数的 bootcfg 命令。 用法: bootcfg /default 设定默认引导选项。 bootcfg /add 向引导清单中增添 Windows 安装。 bootcfg /rebuild 重复整个 Windows 安装流程并让用户选择需添加的项目。 注意:运用 bootcfg /rebuild 之前,应先借助 bootcfg /copy 命令备份 boot.ini 文件。 bootcfg /scan 探查用于 Windows 安装的全部磁盘并展示结果。 注意:这些结果被静态存储,并用于当前会话。若在当前会话期间磁盘配置发生变动,为获取更新的探查结果,必须先重启计算机,然后再次探查磁盘。 bootcfg /list 列示引导清单中已有的项目。 bootcfg /disableredirect 在启动引导程序中禁用重定向。 bootcfg /redirect [ PortBaudRrate] |[ useBio...

70,038

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧