hdu 1166 敌兵布阵
来源:互联网 发布:知乎电脑版 迅雷下载 编辑:程序博客网 时间:2024/05/29 18:02
线段树简单题
#include<stdio.h>#define N 50005int a[N],n,c,cnt;struct op{ int left,right,cont;}p[N*3];void insert(int l,int r,int i){ p[i].left=l;p[i].right=r; if(l==r) { p[i].cont=a[l];return; } int mind=(l+r)/2; insert(l,mind,i*2); insert(mind+1,r,i*2+1); p[i].cont=p[i*2].cont+p[i*2+1].cont;}void xiugai(int l,int r,int i){ if(l==r) { p[i].cont+=cnt; return ; } int mind=(l+r)/2; if(c>mind) { xiugai(mind+1,r,i*2+1); } else { xiugai(l,mind,i*2); } p[i].cont=p[i*2].cont+p[i*2+1].cont;}int chaxun(int start,int end,int i){ int sum=0; if(p[i].left==start&&p[i].right==end) { return p[i].cont; } int mind=(p[i].left+p[i].right)/2; if(start>mind) sum+=chaxun(start,end,i*2+1); else if(end<=mind) sum+=chaxun(start,end,i*2); else { sum+=chaxun(start,mind,i*2); sum+=chaxun(mind+1,end,i*2+1); } return sum;}int main(){ int i,j,t,o=1; char str[20]; scanf("%d",&t); while(o<=t) { scanf("%d",&n); for(i=1;i<=n;i++) scanf("%d",&a[i]); insert(1,n,1); printf("Case %d:\n",o); while(scanf("%s",str),str[0]!='E') { scanf("%d%d",&c,&cnt); if(str[0]=='A') { xiugai(1,n,1); } else if(str[0]=='S') { cnt=-cnt; xiugai(1,n,1); } else if(str[0]=='Q') { printf("%d\n",chaxun(c,cnt,1)); } } o++; } return 0;}
- HDU 1166 敌兵布阵
- HDU 1166 敌兵布阵
- hdu 1166 敌兵布阵
- hdu 1166 敌兵布阵
- HDU 1166 敌兵布阵
- hdu 1166 敌兵布阵
- hdu 1166 敌兵布阵
- hdu 1166敌兵布阵
- hdu 1166 敌兵布阵
- hdu 1166 敌兵布阵
- HDU 1166 敌兵布阵
- hdu 1166 敌兵布阵
- hdu 1166 敌兵布阵
- HDU 1166 敌兵布阵
- HDU 1166 - 敌兵布阵
- hdu 1166 敌兵布阵
- hdu 1166 敌兵布阵
- hdu 1166 敌兵布阵
- 机器人行走
- highside 介绍
- MyBatis学习3---使用SqlBuilder生成SQL语句
- 多玩YY语音的面试题:C++中如何在main()函数之前执行操作?
- saltstack官方文档——Configuring the Salt Minion
- hdu 1166 敌兵布阵
- 我的Android进阶之旅------>Android Widget 桌面数字时钟(DigtalClockWidget)实例
- java编程之计算圆球体积(从命令窗输入数据)
- windows7 重装后找回ubuntu系统
- 大数据量查询优化性能
- java编程之计算球体体积(从对话窗体输入数据)
- 美丽的大树
- Js中 关于top、clientTop、scrollTop、offsetTop的用法
- html Demo工具类:网页使用ie另存为htm文件时,css样式文件的图片路径不对,进行修改,并下载图片