首页 > TAG信息列表 > 敌兵
HDU1166 敌兵布阵
题目传送门 此题目是树状数组的模板题,没有任何技术含量,记忆吧~ #include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> #include <cmath> #include <algorithm> #include <queue> #include <string> #include <vector> uC - 敌兵布阵
题目: 题目网址:Problem - 1166 (hdu.edu.cn) 思路: 对N个数据进行单个的增加或者减少,并随时获取一段数据的和; 普通的方法只能让增减和查询其中一个的复杂度为O(n); 这里我就需要用的线段树进行存储让两个步骤的复杂度都为O(log n); 线段树就是用空间来代替时间; 首先要对数据进行敌兵布阵-HDU1166
题目:C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了。A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况。由于采取了某种先进的监测手段,所以每个工兵营地的人数C国都掌握的一清二楚,每个工兵营地的A - 敌兵布阵
C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了。A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况。由于采取了某种先进的监测手段,所以每个工兵营地的人数C国都掌握的一清二楚,每个工兵营地的人数hdu1166 敌兵布阵
题目链接 线段树模板题 线段树我是拿一个结构体(struct)存的: struct Tree {int l,r,len;}a[(N<<2)+10]; 建树: void Build(int l,int r,int s)//建树 { a[s].l=l; a[s].r=r; a[s].len=r-l+1; if(l==r)//叶子节点,返回 { b[s]=num[l]; returHDU1166-敌兵布阵
C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了。A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况。由于采取了某种先进的监测手段,所以每个工兵营地的人数C国都掌握的一清二楚,每个工兵营地的人数hdu1166 敌兵布阵
建树+更新+查找 第一次写线段树的题,改了比较久orz 需要注意的几点: 1.main函数里调用函数时,第一个变量——当前下标从哪里开始。之前一直想着从0开始,忽略了p*2会继续为0这件事。 2.忘记改case:%d对应的变量了…… 3.比较两个字符串那里可以改成strcmp(str,"Query")这样orz 贴上代码敌兵布阵 树状数组
#include <cstdio>#include <cstring>using namespace std;const int MAXN=50005;int c[MAXN],t,i,a,b,n,k;int lowbit(int id){ return id&-id;}void add(int a,int b){ while(a<=n) { c[a]+=b敌兵布阵
http://acm.hdu.edu.cn/showproblem.php?pid=1166 1 #include <bits/stdc++.h> 2 #define lid id<<1 3 #define rid id<<1|1 4 #define maxn 50005 5 using namespace std; 6 struct node 7 { 8 int l,r,num; 9 }tr[maxn*4];10 int s[maxn];11 12 vo