hdu(1698)——Just a Hook(成段更新,节点求和,lazy思想)
发布日期:2021-09-19 06:09:14
浏览次数:18
分类:技术文章
本文共 1650 字,大约阅读时间需要 5 分钟。
题目的大意是:
一开始有n个钩子,然后他们的价值全是1。
然后有Q次操作,然后每次有三个数x,y,z;你可以改变从x到y的区间的钩子的值为z。
然后最后一个询问,要你输出n个钩子的总价值是多少。
这里我首次接触到了lazy思想,实际上就是给完全包含当前区间的那个区间标记一下,然后不继续往下面更新,直到下次继续遇到这个区间并且需要继续往下面更新才把当前的lazy标记往下去更新。并且也不要忘记pushup更新操作。
以前的代码写的不好,现在在重新贴上来一发。。
现在重新再做这题,发现1A了,十分简单,O(∩_∩)O哈哈~,加油!
#include#include #include #include using namespace std;#define maxn 111111struct node{ int l,r; int sum,flag,add;}tree[maxn*4];void pushup(int v){ int temp=v<<1; tree[v].sum=tree[temp].sum+tree[temp+1].sum;}void pushdown(int v){ int temp=v<<1; tree[temp].flag=tree[temp+1].flag=1; tree[temp].sum=tree[v].add*(tree[temp].r-tree[temp].l+1); tree[temp+1].sum=tree[v].add*(tree[temp+1].r-tree[temp+1].l+1); tree[temp].add=tree[temp+1].add=tree[v].add; tree[v].add=0; tree[v].flag=0;}void build(int l,int r,int v){ tree[v].l=l; tree[v].r=r; tree[v].sum=1; tree[v].flag=0; tree[v].add=0; if(l==r) return; int mid=(tree[v].l+tree[v].r)>>1; int temp=v<<1; build(l,mid,temp); build(mid+1,r,temp+1); pushup(v);}void update(int l,int r,int v,int x){ if(tree[v].l==l&&tree[v].r==r){ tree[v].sum=x*(tree[v].r-tree[v].l+1); tree[v].flag=1; tree[v].add=x; return; } if(tree[v].flag) pushdown(v); int mid=(tree[v].l+tree[v].r)>>1; int temp=v<<1; if(r<=mid) update(l,r,temp,x); else if(l>mid) update(l,r,temp+1,x); else{ update(l,mid,temp,x); update(mid+1,r,temp+1,x); } pushup(v);}int main(){ int T,n,Q; while(~scanf("%d",&T)){ int jj=1; while(T--){ scanf("%d%d",&n,&Q); build(1,n,1); while(Q--){ int x,y,z; scanf("%d%d%d",&x,&y,&z); update(x,y,1,z); } printf("Case %d: The total value of the hook is %d.\n",jj++,tree[1].sum); } }}
转载地址:https://blog.csdn.net/ACMer_hades/article/details/46489391 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
感谢大佬
[***.8.128.20]2024年03月31日 17时52分23秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【Java网络编程与IO流】Java中BIO、NIO、AIO的区别是什么?
2019-04-26
【Leetcode刷题篇】leetcode136 只出现一次的数字
2019-04-26
spring boot整合thymeleaf,支持JSP和HTML页面开发
2019-04-26
【Java网络编程与IO流】Spring boot整合SSE实现服务器实时推送流信息
2019-04-26
【Leetcode刷题篇】leetcode141 环形链表II
2019-04-26
【Leetcode刷题篇】leetcode160 相交链表
2019-04-26
【Leetcode刷题篇】leetcode169 多数元素
2019-04-26
【Leetcode刷题篇】leetcode461 汉明距离
2019-04-26
【Leetcode刷题篇】leetcode204 计数质数
2019-04-26
【Leetcode刷题篇】leetcode70 爬楼梯
2019-04-26
【Leetcode刷题篇】leetcode739 每日温度
2019-04-26
【Leetcode刷题篇】leetcode121买卖股票的最佳时机
2019-04-26
【面试篇】Java多线程并发-Java关键字volatile详解
2019-04-26
【面试篇】Java的代理模式-静态代理和动态代理详解
2019-04-26
【面试篇】 Java对象拷贝(对象克隆 对象复制)
2019-04-26
【Leetcode刷题篇】leetcode64 最小路径和
2019-04-26
【Leetcode刷题篇】leetcode79 单词搜索
2019-04-26
【Leetcode刷题篇】leetcode300 最长上升子序列
2019-04-26
【Leetcode刷题篇】leetcode394 字符串解码
2019-04-26