hdu:1556 Just a Hook
2016-07-05 22:18
344 查看
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int maxn=2100010; int t,n,q; int sum[maxn*4],mar[maxn]; void build(int l,int r,int i) { mar[i]=0; if(l==r) { sum[i]=1; return; } int mid=(l+r)>>1; build(l,mid,i<<1); build(mid+1,r,i<<1|1); sum[i]=sum[i<<1]+sum[i<<1|1]; } void pushdown(int i,int m) { if(mar[i]) { mar[i<<1]=mar[i]; mar[i<<1|1]=mar[i]; sum[i<<1]=mar[i]*(m-(m>>1)); sum[i<<1|1]=mar[i]*(m>>1); mar[i]=0; } } void updata(int L,int R,int d,int l,int r,int i) { if(L<=l&&r<=R) { mar[i]=d; sum[i]=d*(r-l+1); return; } pushdown(i,r-l+1); int mid=(l+r)>>1; if(L<=mid) updata(L,R,d,l,mid,i<<1); if(R>mid) updata(L,R,d,mid+1,r,i<<1|1); sum[i]=sum[i<<1]+sum[i<<1|1]; } int main() { scanf("%d",&t); for(int cnt=1;cnt<=t;cnt++) { scanf("%d%d",&n,&q); for(int i=1;i<=n;i++) sum[i]=1; build(1,n,1); int x,y,d; while(q--) { scanf("%d%d%d",&x,&y,&d); updata(x,y,d,1,n,1); } printf("Case %d: The total value of the hook is %d.\n",cnt,sum[1]); } return 0; }
相关文章推荐
- 在android studio中新建android gradle project的时候connect refused:connect或者卡在building project...或Refreshing
- leetcode:Rotate List
- Java基础知识(一)
- centos7安装zabbix3.0.3
- tomcat 配置虚拟站点
- Cache应用中的服务过载案例研究
- Ubuntu入门学习笔记(1)
- Can you share some Scala List class examples?
- 类的继承和接口的实现
- pager-taglib分页中文乱码
- Python安装Pip出现的问题
- JSON详解
- 199_让PieChart出来之后动画
- 反人类的MyEclipse之-eclipse设置花括号换行显示
- 动态规划--背包问题
- BroadcastReceiver and Serivce
- 225. Implement Stack using Queues
- 【代班大咖第二期】我想聊聊高科技
- # ReactiveCocoa - 进阶篇
- 用户空间的spi驱动