01 2016 档案
摘要:答案一定是在凸壳上的(y>0上凸壳, y<0下凸壳). 线段树维护, 至多N次询问, 每次询问影响O(logN)数量级的线段树结点, 每个结点O(logN)暴力建凸壳, 然后O(logN)三分(二分也是可以的, 不过三分好写, 而且没精度问题....), O(Nlog^2N), 可以AC。-----
阅读全文
摘要:费用流模板题..限制一下不同愤怒值的工作数就可以了。---------------------------------------------------------------------------------------------#include<queue>#include<cstdio>
阅读全文
摘要:BIT+(可持久化)权值线段树, 用到了BIT的差分技巧. 时间复杂度O(Nlog^2(N))-----------------------------------------------------------------------------------------#include#inclu...
阅读全文
摘要:状压dp, 然后转移都是一样的, 矩阵乘法+快速幂就行啦. O(logN*2^(3m))---------------------------------------------------------------------------------------------#include#incl...
阅读全文
摘要:求出后缀数组后, 对height排序, 从大到小来处理(r相似必定是0~r-1相似), 并查集维护. 复杂度O(NlogN + Nalpha(N))----------------------------------------------------------------------------...
阅读全文
摘要:dp(i) = max(dp(i-1), x[j]*a[i]+y[j]*b[i]), 0#include#include#include#includeusing namespace std;#define K(a, b) ((a.y - b.y) / (a.x - b.x))const int m...
阅读全文
摘要:先拓扑排序搞出合法的, 然后就是最大权闭合图模型了....---------------------------------------------------------------------#include#include#includeusing namespace std;#define...
阅读全文
摘要:排序搞掉一维, 然后就用LCT维护加边MST. O(NlogN)--------------------------------------------------------------------------------------#include#include#include#include...
阅读全文
摘要:建AC自动机后, dp(x, y, s)表示当前长度为x, 在结点y, 包括的串的状态为s的方案数, 转移就在自动机上走就行了. 对于输出方案, 必定是由给出的串组成(因为#include#include#includeusing namespace std;typedef long long ll...
阅读全文
摘要:floyd...求最短路时顺便求出路径数. 时间复杂度O(N^3)-------------------------------------------------------------------------------------------#include#include#includeus...
阅读全文
摘要:倒着做菜..然后考虑为当前的人做菜对后面的人的影响就可以了..要动态加边----------------------------------------------------------------------------------#include#include#include#include...
阅读全文
摘要:CF原题(http://codeforces.com/blog/entry/4849, 204E), CF的解法是O(Nlog^2N)的..记某个字符串以第i位开头的字符串对答案的贡献f(i), 那么f(i-1)>=f(i)-1, 然后就是O(NlogN)了, 但是速度垫底了....被后缀自动机完爆...
阅读全文
摘要:N^0.5以内的质数只有8个, dp(i, j, k)表示用了前i个大质数(>N^0.5), 2人选的质数(#include#includeusing namespace std;typedef long long ll;#define b(x) (1 = P) x -= P;}inline boo...
阅读全文
摘要:离线, 然后按时间分治, 每个向量都有出现时间[l, r], 直接插入时间线段树(一个向量只会影响O(logN)数量级的线段树节点). 在线段树每个节点弄出凸壳然后二分. 时间复杂度O(Nlog^2N)-------------------------------------------------...
阅读全文
摘要:离线然后倒着做就变成了支持加点的动态凸包...用平衡树维护上凸壳...时间复杂度O(NlogN)-----------------------------------------------------------------------#include#include#include#includ...
阅读全文
摘要:求出后缀数组, 然后二分答案, 对height数组分组检验答案. 时间复杂度O(|S| log|S|)--------------------------------------------------------------------------------#include#include#in...
阅读全文
摘要:对不等式变形..然后就是维护一些数, 随便找个数据结构都能写吧....用double感觉会有精度误差, 分类讨论把#include#include#includeusing namespace std;typedef long long ll;const int maxn = 100009;int ...
阅读全文
摘要:二分查找求出k大串, 然后正反做后缀数组, RMQ求LCP, 时间复杂度O(NlogN+logN)---------------------------------------------------------------------#include#include#include#include...
阅读全文
摘要:昨晚写的题...补发一下题解...把1~N每个点拆成xi, yi 2个. 预处理i->j经过编号不超过max(i,j)的最短路(floyd)S->0(K, 0), S->xi(1, 0)(从i点继续走), 0->yi(1, distance(0->i))(从0出发), xi->yi(1, dista...
阅读全文
摘要:树链剖分完就成了一道主席树裸题了, 每次树链剖分找出相应区间然后用BIT+(可持久化)权值线段树就可以完成计数. 但是空间问题很严重....在修改时不必要的就不要新建, 直接修改原来的..详见代码. 时间复杂度O(N*log^3(N))--------------------------------...
阅读全文
摘要:dp(i, j, k)表示考虑了前i行, 放了0个炮的有j列, 放了1个炮的有k列. 时间复杂度O(NM^2)--------------------------------------------------------------------------#include#include#incl...
阅读全文
摘要:其实合法方案一定存在....(B #include#includeusing namespace std;const int maxn = 1009;int N, B, Id[maxn], V[maxn], n;int stk[maxn], Top;struct edge { int to; edg...
阅读全文
摘要:因为单词很短...用trie然后每次dp暴力查找...用哈希+dp应该也是可以的....---------------------------------------------------------------------------#include#include#include#includ...
阅读全文
摘要:dp(i, j, a, b)表示选了i个男生, j个女生, 后缀中男生比女生多a(最多), 女生比男生多b(最多).dp(i+1, j, a+1, max(0, b-1)) += dp(i, j, a, b)dp(i, j+1, max(0, a-1), b+1) += dp(i, j, a, b)...
阅读全文
摘要:LCA模板题...不难发现一定是在某2个人的LCA处集合是最优的, 然后就3个LCA取个最小值就OK了. 距离就用深度去减一减就可以了. 时间复杂度O(N+MlogN) (树链剖分)-----------------------------------------------------------...
阅读全文
摘要:裸的带修改主席树.. 之前用BIT套Splay(http://www.cnblogs.com/JSZX11556/p/4625552.html)A过..但是还是线段树好写...而且快(常数比平衡树小). 时空复杂度是O(Nlog(N)+Mlog^2(N))----------------------...
阅读全文
摘要:dp(i, j)表示从i~N中为j个人选定的方案数, 状态转移就考虑选多少人为i编号, 然后从i+1的方案数算过来就可以了. 时间复杂度O(TN^2)---------------------------------------------------------------------#inclu...
阅读全文
摘要:枚举答案, 然后O(N^2)枚举野人去判他们是否会在有生之年存在同山洞. 具体做法就是: 设第x年相遇, 则 Ci+x*Pi=Cj+x*Pj (mod M), 然后解同余方程. 复杂度应该是O(ans*N^2log(ans)), 但是实际远小于....能够AC--------------------...
阅读全文
摘要:拆点, 能够消的连边, 然后跑费用流就OK了.----------------------------------------------------------------------------------------#include#include#include#include#includ...
阅读全文
摘要:dp(i, j, k)表示考虑了前i种钱币(从小到大), Alice的钱数为j, Bob的钱数为k, 最小次数. 脑补一下可以发现, 只有A->B.C, B->A.C, C->A.B, A.B->C, A.C->B, B.C->A 6情况, 枚举然后dp一下就OK了. dp用刷表的话,有个强有力的剪...
阅读全文
摘要:题目的距离为max(|x1-x2|, |y1-y2|) (切比雪夫距离). 切比雪夫距离(x, y)->曼哈顿距离((x+y)/2, (x-y)/2) (曼哈顿(x, y)->切比雪夫(x+y, x-y)). 转成Manhattan distance后排序前缀和维护即可.--------------...
阅读全文
摘要:和POI某道题是一样的... http://www.cnblogs.com/JSZX11556/p/4686674.html只需要二维差分一下就行了. 时间复杂度O(MAXN + N^1.5)------------------------------------------------------...
阅读全文
摘要:一个串a在b中出现, 那么a是b的某些前缀的后缀, 所以搞出AC自动机, 按fail反向建树, 然后查询(x, y)就是y的子树中有多少是x的前缀. 离线, 对AC自动机DFS一遍, 用dfs序+树状数组维护, DFS到的查询点就回答询问.时间复杂度O(|ACAM|+QlogQ)----------...
阅读全文
摘要:矩阵乘法裸题..差分一下然后用矩阵乘法+快速幂就可以了.---------------------------------------------------------------------------------#include#include#includeusing namespace s...
阅读全文
摘要:每个点都在某个环中, 出度都为1, 只要让入度也全为1就可以满足题意了. 然后就是裸的最小费用最大流了.----------------------------------------------------------------------------#include#include#inclu...
阅读全文
摘要:一个简单的贪心, 我们只要考虑2个消防局设立的距离为5时是最好的, 因为利用最充分. 就dfs一遍, 再对根处理一下就可以了. 这道题应该是SGU某道题的简化版...这道题距离只有2, 树型dp应该也是可以的----------------------------------------------...
阅读全文
摘要:在1, 11, 111……中选#include#includeusing namespace std;typedef long long ll;const int maxn = 509;const int maxm = 1000;const int MOD = 999911659;const int...
阅读全文
摘要:先cdq分治, 然后要处理点对答案的贡献, 可以以询问点为中心分成4个区域, 然后去掉绝对值(4种情况讨论), 用BIT维护就行了.--------------------------------------------------------------#include#include#inclu...
阅读全文
摘要:通过一次dfs求出dp(x)表示节点x考虑了x和x的子树都没成功充电的概率, dp(x) = (1-p[x])π(1 - (1-dp[son])*P(edge(x, son))。然后再dfs一次考虑节点x子树以外对节点x的贡献, 通过x的father算一算就可以了.O(N)-------------...
阅读全文
摘要:虽然vfleaking好像想卡DFS...但我还是用DFS过了...路径上的石堆异或和=0就是必败, 否则就是必胜(nim游戏).这样就变成一个经典问题了, 用DFS序+BIT+LCA就可以在O((N+Q)logN)时间内AC-------------------------------------...
阅读全文