小橙子Time Limit: 2000 MSMemory Limit: 32768 KTotal Submit: 2(2 users)Total Accepted: 1(1 users)Rating:Special Judge:NoDescription玻璃小屋里曾经住着一个小橙子。小橙子小小的,性...
分类:
其他好文 时间:
2014-08-10 18:30:30
阅读次数:
205
题目地址:POJ 2299
这题曾经用归并排序做过,线段树加上离散化也可以做。一般线段树的话会超时。
这题的数字最大到10^10次方,显然太大,但是可以利用下标,下标总共只有50w。可以从数字大的开始向树上加点,然后统计下标比它小即在它左边的数的个数。因为每加一个数的时候,比该数大的数已经加完了,这时候坐标在它左边的就是一对逆序数。
但是该题还有一个问题,就是数字重复的问题。这时候可以在排序...
分类:
其他好文 时间:
2014-08-10 15:43:20
阅读次数:
210
题目链接:http://poj.org/problem?id=2828
在一个队列中,一个人想要插队,告诉你每个新来的人会插在i个人后面,求出最后的队列。
如果我们用模拟的话,那么时间复杂度肯定是超了;想想,如果我们逆序,那么最后来的人的位置一定是固定的,这样的话,我们将问题转化成逆序扫描给出数据,插在i个人后面这个数据就变成了在这个人前面需要留出多少个空位。如此我们只需要用树状数组记录前n项...
分类:
其他好文 时间:
2014-08-10 10:29:30
阅读次数:
383
/*
二维的树状数组:
更新一个a元素的时候。如果a[i]更新了,那么以下几项都需要更新:
NO.1:c[n1],c[n2],c[n3],....,c[nm];
其中n1 = i,n(i+1) = ni+lowbit(ni);
nm+lowbit(nm)的值应该大于a的元素个数N。
NO.2:sum(k)=c[n1]+c[n2]+...+c[nm];
其中nm=k,n(i-1)=ni-lowbit...
分类:
其他好文 时间:
2014-08-10 10:28:30
阅读次数:
384
题目链接Counting OffspringTime Limit: 15000/5000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1757Accepted Submission(s):...
分类:
其他好文 时间:
2014-08-09 23:01:29
阅读次数:
372
擦 这题 绝逼 坑人 + 一波N折。。。。 touch me我一开始 用了最简单 最sb的 一维hash数组 来做 我看时间2000ms最大数才10W 还以为能过的 ...果断tle了然后 就觉得应该用更高效的数据结构来做了我去问下了下porker 他一开始和我提了下 splay 不会啊=-=...
分类:
其他好文 时间:
2014-08-09 21:19:49
阅读次数:
301
1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 #define F first 7 #define S second 8 #define MP(a,b) make_pair( make_pair(a,...
分类:
其他好文 时间:
2014-08-09 18:32:18
阅读次数:
277
题意:题意很清楚;
策略;如题。
这道题就是简单的线段树应用,据说还可以用树状数组来做,等我学了之后在说吧。
代码:
#include
#include
#define LC l, m, rt<<1
#define RC m+1, r, rt<<1|1
#define LL long long
#define MAXN 1000000
LL sum[MAXN<<2];
void PushU...
分类:
其他好文 时间:
2014-08-09 11:35:07
阅读次数:
219
Problem HTime Limit : 5000/3000ms (Java/Other)Memory Limit : 65535/32768K (Java/Other)Total Submission(s) : 8Accepted Submission(s) : 3Font: Times New...
分类:
其他好文 时间:
2014-08-09 11:26:47
阅读次数:
382
题目地址:HDU 1394
这题可以用线段树来求逆序数。
这题的维护信息为每个数是否已经出现。每次输入后,都从该点的值到n-1进行查询,每次发现出现了一个数,由于是从该数的后面开始找的,这个数肯定是比该数大的。那就是一对逆序数,然后逆序数+1.最后求完所有的逆序数之后,剩下的就可以递推出来了。因为假如目前的第一个数是x,那当把他放到最后面的时候,少的逆序数是本来后面比他小的数的个数。多的逆序数...
分类:
其他好文 时间:
2014-08-09 00:18:06
阅读次数:
250