码迷,mamicode.com
首页 > 其他好文 > 详细

HDU 4970 Killing Monsters

时间:2014-08-21 11:02:03      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   os   io   for   div   amp   

开始以为是线段树,算了一下复杂度也觉得能过。。。但是这题貌似卡了线段树。。。

具体做法:

  对每一个塔,记录attack[l]+=d,attack[r+1]-=d;这样对于每个block,受到的伤害就是前缀和attack[1]+attack[2]+...+attack[i];

  从后往前遍历,计算从当前点到结束受到的总的伤害;

 

ps:貌似很多人都是用树状数组写的。。。写完还是不太懂和树状数组有什么关系。。。orz

 

 1 #include <iostream>
 2 #include <cstring>
 3 #include <cstdio>
 4 using namespace std;
 5 
 6 const int maxn = 100005 ;
 7 
 8 long long attack[maxn];
 9 long long sum[maxn];
10 
11 int main (){
12     int n,m,l,r,d,k,x,ans;
13     long long h;
14     while (~scanf ("%d",&n)&&n){
15         memset (attack,0,sizeof attack);
16         scanf ("%d",&m);
17         while (m--){
18             scanf ("%d%d%d",&l,&r,&d);
19             attack[l]+=d;
20             attack[r+1]-=d;
21         }
22         long long temp=0;
23         for (int i=1;i<=n;i++){
24             temp+=attack[i];
25             attack[i]=temp;
26         }
27         temp=0;
28         for (int i=n;i>=1;i--){
29             temp+=attack[i];
30             sum[i]=temp;
31         }
32         scanf ("%d",&k);
33         ans=0;
34         while (k--){
35             scanf ("%I64d%d",&h,&x);
36             if (sum[x]<h)
37                 ans++;
38         }
39         printf ("%d\n",ans);
40     }
41     return 0;
42 }

 

HDU 4970 Killing Monsters,布布扣,bubuko.com

HDU 4970 Killing Monsters

标签:style   blog   color   os   io   for   div   amp   

原文地址:http://www.cnblogs.com/gfc-g/p/3926443.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!