题意很简单,求不是那么好求的,k很大 要操作很多次,所以不可能直接来的,印象中解决操作比较多无非线段树 循环节 矩阵 组合数等等吧,这道题目 也就只能多画画什么 的了
就以第一个案例为主吧 ,
3
1 2 3
k我们依据画的次数来自己定好了
下面的每个数表示这个位置的 数由最初的 数组num[]中多少个数加起来得到的
当k为0的时候呢,就是
1 1 1
k为1的时候呢
1 2...
分类:
其他好文 时间:
2014-07-23 22:32:17
阅读次数:
196
void build(int l, int r, int n) //建树
{
int mid;
tree[n].l = l;
tree[n].r = r;
if(l==r)
{
tree[n].sum = h[l];
return ;
}
mid = (l+r)>>1;
build(l, mid, 2*n);
build(mid+1, r, 2*n+1);
tree[n].sum = tree[2*n].sum + tree[2*n+1].sum;
}...
分类:
其他好文 时间:
2014-07-23 18:11:36
阅读次数:
282
对task和machine的yi由小到大进行排序,然后对machine来跟task配对。当machine[].yi >= task[].yi时,就更新线段树,在1-1440上做线段树,线段树存的是task[].xi,同时用用优先队列保存task[].yi;当machine[].yi 2 #incl....
分类:
其他好文 时间:
2014-07-23 16:29:51
阅读次数:
297
题目大意:
n个女性中,如果有一个女性的三维比这个女性的三维...
分类:
其他好文 时间:
2014-07-23 13:39:06
阅读次数:
272
题目大意:
给出一棵树,树上每个节点都有权值,然后有两个操作。
1 x val 在结点x上加上一个值val,x的儿子加上 -val,x的儿子的儿子加上 - (-val),以此类推。
2 x 问x节点的值。
思路分析:
每个节点上加值都是给自己的儿子节点加,而且这个是颗树。
比如样例上的,如果你给node 1加一个值,那么五个节点都加。
再给node 2加个值,2的儿子节点也加...
分类:
其他好文 时间:
2014-07-23 13:19:26
阅读次数:
272
13年长春现场赛的G题,赤裸裸的二维线段树,单点更新,区间查询不过我是第一次写二维的,一开始写T了,原因是我没有好好利用行段,说白一点,还是相当于枚举行,然后对列进行线段树,那要你写二维线段树干嘛二维就是在每个行段也建一棵树,来代表这个区间的行里的某些列的值其他操作倒是不难,因为有一维的功底,只是多...
分类:
其他好文 时间:
2014-07-23 11:53:36
阅读次数:
216
给一个数组,求区间[l,r]中第k大的数。今天被各种数据结构虐爆了,自己还是需要学习一下函数式线段树的,这个东西好像还挺常用。函数式线段树的思想是这样的,对于每个时间状态,我们都建立一颗线段树,查询两个状态在某个区间的差的话,我们只要找到两个状态分别对应的点相减即可。由于每次我使用线段树更新的时候,...
分类:
其他好文 时间:
2014-07-23 11:47:06
阅读次数:
241
求一个序列中所有数字的和,其中数值相同的只能计算一次。
先储存所有的请求,然后按照它们的右边界排序,在查询的同时更新区间。这里其实有一点点DP的味道,在它进行某个查询之前,保证所有的重复数字(除去最后一个)都被删除光了,并且有不能影响其他查询,所以呢,只能从最近的那个操作进行计算。1次query即可
#include
#include
#include
#include
#includ...
分类:
其他好文 时间:
2014-07-23 00:07:07
阅读次数:
238
简单线段树插入和查询删除 1 #include 2 #include 3 #include 4 using namespace std; 5 int num[10000]; 6 int node[20000]; 7 int scale; 8 void clear(int n){ 9 scal...
分类:
其他好文 时间:
2014-07-22 23:30:27
阅读次数:
291