hdu 1698 Just a Hook 只是一个钩
来源:互联网 发布:淘宝摄影师招聘 编辑:程序博客网 时间:2024/06/02 23:33
这道题是一道线段树的成段更新的题目,刚开始做的时候没A过去,后来看别人的解题报告,代码如下。
#include<stdio.h>#include<string.h>#define maxn 100005int a[maxn*4];int s[maxn*4];void push(int rt){a[rt]=a[rt*2]+a[rt*2+1];}void pdown(int rt, int x){ if(s[rt]!=-1) { s[rt*2]=s[rt*2+1] = s[rt]; a[rt*2]=(x-(x/2))*s[rt];///!!! a[rt*2+1]=(x/2)*s[rt];///!!! s[rt]=-1; }}void build(int l, int r, int rt){ s[rt]=-1, a[rt]=1; if(l == r) return; int mid=(l+r)/2; build(l, mid, rt*2); build(mid+1, r, rt*2+1); push(rt);}void update(int l, int r, int x, int L, int R, int rt){ if(l<=L&&r>=R) { s[rt]=x; a[rt]=x*(R-L+1);///!!! return; } pdown(rt, R-L+1);///!!! int mid =(L+R)/2; if(l <= mid) update(l, r, x, L, mid, rt<<1); if(r > mid) update(l, r, x, mid+1, R, rt<<1|1); push(rt);}int main(){int k=0;int n,t,q,x,y,w;while(~scanf("%d",&t)){while(t--){scanf("%d%d",&n,&q);build(1,n,1);while(q--){scanf("%d%d%d",&x,&y,&w);update(x,y,w,1,n,1);}printf("Case %d: The total value of the hook is %d.\n", ++k, a[1]);}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
- 1023. Have Fun with Numbers (20)
- 欧拉回路
- inline(行内)元素
- Tabs-building blocks
- 三只松鼠助理总裁潘道伟:你所不能逾越的互联网时代
- hdu 1698 Just a Hook 只是一个钩
- EffectiveJava之14-复合优于继承
- EffectiveJava之16-★接口优于抽象类
- Ruby入门
- EffectiveJava之18-优先考虑静态成员类
- java计算二叉树的高度以及叶节点个数
- 容器 知识点总结
- Java实现遍历文件夹
- Struts2源码中所列 常量Constant配置清单