随笔分类 -  BZOJ

摘要:例题传送门 听YZ哥哥说Splay是一种很神奇的数据结构,所以学习了一下它的最基本操作。O(1)的Spaly。 伸展树(Splay Tree),也叫分裂树,是一种二叉排序树,它能在O(logn)内完成插入、查找和删除操作。它由丹尼尔·斯立特Daniel Sleator和罗伯特·恩卓·塔扬Robert 阅读全文
posted @ 2018-03-09 08:40 Cptraser 阅读(233) 评论(0) 推荐(0)
摘要:题目传送门 看题目可知这是一道差分约束的题目。 根据每种关系建边如下: 对于每种情况建边,然后跑一边SPFA。(最长路) 因为可能会有自环或环的情况,都不可能存在。 跑SPFA时记录入队次数,超过N弹出。 SPFA的dist起始值为1,ans=∑dist[i] 对于每个点做一遍SPFA会超时,所以将 阅读全文
posted @ 2018-03-08 11:06 Cptraser 阅读(188) 评论(0) 推荐(0)
摘要:题目传送门 平衡二叉树(Balanced Binary Tree)具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。平衡二叉树的常用实现方法有红黑树、AVL、替罪羊树、Treap、伸展树等。 最小二叉平衡树的节点的公式如下 F(n)=F(n-1 阅读全文
posted @ 2018-03-07 20:34 Cptraser 阅读(198) 评论(0) 推荐(0)
摘要:题目传送门 这道题用Tarjan求出点-双连通分量,对联通块做一些玄学操作。 细节很多,不说了看code。 code: 阅读全文
posted @ 2018-03-06 17:44 Cptraser 阅读(185) 评论(0) 推荐(0)
摘要:题目传送门 二维树状数组,对于每个颜色开一个树状数组,用容斥求解。 code: 阅读全文
posted @ 2018-03-05 19:54 Cptraser 阅读(124) 评论(0) 推荐(0)
摘要:题目传送门 这道题苟了我好久,因为链表的内存问题,之后再细讲。 首先这是一道Tarjan+DAG上DP的题目。 有三种门,对于每种门可以和其他门相连。即连边。 使用链表快速查询连边。 建完图后可以进行Tarjan缩点。 然后做一遍DAG上DP就好了。(记搜) 然后因为建图时会有很多条边,而行列最多只 阅读全文
posted @ 2018-03-01 15:26 Cptraser 阅读(197) 评论(0) 推荐(0)
摘要:题目传送门 经过长时间的旅行,很长时间没写过博客了,这次把上次WA的题目过了。 由于每次蜥蜴从石柱上跳下时,石柱的高度会-1,可以看做占了一格的流量。 建图: 1.建超级源和超级汇,设超级源连到每只蜥蜴的边容量为1,每个可以跳到外面的点连到超级汇的边的容量为maxlongint。 2.对于每个点建一 阅读全文
posted @ 2018-02-26 16:08 Cptraser 阅读(141) 评论(0) 推荐(0)
摘要:题目传送门 二分图匹配的题目。 但建边有一定难度,关系比较复杂。 首先要统计总共需要几张床。 在校且住校的会需要一张床,不住校的需要一张床。 然后对于在校且住校的与自己的床连边,不住校的与认识的住校的人连一条边。 跑一遍匈牙利就好了。 code: 阅读全文
posted @ 2018-02-13 14:23 Cptraser 阅读(166) 评论(0) 推荐(0)
摘要:题目传送门 刚开始是看到这道题目还以为是序列连续的。 当然了,序列可以不连续。 设f[i]表示到第i位时的序列的最长长度。 取cnt=Max f[j]+1,然后转移回去使f[j]=cnt。 这是为了让下次转移时能最优。 可以对读入数组进行滚动。 code: 阅读全文
posted @ 2018-02-12 08:38 Cptraser 阅读(150) 评论(0) 推荐(0)
摘要:题目传送门 看数据范围,N<=20! 你没看错,搜索都能过。 O(N^2)的做法,就是先求出有几对点之间的距离为圆周长的一半。 然后求C(N,2)即可。 code: 阅读全文
posted @ 2018-02-11 15:03 Cptraser 阅读(147) 评论(0) 推荐(0)
摘要:题目传送门 第一次看题目感觉毫无还手之力,一看M的范围≤15,果断状压。 但是状压的想法比较新奇。 先想到的状压是设f[i][j]表示前i个状态为j时的方案总数,但是后来想了一想不行,会超时。 于是以f[i][j]表示i状态匹配到第j位时的方案总数。 但判断转移是会超时,于是预处理串与串之间的关系。 阅读全文
posted @ 2018-01-29 15:43 Cptraser 阅读(118) 评论(0) 推荐(0)
摘要:题目传送门 其实打表找一找规律可以得出: 证明则是设q/p为一条直线的斜率。 p=q时则是求直线上的整点的横纵坐标和,p≠q时则是求直线上下整点的和。 code: 阅读全文
posted @ 2018-01-21 19:14 Cptraser 阅读(126) 评论(0) 推荐(0)
摘要:题目传送门 这道题一开始我还以为是贪心,sort一遍直接取中点然后求最优值。 但写了之后才发现错误,设置的谷仓只要是一段区间的中点即可。这段区间的两端一定是两片谷田。 所以枚举区间的左端点,二分右端点,但问题是如何O(1)判断? 设sumi表示1~i点的和。 L~R区间所需要的费用分成两段来求。 一 阅读全文
posted @ 2018-01-20 14:57 Cptraser 阅读(109) 评论(0) 推荐(0)
摘要:题目传送门 背包的变形,不得不说卡了我很久(估计是下午睡傻了)。 设f[i][j]为前i个物品剩下j个挂钩。 f[i][j]=max(f[i-1][j],f[i-1][max(j-a[i].x,0)+1]); 显然f[i-1][j]表示不挂,而f[i-1][max(j-a[i].x,0)+1]表示挂 阅读全文
posted @ 2018-01-17 16:48 Cptraser 阅读(118) 评论(0) 推荐(0)
摘要:题目传送门 由题意得是最小割问题,又由最大流最小割定理可得只需要求无向图的最大流即可。 建双向边,跑Dinic,EK会超时。 注意在DFS时要加"if(!res)dist[now]=0;"这句话,不然会超时。 这句话因为下次DFSnow这个点时得到的最小流量为0,所以就没必要DFS下去,一个剪枝。 阅读全文
posted @ 2018-01-14 20:21 Cptraser 阅读(159) 评论(0) 推荐(0)
摘要:题目传送门 裸的最小生成树。 code: 阅读全文
posted @ 2018-01-10 15:23 Cptraser 阅读(128) 评论(1) 推荐(0)
摘要:题目传送门 设x[i]表示i+1向i传的糖果数,x[n]表示1向n传的糖果数,a'=(a[1]+...a[N])/N a[1]+x[1]−x[n]=a' a[2]+x[2]−x[1]=a' a[3]+x[3]−x[2]=a' ⋯⋯ a[n−1]+x[n−1]−x[n−2]=a' a[n]+x[n]− 阅读全文
posted @ 2018-01-09 19:24 Cptraser 阅读(124) 评论(1) 推荐(0)
摘要:题目传送门 找规律。 画一个像这样的图: 不同颜色为不同层,因为函数图像可对称,所以只考虑K<=N/2的情况。 最小为min(K,N-K+1)*2。 N=1时特殊考虑,答案为1。 code: 阅读全文
posted @ 2018-01-09 12:56 Cptraser 阅读(85) 评论(1) 推荐(0)
摘要:题目传送门 Map水过(或set也行)。 code: 阅读全文
posted @ 2018-01-07 19:58 Cptraser 阅读(149) 评论(1) 推荐(0)
摘要:题目传送门 BZOJ水题,for i=1~N,答案加上N/i即可 ANS=∑N/i(i∈{1~N}) code: 阅读全文
posted @ 2018-01-07 19:56 Cptraser 阅读(120) 评论(1) 推荐(0)