hdu1166
来源:互联网 发布:知乎led灯化妆镜 编辑:程序博客网 时间:2024/06/11 14:33
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1166
解题思路:用线段树维护每一个区间。
#include <cstdio>#include <memory.h>const int maxn = 55555;int sum[maxn<<1];void PushUP(int rt) { sum[rt] = sum[rt<<1] + sum[rt<<1|1];}void build(int l,int r,int rt) { if (l == r) { scanf("%d",&sum[rt]); return ; } int m = (l + r) >> 1; build(l,m,rt<<1); build(m+1,r,rt<<1|1); PushUP(rt);}void update(int p,int add,int l,int r,int rt) { if (l == r) { sum[rt] += add; return ; } int m = (l + r) >> 1; if (p <= m) update(p , add , l,m,rt<<1); else update(p , add , m+1,r,rt<<1|1); PushUP(rt);}int query(int L,int R,int l,int r,int rt) { if (L <= l && r <= R) { return sum[rt]; } int m = (l + r) >> 1; int ret = 0; if (L <= m) ret += query(L , R , l,m,rt<<1); if (R > m) ret += query(L , R , m+1,r,rt<<1|1); return ret;}int main() { int T , n; scanf("%d",&T); memset(sum,0,sizeof(sum)); for (int cas = 1 ; cas <= T ; cas ++) { printf("Case %d:\n",cas); scanf("%d",&n); build(1 , n , 1); char op[10]; while (scanf("%s",op)) { if (op[0] == 'E') break; int a , b; scanf("%d%d",&a,&b); if (op[0] == 'Q') printf("%d\n",query(a , b , 1 , n , 1)); else if (op[0] == 'S') update(a , -b , 1 , n , 1); else update(a , b , 1 , n , 1); } } return 0;}
0 0
- hdu1166
- HDU1166
- hdu1166
- hdu1166
- hdu1166
- hdu1166
- hdu1166
- HDU1166
- hdu1166
- HDU1166
- hdu1166
- hdu1166
- hdu1166
- hdu1166
- hdu1166
- hdu1166
- hdu1166
- hdu1166
- ngrok
- Java实现POJ 1017:装箱问题
- setOnClickListener报空指针异常
- 实现顶部轮播,下部listview经典布局的两种方式
- UVA - 12174 Shuffle 滑动窗口
- hdu1166
- Java 反射API
- 87. Scramble String Leetcode Python
- eclipse更新插件plugin之后如何clean使之生效
- 网络编程 ——socket基本概念
- Filco蓝牙键盘在Win8.1/Linux双系统中应用 Win8引导Linux 蓝牙双系统配对
- Dynamics CRM 2015 Update 0.1 - Error.ActionFailed Microsoft.Crm.Tools.Admin.InstallDatabaseUpdatesAc
- Posts Tagged 【Math】
- Linux 目录结构说明