2014 Multi-University Training Contest 9#11
2014 Multi-University Training Contest 9#11
Killing MonstersTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)
Total Submission(s): 562 Accepted Submission(s): 308
Problem Description
Kingdom Rush is a popular TD game, in which you should build some towers to protect your kingdom from monsters. And now another wave of monsters is coming and you need again to know whether you can get through it.
The path of monsters is a straight line, and there are N blocks on it (numbered from 1 to N continuously). Before enemies come, you have M towers built. Each tower has an attack range [L, R], meaning that it can attack all enemies in every block i, where L<=i<=R. Once a monster steps into block i, every tower whose attack range include block i will attack the monster once and only once. For example, a tower with attack range [1, 3] will attack a monster three times if the monster is alive, one in block 1, another in block 2 and the last in block 3.
A witch helps your enemies and makes every monster has its own place of appearance (the ith monster appears at block Xi). All monsters go straightly to block N.
Now that you know each monster has HP Hi and each tower has a value of attack Di, one attack will cause Di damage (decrease HP by Di). If the HP of a monster is decreased to 0 or below 0, it will die and disappear.
Your task is to calculate the number of monsters surviving from your towers so as to make a plan B.
Input
The input contains multiple test cases.
The first line of each case is an integer N (0 < N <= 100000), the number of blocks in the path. The second line is an integer M (0 < M <= 100000), the number of towers you have. The next M lines each contain three numbers, Li, Ri, Di (1 <= Li <= Ri <= N, 0 < Di <= 1000), indicating the attack range [L, R] and the value of attack D of the ith tower. The next line is an integer K (0 < K <= 100000), the number of coming monsters. The following K lines each contain two integers Hi and Xi (0 < Hi <= 10^18, 1 <= Xi <= N) indicating the ith monster’s live point and the number of the block where the ith monster appears.
The input is terminated by N = 0.
Output
Output one line containing the number of surviving monsters.
Sample Input
521 3 15 5 251 33 15 27 39 10
Sample Output
3
Hint
In the sample, three monsters with origin HP 5, 7 and 9 will survive.
#include<cstdio>
using namespace std;
#define maxn 100000+10
typedef long long LL;
struct node{
int l,r,m;
LL sum,mark;
}T[maxn<<];
int a[maxn];
void build(int id,int l,int r){
T[id].l=l; T[id].r=r; T[id].m=(l+r)>>; T[id].mark=;
if(l==r) { T[id].sum=a[l]; return; }
int m=(l+r)>>;
build(id<<,l,m); build((id<<)+,m+,r);
T[id].sum=(T[id<<].sum+T[(id<<)+].sum);
}
void update(int id,int l,int r,int val){
if(T[id].l==l&&T[id].r==r){
T[id].mark+=val; return ;
}
T[id].sum+=(LL)val*(r-l+);
if(T[id].m>=r)
update(id<<,l,r,val);
else if(T[id].m<l)
update((id<<)+,l,r,val);
else{
update(id<<,l,T[id].m,val);
update((id<<)+,T[id].m+,r,val);
}
}
LL query(int id,int l,int r){
if(T[id].l==l&&T[id].r==r) return T[id].sum+T[id].mark*(LL)(r-l+);
if(T[id].mark!=) {
T[id<<].mark+=T[id].mark;
T[(id<<)+].mark+=T[id].mark;
T[id].sum+=(LL)(T[id].r-T[id].l+)*T[id].mark; T[id].mark=;
}
if(T[id].m>=r){
return query(id<<,l,r);
}
else if(T[id].m<l){
return query((id<<)+,l,r);
}
else{
return query(id<<,l,T[id].m)+query((id<<)+,T[id].m+,r);
}
}
int main(){
int n,Q,m; char str[]; int b,c,d,l,r,v;
while(scanf("%d",&n)==&&n){
scanf("%d",&Q);
for(int i=;i<=n;i++){
a[i] = ;
}
build(,,n);
for(int i=;i<Q;i++){
scanf("%d%d%d",&l,&r,&v);
update(,l,r,v);
}
scanf("%d",&m);
LL h;
int x;
int ans = ;
for(int i = ;i<m;i++)
{
scanf("%I64d%d",&h,&x);
if(query(,x,n)<h) ans++;
}
printf("%d\n",ans);
}
return ;
}
2014 Multi-University Training Contest 9#11的更多相关文章
- HDU4888 Redraw Beautiful Drawings(2014 Multi-University Training Contest 3)
Redraw Beautiful Drawings Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- hdu 4946 2014 Multi-University Training Contest 8
Area of Mushroom Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) ...
- 2014 Multi-University Training Contest 9#6
2014 Multi-University Training Contest 9#6 Fast Matrix CalculationTime Limit: 2000/1000 MS (Java/Oth ...
- 2014 Multi-University Training Contest 1/HDU4861_Couple doubi(数论/法)
解题报告 两人轮流取球,大的人赢,,, 贴官方题解,,,反正我看不懂.,,先留着理解 关于费马小定理 关于原根 找规律找到的,,,sad,,, 非常easy找到循环节为p-1,每个循环节中有一个非零的 ...
- 2014 Multi-University Training Contest 1/HDU4864_Task(贪心)
解题报告 题意,有n个机器.m个任务. 每一个机器至多能完毕一个任务.对于每一个机器,有一个最大执行时间Ti和等级Li,对于每一个任务,也有一个执行时间Tj和等级Lj.仅仅有当Ti>=Tj且Li ...
- hdu 4937 2014 Multi-University Training Contest 7 1003
Lucky Number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) T ...
- hdu 4941 2014 Multi-University Training Contest 7 1007
Magical Forest Time Limit: 24000/12000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Other ...
- hdu 4939 2014 Multi-University Training Contest 7 1005
Stupid Tower Defense Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/ ...
- 2015 Multi-University Training Contest 10(9/11)
2015 Multi-University Training Contest 10 5406 CRB and Apple 1.排序之后费用流 spfa用stack才能过 //#pragma GCC o ...
随机推荐
- 摆脱jquery,用自己的JS库实现ajax功能
可以将下面的代码保存在一个文件里如:myAjax.js,以后在项目中如果觉得jquery那一套很重,就完全可以使用自己的ajax库,不用担心性能和兼容性! /** * 创建ajax请求对象 * @re ...
- UVA 10564 Paths through the Hourglass[DP 打印]
UVA - 10564 Paths through the Hourglass 题意: 要求从第一层走到最下面一层,只能往左下或右下走 问有多少条路径之和刚好等于S? 如果有的话,输出字典序最小的路径 ...
- Vc6.0头文件的定义
Vc6.0头文件的定义 #ifndef __HEADER__ #define __HEADER__ int fun(int i); #endif
- java集合中List与set的区别
java集合中List与set的区别. List可以存储元素为有序性并且元素可以相同. set存储元素为无序性并且元素不可以相同. 下面贴几段代码感受一下: ArrayL ...
- Hibernate选择题总结
Hibernate选择题总结 1.在Hibernate中,以下关于主键生成器说法错误的是( ). A.increment可以用于类型为long.short或byte的主键 B.identity用于如S ...
- 程序测试--DOS界面测试C程序
打开命令提示符或运行CMD或直接通过路径C:\WINDOWS\System32\cmd.exe打开即可: 转到可执行文件所在的磁盘,然后输入mycount.exe <1.txt命令即可.如图示对 ...
- How to create a launcher for a manually extracted program in Ubuntu
Say we have a latest Blender extracted from the download package. We want to create a launcher for B ...
- 判断.net中在windows系统下的字节序
字节序,是指字节在内存中的存储顺序.其又分为大端字节(Big-Endian)序和小端字节序(Little-Endian). 以下摘自百度百科: a) Little-Endian就是低位字节排放在内存的 ...
- nodejs+express+mysql 增删改查
之前,一直使用的是nodejs+thinkjs来完成自己所需的项目需求,而对于nodejs中另外一中应用框架express却了解的少之又少,这两天就简单的了解了一下如何使用express来做一些数据库 ...
- 【IIS】iis6.1下添加两个ftp站点,
1,添加本地账户或密码||组 :[控制面板-->管理工具-->计算机管理器-->系统工具-->本地用户和组] 2,IIS站点目录先(添加FTP站点)[注意:多个站点多个端口] ...