hdu1698 dota的蒸汽机器人
来源:互联网 发布:手机淘宝管理软件 编辑:程序博客网 时间:2024/04/20 04:06
就是给你他的钩子长度,一开始是1,后来钩子可以改变,然后改变钩子,看能成为啥样。
运用lazy-tag思想,就是区间更新。就是感觉如果要更新的区间刚好就是这个节点的左右边界不用更新下面的每个点,把该节点的sum更新就可以了
#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace std;const int MaxN = 100010;struct node{ int l , r , lazy , sum , tag;}tree[MaxN << 2];void buildT(int l , int r , int rt){ tree[rt].l = l; tree[rt].r = r; tree[rt].lazy = 0; tree[rt].tag = 0; if(l == r){ tree[rt].sum = 1; return ; } int m = (l + r ) >> 1; buildT(l , m , rt << 1); buildT(m + 1 , r , rt << 1 | 1); tree[rt].sum = tree[rt << 1].sum + tree[rt << 1 | 1].sum;}void update(int l , int r , int rt , int v){ if(tree[rt].l == l && tree[rt].r == r ){ tree[rt].sum = (r - l + 1) * v; tree[rt].lazy = 1; tree[rt].tag = v; return; } int m = (tree[rt].l + tree[rt].r) >> 1; if(tree[rt].lazy == 1){ update(tree[rt].l , m , rt << 1 , tree[rt].tag); update(m + 1 , tree[rt].r , rt << 1 | 1 , tree[rt].tag); tree[rt].lazy = 0; tree[rt].tag = 0; } if(r <= m) update(l , r , rt << 1 , v); else if(l > m) update( l , r ,rt << 1 | 1 , v); else{ update(l , m , rt << 1 , v); update(m + 1 , r , rt << 1 | 1 , v); } tree[rt].sum = tree[rt << 1].sum + tree[rt << 1 | 1].sum;}int main(){ int i , n , m , l , cnt = 0 , x , y , z , t; scanf("%d",&t); while(t--){ cnt++; scanf("%d%d",&n , &m); buildT(1 , n , 1); while(m--){ scanf("%d%d%d", &x , &y , &z); update(x , y , 1 , z); } printf("Case %d: The total value of the hook is %d.\n",cnt , tree[1].sum); } return 0;}
0 0
- hdu1698 dota的蒸汽机器人
- hdu1698
- hdu1698
- hdu1698
- hdu1698
- hdu1698
- hdu1698
- HDU1698
- hdu1698
- hdu1698
- hdu1698
- hdu1698
- hdu1698
- hdu1698
- HDU1698
- HDU1698
- hdu1698
- HDU1698
- Flask 使用小结
- Xen中Credit调度算法分析
- 图像信号缺失或清晰度的检测算法
- Maven spring HelloWorld
- finally中使用return会吃掉catch中抛出的异常
- hdu1698 dota的蒸汽机器人
- 闭环Java应用
- EXT2的文件系统装载之内核函数ext2_fill_super分析
- 双谷人才财务管理(1)
- 深入浅出 妙用Javascript中apply、call、bind
- 聊一聊ThreadLocal
- 原型图还原功能
- 3. Longest Substring Without Repeating Characters
- Objective C类方法load和initialize的区别