上一页 1 ··· 45 46 47 48 49 50 51 52 53 ··· 182 下一页
摘要: 题意:一个数列,每次操作可以是将某区间数字都加上一个相同的整数,也可以是询问一个区间中所有数字的和。(这里区间指的是数列中连续的若干个数)对每次询问给出结果。分析:线保留型线段树,线段树中每个节点有两个变量:增量与和,一个记录当前节点对应区间被整体增加了几,另一个记录该区间的真子区间被增加了之后的和是多少。(该区间数字当前和=和+增量×区间长度)修改时更新路线上不完整覆盖的节点的和变量以及恰好完整覆盖的节点的增量变量。询问可以通过回溯过程通过各节点两变量值求得。三种线段树,参见:http://www.cnblogs.com/rainydays/archive/2011/09/06/2 阅读全文
posted @ 2012-11-19 17:25 undefined2024 阅读(2452) 评论(0) 推荐(0)
摘要: 基础线段树View Code //poj3264#include <iostream>#include <algorithm>#include <numeric>using namespace std;const int maxn = 50002;struct cnode{ int l, r, nmin, nmax; cnode *pleft, *pright;};int ncount, cow[maxn], n, q, ansmax, ansmin;cnode tree[maxn * 2];void init(){ ... 阅读全文
posted @ 2012-11-19 17:15 undefined2024 阅读(542) 评论(0) 推荐(0)
摘要: 题意:给一个三脚阵,第i行有i个点。皇后可以攻击三脚阵中六方向上的所有点,给定三脚阵的边长n,已知最多可以放floor((n * 2 + 1) / 3)个互不冲突的皇后,要求给出一种方案。分析:根据题中数据找规律,进行构造,n<3的是特殊情况,每个点坐标用两个值表示,[i,j]表示第i行的第j个点,我们发现把这(n * 2 + 1) / 3个放皇后的坐标,从右往左看,发现i是从n开始每次递减1。从左往右看j的变化规律是1,3,5,7……2,4,6,8……,先奇数从1递增,然后偶数从2递增,那么分界线在哪呢?就是i>=j的时候是奇数,i增长慢但起点高,j增长快但起点底,j必然在某一点 阅读全文
posted @ 2012-11-18 13:43 undefined2024 阅读(156) 评论(0) 推荐(0)
摘要: 简单题,随便找一条棱,平均分成n份即可。View Code #include <iostream>#include <cstdlib>#include <cstdio>#include <cstring>using namespace std;int main(){ //freopen("t.txt", "r", stdin); int x, y, z, n; scanf("%d%d%d%d", &x, &y, &z, &n); for (int i = 阅读全文
posted @ 2012-11-17 11:06 undefined2024 阅读(162) 评论(0) 推荐(0)
摘要: 简单题View Code #include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>using namespace std;#define maxs 105int s, n, m;int school[maxs];int prob[maxs];void input(){ for (int i = 0; i < s; i++) { int a, b, c; scanf("%d%d%d", &a, &b, &c); 阅读全文
posted @ 2012-11-16 20:33 undefined2024 阅读(181) 评论(0) 推荐(0)
上一页 1 ··· 45 46 47 48 49 50 51 52 53 ··· 182 下一页