hdu 1698 Just a Hook
来源:互联网 发布:会计师事务所 知乎 编辑:程序博客网 时间:2024/06/07 00:18
线段树成段更新,设置延迟标记,很好的方法,想出这个方法的人确实很吊
注意细节,有些小地方错了真的很难发现~
#include<iostream>#define maxn 111111using namespace std;int n,a,b,m;struct stu{int l,r,sum,flag;};stu mapp[maxn*4];void build(int l,int r,int count){mapp[count].l=l;mapp[count].r=r;mapp[count].flag=0;if(l==r){mapp[count].sum=1;mapp[count].flag=1;return;} int mid=(l+r)/2;build(l,mid,count*2);build(mid+1,r,count*2+1);mapp[count].sum=mapp[count*2].sum+mapp[count*2+1].sum;}void pushdown(int count,int x){if(mapp[count].flag){mapp[count*2].flag=mapp[count].flag;mapp[count*2+1].flag=mapp[count].flag;mapp[count*2].sum=mapp[count].flag*((x+1)/2);mapp[count*2+1].sum=mapp[count].flag*(x/2);mapp[count].flag=0;}}void updata(int l,int r,int count){if(l>=a&&r<=b){mapp[count].sum=m*(r-l+1);mapp[count].flag=m;return ;}pushdown(count,r-l+1);int mid=(l+r)/2;if(a<=mid) updata(l,mid,count*2);if(b>=mid+1) updata(mid+1,r,count*2+1);mapp[count].sum=mapp[count*2].sum+mapp[count*2+1].sum;}int main(){cin.sync_with_stdio(false);int t;cin>>t;int casee=1;while(t--){cin>>n;build(1,n,1);int s;cin>>s;for(int i=0;i<s;i++){cin>>a>>b>>m;updata(1,n,1);}cout<<"Case "<<casee++<<": The total value of the hook is ";cout<<mapp[1].sum<<"."<<endl;}return 0;}
0 0
- hdu 1698 Just a Hook
- hdu 1698 Just a Hook
- Hdu 1698 Just a Hook
- hdu 1698 Just a Hook
- hdu 1698 just a hook
- hdu 1698 Just a Hook
- HDU 1698 Just a Hook
- hdu 1698 Just a Hook
- hdu 1698 Just a Hook
- hdu 1698 Just a Hook
- hdu 1698 Just a Hook
- HDU-1698-Just a Hook
- hdu 1698 Just a Hook
- hdu 1698 Just a Hook
- HDU 1698 Just a Hook
- HDU 1698 - Just a Hook
- hdu 1698 Just a Hook
- HDU 1698 Just a Hook
- Cordova 开发属于自己的插件(plugin)
- HDU 1243 反恐训练营(最长公共子序列的变形)
- 测试英语
- 如何逐行读取文本文件 - .NET技术 / C#
- Oracle Instant Client(即时客户端) 安装与配置 PLSQL Developer
- hdu 1698 Just a Hook
- hdu 5373 The shortest problem
- 侧滑删除进阶(五)
- Func和委托零碎代码
- Android 详解第三方介质交互之NFC,并且实现读你的交通卡,酒店房卡,学生证!
- 推荐程序员去的网站
- hdu3697(贪心+暴力)
- 软件安全性服务
- Glass Beads - POJ 1509 最小表示法