摘要:
http://www.cnblogs.com/jianglangcaijin/p/3460012.html首先将矩阵的数字排序。设置size,每次将size个数字插入。插入时,我们用h[i][j]记录该位置的数字是否已经插入;用sum[i][j]表示子矩阵(1,1)到(i,j)已经插入的数字个数总和...
阅读全文
posted @ 2014-12-05 20:14
AutSky_JadeK
阅读(265)
推荐(0)
摘要:
分块,每个块内部有序化,查询时二分。修改时直接修改覆盖在各个块上的delta。块大小O(sqrt(n*log(n)))比较合适。 1 #include 2 #include 3 #include 4 using namespace std; 5 #define N 1000001 6 char op...
阅读全文
posted @ 2014-12-05 15:53
AutSky_JadeK
阅读(202)
推荐(0)
摘要:
题解:http://www.cnblogs.com/zyfzyf/p/4105184.html一、下传标记写法 1 #include 2 #include 3 #include 4 using namespace std; 5 #define lson rt'9';c=getchar())if(c=...
阅读全文
posted @ 2014-12-05 13:26
AutSky_JadeK
阅读(210)
推荐(0)
摘要:
题解懒得自己写了,Orz一发wangxz神犇的:http://bakser.gitcafe.com/2014/12/04/bzoj3787-Gty%E7%9A%84%E6%96%87%E8%89%BA%E5%A6%B9%E5%AD%90%E5%BA%8F%E5%88%97-%E5%AE%98%E6%...
阅读全文
posted @ 2014-12-05 12:05
AutSky_JadeK
阅读(280)
推荐(0)
摘要:
缩点后转化成 DAG图上的单源最长路问题。spfa/dp随便。 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 int cmp[500001],sum,n,m,Us[500001],Vs[...
阅读全文
posted @ 2014-11-30 11:04
AutSky_JadeK
阅读(232)
推荐(0)
摘要:
根据 高中的数学知识 即可推出 ans=m^n-m*(m-1)^(n-1) 。快速幂取模搞一下即可。 1 #include 2 using namespace std; 3 typedef long long ll; 4 #define MOD 100003 5 ll n,m; 6 ll Quick...
阅读全文
posted @ 2014-11-30 08:49
AutSky_JadeK
阅读(184)
推荐(0)
摘要:
莫队经典。 开个数组维护a[i]出现的次数。 1 #include 2 #include 3 #include 4 using namespace std; 5 int Num,CH[12],f,c; 6 inline void R(int &x){ 7 c=0;f=1; 8 for...
阅读全文
posted @ 2014-11-28 15:58
AutSky_JadeK
阅读(200)
推荐(0)
摘要:
题解见 :http://blog.csdn.net/iamzky/article/details/41088151ORZ ZKY2个懒标记:是否翻转,覆盖成了什么。怎么处理一个块上有两个标记的情况呢?若该块原来没有任何标记,或要打的标记和原本的标记种类相同,则直接打上标记;若已有翻转标记,再覆盖时则...
阅读全文
posted @ 2014-11-27 12:15
AutSky_JadeK
阅读(260)
推荐(0)
摘要:
分块,打标记,维护两个标记:乘的 和 加的。每次 区间乘的时候,对 乘标记 和 加标记 都 乘上那个值。每次 区间加的时候 对 加标记 加上那个值。(ax+b)*v=axv+bv。开 long long。 1 #include 2 #include 3 using namespace std;...
阅读全文
posted @ 2014-11-26 16:01
AutSky_JadeK
阅读(231)
推荐(0)
摘要:
权值的种类只有100种,对每种开个二维BIT,然后是经典操作。 1 #include 2 using namespace std; 3 int n,m,q,x1,y1,x2,y2,val,op,a[301][301]; 4 struct BIT_2D 5 { 6 int d[301][301...
阅读全文
posted @ 2014-11-25 16:58
AutSky_JadeK
阅读(183)
推荐(0)
摘要:
发现,若使方差最小,则使Σ(wi-平均数)2最小即可。因为权值的范围很小,所以我们可以枚举这个平均数,每次把边权赋成(wi-平均数)2,做kruscal。但是,我们怎么知道枚举出来的平均数是不是恰好是我们的这n-1条边的呢? 就在更新答案的时候加个特判就行了。 1 #include 2 #inclu...
阅读全文
posted @ 2014-11-25 12:19
AutSky_JadeK
阅读(1124)
推荐(1)
摘要:
裸的三维偏序。 对x坐标排序,y、z坐标分块。复杂度O(n*sqrt(n*log(n)))。代码很短。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 struct Point{int x,y,z,num;vo...
阅读全文
posted @ 2014-11-23 21:37
AutSky_JadeK
阅读(465)
推荐(0)
摘要:
经典问题:二维偏序。给定平面中的n个点,求每个点左下方的点的个数。因为 所有点已经以y为第一关键字,x为第二关键字排好序,所以我们按读入顺序处理,仅仅需要计算x坐标小于树状数组。 1 #include 2 #include 3 #include 4 using namespace std; 5 st...
阅读全文
posted @ 2014-11-23 15:39
AutSky_JadeK
阅读(945)
推荐(0)
摘要:
以下部分来自:http://www.cnblogs.com/zhuohan123/p/3726306.html此证明有误。DZY系列。这题首先是几个性质: 1.所有球质量相同,碰撞直接交换速度,而球又没有编号,那么就可以直接视作两个球没有碰撞。 2.所有的方向、初始位置都没有任何用处。然后就是速...
阅读全文
posted @ 2014-11-23 08:32
AutSky_JadeK
阅读(249)
推荐(0)
摘要:
nlogn求出最长上升子序列长度。对每次询问,贪心地回答。设输入为x。当前数a[i]可能成为答案序列中的第k个,则若 f[i]>=x-k && a[i]>ans[k-1] 即可。f[i]表示以a[i]开头的最长上升子序列长度。但这个东西难以统计。so 我们将原序列反序,求f[i] 表示以 a[i]为...
阅读全文
posted @ 2014-11-22 20:18
AutSky_JadeK
阅读(232)
推荐(0)
摘要:
本意是求最小瓶颈生成树,但是我们可以证明:最小生成树也是最小瓶颈生成树(其实我不会)。数据范围很小,暴力kruscal即可。 1 #include 2 #include 3 using namespace std; 4 struct Edge{int u,v,w;void Read(){scanf(...
阅读全文
posted @ 2014-11-22 17:11
AutSky_JadeK
阅读(291)
推荐(0)
摘要:
f[i][j]表示第i首歌音量为j是否可能。若是将状态之间建边,那么答案就是max(j){f[i][j]==true&&0 2 using namespace std; 3 int n,vis[51][1001],w[51],limit,sta; 4 void dfs(int cur,int now...
阅读全文
posted @ 2014-11-22 16:50
AutSky_JadeK
阅读(202)
推荐(0)
摘要:
小vijos P1447 Updown背景开启了升降梯的动力之后,探险队员们进入了升降梯运行的那条竖直的隧道,映入眼帘的是一条直通塔顶的轨道、一辆停在轨道底部的电梯、和电梯内一杆控制电梯升降的巨大手柄。faebdc 之塔一共有 N 层,升降梯在每层都有一个停靠点。手柄有 M 个控制槽,第 i个控制槽...
阅读全文
posted @ 2014-11-22 13:58
AutSky_JadeK
阅读(247)
推荐(0)
摘要:
暴力dp是n^2*m的……我们计算每棵树在每层的答案的时候,都需要计算出从那棵树转移过来最优。但是我们发现,对一棵树而言,从上面转移过来都是一样的,所以我们可以在计算每棵树在每层的答案的时候,先预处理出它应该从上面何处转移过来,消掉一个n。 1 #include 2 #include 3 using...
阅读全文
posted @ 2014-11-22 11:41
AutSky_JadeK
阅读(202)
推荐(0)
摘要:
若打了一只鼹鼠后,还能打另一只,我们可以在它们之间连权值为1的边。于是答案就是 以m为终点的最长路长度+1。建反图,就是单源最长路。MLE TLE 一时爽。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 ve...
阅读全文
posted @ 2014-11-22 10:05
AutSky_JadeK
阅读(366)
推荐(0)
摘要:
对n个位置,每个位置维护一个vector。每次插入,可能对MIN_SORT_GAP产生的影响,只可能是 插入元素 和 它的 前驱 后继 造成的,用一个set维护(存储所有序列中的元素)。我们还得维护一个multiset(存储相邻元素的差值),可能对MIN_GAP产生影响,只可能是它在序列中的前一个元...
阅读全文
posted @ 2014-11-21 21:57
AutSky_JadeK
阅读(193)
推荐(0)
摘要:
权值分块……rank3……没什么好说的。 1 #include 2 #include 3 #include 4 using namespace std; 5 int n,sz,sum,x,y,l[501],r[501],Min,Max,sumv[501],num[250001],m,v[2...
阅读全文
posted @ 2014-11-21 18:57
AutSky_JadeK
阅读(189)
推荐(0)
摘要:
论NOIP级别的n²算法…… 跟分块比起来,理论上十万的数据只慢4、5倍左右的样子…… 1 #include 2 #include 3 using namespace std; 4 struct Point{int v,p;}t[20001]; 5 bool operator =Ask[i].k)4...
阅读全文
posted @ 2014-11-20 15:28
AutSky_JadeK
阅读(169)
推荐(0)
摘要:
不多说。比pb_ds还是要快不少的。 1 #include 2 #include 3 #include 4 using namespace std; 5 #define N 80001 6 int sum,sz,num[N],l[295],r[295],a[N],op[N],en,ma[N],ans...
阅读全文
posted @ 2014-11-19 15:50
AutSky_JadeK
阅读(155)
推荐(0)
摘要:
权值分块就是快……Rank5…… 1 #include 2 #include 3 #include 4 using namespace std; 5 #define N 38001 6 #define INF 2147483647 7 #define min(a,b) (((a)'9';c=getc...
阅读全文
posted @ 2014-11-19 13:41
AutSky_JadeK
阅读(171)
推荐(0)
摘要:
权值分块,离散化非常蛋疼,只能离散化搞……需要支持操作:删除 2 #include 3 #include 4 #include 5 using namespace std; 6 #define N 201001 7 struct Point{int v,p;}tmp[N]; 8 boo...
阅读全文
posted @ 2014-11-19 09:52
AutSky_JadeK
阅读(164)
推荐(0)
摘要:
pb_ds 裸题,写写权值分块试试能不能过……觉得够呛。P.S.cin读入大量数据会RE。 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 using namespace __gnu_cx...
阅读全文
posted @ 2014-11-18 09:57
AutSky_JadeK
阅读(229)
推荐(0)
摘要:
离散化,分块。预处理出:ans[i][j] 第i块到第j块的逆序对数。f[i][j] 第1~i块中大于j的数的个数。g[i][j] 第1~j块中小于j的数的个数。每次询问时对于整块部分可以O(1)获得。对于零散部分呢?>在一列数的后面添加一个数,逆序对数会增加 数列中比它大的数的个数。>在一列数的前...
阅读全文
posted @ 2014-11-16 17:16
AutSky_JadeK
阅读(378)
推荐(0)
摘要:
权值分块,虽然渐进复杂度不忍直视,但其极小的常数使得实际运行起来比平衡树快,大多数情况和递归版权值线段树差不多,有时甚至更快。但是被zkw线段树完虐。 1 #include 2 #include 3 #include 4 using namespace std; 5 #define N 100000...
阅读全文
posted @ 2014-11-14 16:39
AutSky_JadeK
阅读(229)
推荐(0)
摘要:
权值分块和权值线段树的思想一致,离散化之后可以代替平衡树的部分功能。部分操作的时间复杂度:插入删除全局排名全局K大前驱后继全局最值按值域删除元素O(1)O(1)O(sqrt(n))O(sqrt(n))O(sqrt(n))O(sqrt(n))O(sqrt(n))O(sqrt(n))(懒标记)当然,因为...
阅读全文
posted @ 2014-11-14 16:07
AutSky_JadeK
阅读(254)
推荐(0)
摘要:
There are three girls and fifteen boys who are having a meeting at a round rable.You need to put them at proper place to make sure that "there are l...
阅读全文
posted @ 2014-11-14 14:33
AutSky_JadeK
阅读(153)
推荐(0)
摘要:
Part 1、块状链表。定位插入删除数组O(1)O(n)O(n)链表O(n)O(1)O(1)对于线性表的以上常见操作来说,数组和链表都无法有效地解决。但是,若我们将链表的每个节点存成一个数组,使得链表里每个节点的数据拼接起来就是原先的线性表中的内容(即块状链表),并且数组的大小合适的话,以上的操作都...
阅读全文
posted @ 2014-11-14 06:54
AutSky_JadeK
阅读(1901)
推荐(0)
摘要:
存反图,从终点dfs一遍,记录下无法到达的点。然后枚举这些记录的点,把他们的出边所连的点也全部记录。以上这些点都是无法在最短路中出现的。所以把两个端点都没被记录的边加进图里,跑spfa、BFS什么的随意。 1 #include 2 #include 3 #include 4 #include 5 u...
阅读全文
posted @ 2014-11-11 15:57
AutSky_JadeK
阅读(325)
推荐(0)
摘要:
暴力枚举。 1 #include 2 #include 3 using namespace std; 4 int a[130][130],d,n,x,y,z,num,ans=-2147483647; 5 int main() 6 { 7 scanf("%d%d",&d,&n); 8 ...
阅读全文
posted @ 2014-11-11 15:53
AutSky_JadeK
阅读(774)
推荐(0)
摘要:
不难发现,树中与某个点距离为2的点只可能是它的父亲的父亲、儿子的儿子 或者 兄弟,分类讨论一下即可。只有对于兄弟我们不能暴力搞,维护一下每个节点的所有儿子的前缀和、前缀MAX就行了。 1 #include 2 #include 3 #include 4 using namespace std; 5 ...
阅读全文
posted @ 2014-11-11 10:46
AutSky_JadeK
阅读(381)
推荐(0)
摘要:
把所有情况打表,然后随便暴力。 1 #include 2 using namespace std; 3 int n,an,bn,p1,p2; 4 int a[10001],b[10001]; 5 bool f[6][6]; 6 int ans1,ans2; 7 void init() 8 { 9 ...
阅读全文
posted @ 2014-11-11 10:43
AutSky_JadeK
阅读(385)
推荐(0)
摘要:
裸的最大匹配。 1 #include 2 #include 3 #include 4 using namespace std; 5 vectorG[2002]; 6 typedef vector::iterator ITER; 7 int n,m,mat[2002],x,y; 8 bool vis[...
阅读全文
posted @ 2014-11-06 15:29
AutSky_JadeK
阅读(167)
推荐(0)
摘要:
在线块状树LCA模板。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 #define N 30001 7 vectorG[N]; 8 typedef vector::iterator ITER; 9 int ...
阅读全文
posted @ 2014-11-06 12:29
AutSky_JadeK
阅读(199)
推荐(0)
摘要:
拓扑排序模板。 1 #include 2 #include 3 #include 4 using namespace std; 5 #define N 10001 6 vectorG[N]; 7 stackS; 8 int n,m,x,y,ru[N],tot; 9 int main()10 {11 ...
阅读全文
posted @ 2014-11-06 11:26
AutSky_JadeK
阅读(246)
推荐(0)
摘要:
两次dfs缩点,然后n次dfs暴搜。 1 #include 2 #include 3 #include 4 using namespace std; 5 #define N 2001 6 vectorG[N],rG[N],vs,G2[N]; 7 typedef vector::iterator IT...
阅读全文
posted @ 2014-11-06 10:38
AutSky_JadeK
阅读(203)
推荐(0)