HDOJ1166 敌兵布阵
赤裸裸的线段树,借个模板,改写一下即可。
代码:
- #include<iostream>
- #include<cstdio>
- #include<stdio.h>
- #include<cstring>
- using namespace std;
- struct line{
- int left,right,n;
- int mid(){return (left+right)/2;}
- }a[50010<<2];
- unsigned short num[50010];
- void build(int l,int r,int step)
- {
- a[step].left=l;
- a[step].right=r;
- if(l==r)
- {
- a[step].n=num[l];
- return;
- }
- int mid=a[step].mid();
- build(l,mid,step*2);
- build(mid+1,r,step*2+1);
- a[step].n=a[step*2].n+a[step*2+1].n;
- }
- int query(int l,int r,int step)
- {
- if(a[step].left==l&&a[step].right==r)
- return a[step].n;
- int mid=a[step].mid();
- if(mid>=r)
- return query(l,r,step*2);
- else if(mid<l)
- return query(l,r,step*2+1);
- else
- return query(l,mid,step*2)+query(mid+1,r,step*2+1);
- }
- void Add(int l,int r,int step,int x,int y)
- {
- if(a[step].left==a[step].right&&a[step].right==x)
- {
- a[step].n+=y;
- return ;
- }
- int mid=a[step].mid();
- if(x>mid)
- Add(mid,r,step*2+1,x,y);
- else
- Add(l,mid,step*2,x,y);
- a[step].n=a[step*2].n+a[step*2+1].n;
- }
- void Sub(int l,int r,int step,int x,int y)
- {
- if(a[step].left==a[step].right&&a[step].right==x)
- {
- a[step].n-=y;
- return ;
- }
- int mid=a[step].mid();
- if(x>mid)
- Sub(mid,r,step*2+1,x,y);
- else
- Sub(l,mid,step*2,x,y);
- a[step].n=a[step*2].n+a[step*2+1].n;
- }
- int main()
- {
- int t,n;
- scanf("%d",&t);
- for(int tcase=1;tcase<=t;tcase++)
- {
- printf("Case %d:\n",tcase);
- scanf("%d",&n);
- for(int i=1;i<=n;i++)
- scanf("%d",&num[i]);
- build(1,n,1);
- char in[6];
- int x,y;
- while(scanf("%s",&in)&&strcmp(in,"End")!=0)//字符数组匹配,弄得我好惨
- {
- scanf("%d%d",&x,&y);
- if(strcmp(in,"Query")==0)
- printf("%d\n",query(x,y,1));
- else if(strcmp(in,"Sub")==0)
- Sub(1,n,1,x,y);
- else if(strcmp(in,"Add")==0)
- Add(1,n,1,x,y);
- }
- }
- return 0;
- }
HDOJ1166 敌兵布阵的更多相关文章
- 敌兵布阵 HDOJ--1166
敌兵布阵 Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submissi ...
- HDU 1166 敌兵布阵 (树状数组)
题目链接 : http://acm.hdu.edu.cn/showproblem.php?pid=1166 敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) ...
- HDU 1166 敌兵布阵(分块)
敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- HDU 1166 敌兵布阵(线段树单点更新)
敌兵布阵 单点更新和区间更新还是有一些区别的,应该注意! [题目链接]敌兵布阵 [题目类型]线段树单点更新 &题意: 第一行一个整数T,表示有T组数据. 每组数据第一行一个正整数N(N< ...
- hdu acm 1166 敌兵布阵 (线段树)
敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- HDU 1166 敌兵布阵
B - 敌兵布阵 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Sta ...
- HDU 1166 敌兵布阵(线段树模板题)
题目链接: 传送门 敌兵布阵 Time Limit: 2000MS Memory Limit: 32768 K Description C国的死对头A国这段时间正在进行军事演习,所以C国间谍头 ...
- ACM: 敌兵布阵 解题报告 -线段树
敌兵布阵 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Description Li ...
- hdu 敌兵布阵(线段树之单点更新)
敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
随机推荐
- hdu 2222 Keywords_ac自动机模板
题意:给你n个单词,再给你一串字符,求在字符中有多少个单词出现过 #include <iostream> #include<cstdio> #include<cstrin ...
- 《编写高质量代码 改善Java程序的151个建议》书摘
例子1:三元操作符的陷阱 int i = 80; String str1 = String.valueOf(i < 100 ? 90 : 100); String str2 = String.v ...
- Java List 汉字进行排序
Comparator<Person> cmp = new Comparator<Person>() { public int compare(Person o1, Person ...
- OC基础16:复制对象
"OC基础"这个分类的文章是我在自学Stephen G.Kochan的<Objective-C程序设计第6版>过程中的笔记. 1.浅复制即是指针赋值,复制对象的修改会影 ...
- 使用ObjectAnimator开发打开、关闭书本动画
动画效果 动画效果-分享链接 (想做成gif图的,尝试各种工具无果) ObjectAnimator简单介绍及实现思路 ObjectAnimator是从api level 11 (Android3.0x ...
- .NET与你若仅仅如初见(一)
难忘初次见到你,那是一个夏日的午后,可是天空中乌云密布.大雨来临前的一段时间总是非常闷热的,当我朦胧的睡眼看到你之后瞬间就清醒了,感觉空气也凉爽了起来.尽管仅仅一眼但就是被你那清新脱俗沉鱼落雁之美所征 ...
- 【MFC学习笔记-作业8-蝴蝶飞~】【什么鬼作业】
作业要求: 用定时器控制蝴蝶在窗口废物,如图所示... 这是什么鬼作业啊...蝴蝶还要我这个手残手画啊233333333 (ノಠ .ಠ)ノ彡┻━┻ 不过多亏之前几个鬼作业的福 收获颇 ...
- mybatis中使用log4j
Mybatis默认使用有slf4j,所以必须加入下面的依赖,否则可能出现日志无法打印sql或者无法打印resultset. <dependency> <groupId>org. ...
- Javascript 常用代码总结
1. document.referrer可以获得上一页的地址,使用document.anchors获得页面上面所有的链接元素,而不必使用 document.getElementsByTagName(' ...
- iOS分类
ios中的分类其实就是把两个类用两个或多个文件写的,,在平时的开发中我们会发现有的时候我们想要一个类多个什么功能 但是已经定义好的类中没有,,我们又不想更改我们的程序 那么现在的这种情况下我就可以 ...