题目名称 2178. [JLOI 2015] 城池攻占
输入输出 fall.in/out
难度等级 ★★★☆
时间限制 2000 ms (2 s)
内存限制 512 MiB
测试数据 9
题目来源 Gravatarstone 于2016-03-16加入
开放分组 全部用户
提交状态
分类标签
左偏树
分享题解
通过:28, 提交:132, 通过率:21.21%
Gravatar卜卜 100 1.746 s 24.35 MiB C++
GravatarAnson 100 1.998 s 32.36 MiB C++
GravatarSmdpm 100 2.093 s 32.36 MiB C++
Gravatarwzf2000 100 2.201 s 37.30 MiB C++
Gravatarztx 100 2.299 s 10.62 MiB C++
GravatarCloud 100 2.315 s 39.20 MiB C++
Gravatarztx 100 2.363 s 10.62 MiB C++
GravatarHzoi_Mafia 100 2.464 s 17.77 MiB C++
GravatarYZ亮晶晶 100 2.639 s 24.94 MiB C++
GravatarZXCVBNM_1 100 2.737 s 25.50 MiB C++
关于 城池攻占 的近10条评论(全部评论)
爆栈啦~\(≧▽≦)/~
GravatarMayuri
2018-02-23 22:18 5楼
自己YY了一下午的左偏树
结果发现YY的左偏树没打错
在树上跑bfs打错了= =
根本不能bfs啊qwq
GravatarHzoi_Mafia
2017-11-02 17:48 4楼
爆栈+1
GravatarAAAAAAAAAA
2017-07-02 17:10 3楼
回复 @zys :
有。
Gravatar/k
2016-04-15 20:17 2楼
爆栈啦!!!!
在BZOJ上11584 ms低空掠过(时限是10000ms???貌似是倒一???),无奈在这里T成~,于是乎将时限设为3s。。。
话说我写的有这么渣吗
Gravatarzys
2016-03-27 17:52 1楼

2178. [JLOI 2015] 城池攻占

★★★☆   输入文件:fall.in   输出文件:fall.out   简单对比
时间限制:2 s   内存限制:512 MiB

【题目描述】

小铭铭最近获得了一副新的桌游,游戏中需要用 $m$ 个骑士攻占 $n$ 个城池。

这 $n$ 个城池用 $1$ 到 $n$ 的整数表示。除 $1$ 号城池外,城池 $i$ 会受到另一座城池 $fi$ 的管辖,其中 $fi<i$。也就是说,所有城池构成了一棵有根树。

这 $m$ 个骑士用 $1$ 到 $m$ 的整数表示,其中第 $i$ 个骑士的初始战斗力为 $si$,第一个攻击的城池为 $ci$。每个城池有一个防御值 $hi$,如果一个骑士的战斗力大于等于城池的生命值,那么骑士就可以占领这座城池;否则占领失败,骑士将在这座城池牺牲。占领一个城池以后,骑士的战斗力将发生变化,然后继续攻击管辖这座城池的城池,直到占领 $1$ 号城池,或牺牲为止。除 $1$ 号城池外,每个城池 $i$ 会给出一个战斗力变化参数$ai$;$vi$。若 $ai =0$,攻占城池 $i$ 以后骑士战斗力会增加 $vi$;若 $ai =1$,攻占城池 $i$ 以后,战斗力会乘以 $vi$。

注意每个骑士是单独计算的。也就是说一个骑士攻击一座城池,不管结果如何,均不会影响其他骑士攻击这座城池的结果。

现在的问题是,对于每个城池,输出有多少个骑士在这里牺牲;对于每个骑士,输出他攻占的城池数量。

【输入格式】

第 1 行包含两个正整数 $n;m$,表示城池的数量和骑士的数量。

第 2 行包含 $n$ 个整数,其中第 $i$ 个数为 $hi$,表示城池 $i$ 的防御值。

第 3 到 $n +1$ 行,每行包含三个整数。

其中第 $i +1$ 行的三个数为 $fi;ai;vi$,分别表示管辖这座城池的城池编号和两个战斗力变化参数。

第 $n +2$ 到 $n + m +1$ 行,每行包含两个整数。其中第 $n + i$ 行的两个数为 $si;ci$,分别表示初始战斗力和第一个攻击的城池。

【输出格式】

输出 n + m 行,每行包含一个非负整数。其中前 n 行分别表示在城池 1 到 n 牺牲的骑士数量,后 m 行分别表示骑士 1 到 m 攻占的城池数量。

【样例输入】

5 5

50 20 10 10 30

1 1 2

2 0 5

2 0 -10

1 0 10

20 2

10 3

40 4

20 4

35 5

【样例输出】

2

2

0

0

0

1

1

3

1

1

【提示】

对于 100% 的数据,1 <= n;m <= 300000; 1 <= fi<i; 1 <= ci <= n; -10^18 <= hi,vi,si <= 10^18;

ai等于1或者2;当 ai =1 时,vi > 0;保证任何时候骑士战斗力值的绝对值不超过 10^18。

这个题在BZOJ上总时限是10s,在这里就1s个点,但是有一个数据估计1s的不好写过,就把每个点的时限改成了2s。

由于加题人的程序可以跑进1.5秒,所以时限下调为1.5s

【来源】

版权 BZOJ4003  添加:stone ID:3327