敌兵布阵 HDOJ--1166】的更多相关文章

敌兵布阵 HDU 1166 线段树 题意 这个题是用中文来描写的,很简单,没什么弯. 解题思路 这个题肯定就是用线段树来做了,不过当时想了一下可不可用差分来做,因为不熟练就还是用了线段树来做,几乎就是模板题了. 代码实现 #include<cstdio> #include<cstring> #include<algorithm> #include<string> #include<iostream> # define ls (rt<<…
Description C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况.由于采取了某种先进的监测手段,所以每个工兵营地的人数C国都掌握的一清二楚,每个工兵营地的人数都有可能发生变动,可能增加或减少若干人手,但这些都逃不过C国的监视. 中央情报局要研究敌人究竟演习什么战术,所以Tidy要随时向Derek汇报某一段连续的工兵营地一共有多少人,例如Dere…
线段树板子题练手用 #include<cstdio> using namespace std; ; int a[maxn],n; struct Node{ int l,r; long long sum,lazy; void update(long long val){ sum+=1ll*(r-l+)*val; lazy+=val; } }tree[maxn*]; void push_up(int x){ tree[x].sum=tree[x<<].sum+tree[x<<…
思路:就是树状数组的模板题,利用的就是单点更新和区间求和是树状数组的强项时间复杂度为m*log(n) 没想到自己以前把这道题当线段树的单点更新刷了. 树状数组: #include<iostream> #include<cstdio> #include<cstring> using namespace std; ; int tree[maxn], n; void add(int k, int num) { while (k <= n) { tree[k] += nu…
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; typedef long long LL; ; int n; int l,r; int t; int x; int a[N]; ]; ]; int lowbit(int x) { return x & -x; } void add(int x, int c…
A - 敌兵布阵 HDU - 1166 思路:线段树单点修改+区间查询. #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #define MAXN 50001 using namespace std; string s; int t,n,tot; struct nond{ int l,r,sum; }tree[MAXN*]; void up(int now){…
2015-06-08 问题简述: 原题的题意相当于有一些连续摆放的箱子,里面装着球,球的数量可以加减,现要查询几个连续的箱子里球的总数,其中存在放球和拿球的操作. 原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1166 解题思路: 查询区间和的问题,可以使用线段树. 最初的输入相当于构建线段树的过程:每一次的加减相当于对线段树进行更新:最后使用线段树的查询区间和算法直接得出答案. 源代码: /* OJ: HDOJ ID: forever TASK:…
HDOJ(HDU).1166 敌兵布阵 (ST 单点更新 区间求和) 点我挑战题目 题意分析 根据数据范围和询问次数的规模,应该不难看出是个数据结构题目,题目比较裸.题中包括以下命令: 1.Add(i,j)表示 a[i]+=j; 2.Sub(i,j)表示 a[i]-=j; 3.Query(i,j)表示 Σ(a[i],a[j]). Add操作和Sub操作分别是单点更新,Query是区间求和.题目比较裸,但是在写ST模板的时候还是不能一次写对,出的错记录如下: 1.由于对模板的不熟悉,rt打成rn导…
题目传送门 /* 线段树基本功能:区间值的和,修改某个值 */ #include <cstdio> #include <cstring> #define lson l, m, rt << 1 #define rson m+1, r, rt << 1|1 + ; ]; void pushup(int rt) //杭电大牛:notOnlySuccess 版本 { sum[rt] = sum[rt<<] + sum[rt<<|]; } vo…
敌兵布阵 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 60199    Accepted Submission(s): 25490 Problem Description C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就…