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

Atcoder Beginner Contest153F(模拟)

时间:2020-01-27 17:31:04      阅读:62      评论:0      收藏:0      [点我收藏+]

标签:amp   tin   long   vector   define   time   应该   bsp   模拟   

应该也可以用线段树/树状数组区间更新怪兽的生命值来做

 1 #define HAVE_STRUCT_TIMESPEC
 2 #include<bits/stdc++.h>
 3 using namespace std;
 4 long long pre[200007];
 5 int main(){
 6     ios::sync_with_stdio(false);
 7     cin.tie(NULL);
 8     cout.tie(NULL);
 9     long long n,d,a;
10     cin>>n>>d>>a;
11     vector<pair<long long,long long> >v;
12     for(int i=1;i<=n;++i){
13         long long x,y;
14         cin>>x>>y;
15         long long z=(y-1)/a+1;
16         v.push_back({x,z});
17     }
18     sort(v.begin(),v.end());
19     long long ans=0;
20     long long sum=0;
21     int r=1;//打不到的最近范围
22     for(int i=0;i<n;++i){
23         while(r<n&&v[r].first<=v[i].first+2*d)
24             ++r;
25         sum-=pre[i];//sum为当前位置已经预先承受的伤害总量
26         v[i].second-=sum;
27         if(v[i].second<=0)
28             continue;
29         sum+=v[i].second;//累计伤害
30         pre[r]+=v[i].second;//r位置以前承受的伤害总量
31         ans+=v[i].second;
32     }
33     cout<<ans;
34     return 0;
35 }

 

Atcoder Beginner Contest153F(模拟)

标签:amp   tin   long   vector   define   time   应该   bsp   模拟   

原文地址:https://www.cnblogs.com/ldudxy/p/12236129.html

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