我是靠谱客的博主 跳跃宝马,这篇文章主要介绍HDU1698,现在分享给大家,希望可以做个参考。

hdu1698
帕吉钩子的每一节有三种材质,每一种的价值不同,问经过数次修改后钩子的总价值。
最基础的线段树区间更新。
做这道题的时候发现左移和右移运算符的优先级要比+和-还要低…
还是太菜
加油!

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include<iostream> #include<cstdio> #include<algorithm> using namespace std; #define MAXN 100010 #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 #define mid int m = (l + r) >> 1 int sum[MAXN<<2]; int col[MAXN<<2]; void PushUp(int rt) { sum[rt] = sum[rt<<1] + sum[rt<<1|1]; } void PushDown(int rt,int m) { if(col[rt]) { col[rt<<1] = col[rt<<1|1] = col[rt]; sum[rt<<1] = col[rt] *(m-(m>>1)); sum[rt<<1|1] = col[rt] *(m>>1); col[rt] = 0; } } void build(int l,int r,int rt) { col[rt] = 0; sum[rt] = 1; if(l==r) return; mid; build(lson); build(rson); PushUp(rt); } void update(int L,int R,int c,int l,int r,int rt) { if(L <= l&& r <= R){ col[rt] = c; sum[rt] = c * (r - l + 1); return; } PushDown(rt,r-l+1); mid; if(L<=m) update(L,R,c,lson); if(R>m) update(L,R,c,rson); PushUp(rt); } int query(int L,int R,int l,int r,int rt) { PushDown(rt,r-l+1); int ret = 0; mid; if(L<=m) ret += query(L,R,lson); if(R>m) ret += query(L,R,rson); return ret; } int main() { ios::sync_with_stdio(false); int T,n,q,a,b,c,casenum; while(cin>>T){ casenum = 0; while(T--){ cin>>n>>q; build(1,n,1); for(int i = 0;i<q;i++){ cin>>a>>b>>c; update(a,b,c,1,n,1); } for(int i = 1;i<=20;i++) cout<<sum[i]<<endl; printf("Case %d: The total value of the hook is %d.",++casenum,sum[1]); } } }

最后

以上就是跳跃宝马最近收集整理的关于HDU1698的全部内容,更多相关HDU1698内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

相关文章

JavaWeb笔记-备份下Java中map的entrySet()方法返回的是什么内容啊?servlet 有参数的init方法和无参数的init方法一个常见错误List<Object>和List<String>
JavaWeb笔记-备份下Java中map的entrySet()方法返回的是什么内容啊?servlet 有参数的init方法和无参数的init方法一个常见错误List和List

评论列表共有 0 条评论