hdoj 1166 敌兵布阵
来源:互联网 发布:淘宝改一口价的技巧 编辑:程序博客网 时间:2024/06/06 01:43
题目链接:敌兵布阵
题目大意:给你n个数,有这样的一些操作,将某个位置的数增加一个value,将某个位置的数减少一个value,查找某个区间x到y的区间和
题目思路:首先,直接暴力是不可行的,N的数据范围为50000,然后是单点更新加区间求和,树状数组可做,然后直接套班子就好
#include <bits/stdc++.h>using namespace std;const int maxn = 5e4+10;int N,c[maxn],a[maxn];int lowbit(int i){ return i&(-i);}void add(int i,int value){ while(i <= N){ c[i]+=value; i += lowbit(i); }}int sum(int i){ int sum = 0; while(i > 0){ sum += c[i]; i -= lowbit(i); } return sum;}int main(){ int t,x,y,Case = 1; char op[20]; scanf("%d",&t); while(t--){ scanf("%d",&N); memset(c,0,sizeof(c)); for(int i = 1;i <= N;i++){ scanf("%d",&x);add(i,x); } printf("Case %d:\n",Case);Case++; while(scanf("%s",op)){ if(op[0] == 'E') break; else if(op[0] == 'A'){ scanf("%d%d",&x,&y); add(x,y); } else if(op[0] == 'S'){ scanf("%d%d",&x,&y); add(x,-y); } else if(op[0] == 'Q'){ scanf("%d%d",&x,&y); printf("%d\n",sum(y)-sum(x-1)); } } } return 0;}
阅读全文
0 0
- HDOJ 1166 敌兵布阵
- HDOJ 1166 敌兵布阵
- HDOJ 1166 - 敌兵布阵
- hdoj 1166 敌兵布阵
- hdoj 1166 敌兵布阵
- HDOJ 1166 敌兵布阵
- HDOJ 1166 ---敌兵布阵
- HDOJ 1166 敌兵布阵
- HDOJ 1166 敌兵布阵
- HDOJ 1166 敌兵布阵
- hdoj 1166 敌兵布阵
- hdoj 1166 敌兵布阵
- HDOJ-1166 敌兵布阵
- hdoj 1166 敌兵布阵
- hdoj 1166 敌兵布阵
- HDOJ 1166-敌兵布阵
- HDU/HDOJ----1166 敌兵布阵
- hdu/hdoj 1166 敌兵布阵
- [李景山php] PHP扩展开发系列教程2-通过php.ini初始化你扩展的配置
- ajax根据经纬度 获取地址
- jsp页面跳转,引入
- English in May(2017)
- Date Formate Patterns相关整理
- hdoj 1166 敌兵布阵
- 如何快速克隆一个github项目到本地
- PDF文件加密怎么转换成word
- javascript/javascript基础总结
- Java并行程序基础
- Server-Side Swift系列 「Intro Vapor2」
- spring boot学习详细资料
- log4j多配置文件处理
- 看看我这个萌新的Android逆向入门学习的路程吧!