BZOJ刷题记录
文章平均质量分 53
yearwhk
一个沙茶的OIer...
展开
-
BZOJ 1965 快速幂 + 拓展欧几里得
题目链接: http://www.lydsy.com/JudgeOnline/problem.php?id=1965AHOI2005 Day1是一道找规律题… 不难发现初始为x的牌在经过m轮洗牌之后的位置为x*(2^k) % (n+1)。然后就是一个二元线性不定方程,拓欧解之即可。方程为: (2^k)%(n+1)*x + (n+1)*y = L// BZOJ 1965#inc原创 2015-12-10 20:37:56 · 477 阅读 · 0 评论 -
BZOJ 1030 - AC自动机 + DP
1009那题仍然记忆犹新…… 首先说一下1009的拓展:如果有多个串,则需要建立AC自动机,状态也需要改成:设f[i][j]f[i][j]为考虑到长度为ii的字符串,匹配到AC自动机的jj号节点的方案数,同样地道理构造出矩阵即可,只不过这里f[i][j]f[i][j]为0的条件变为j号节点是单词节点。 然后看这道题,它的要求是相反的:给定一堆字符串,统计长度为m的至少包含一个给定字符串的文本串的长原创 2016-01-05 19:41:05 · 276 阅读 · 0 评论 -
BZOJ 2705 - 经典问题 欧拉函数
题意:求∑ni=1gcd(i,n)\sum_{i=1}^{n}gcd(i,n) 首先,gcd(i,n)gcd(i,n)肯定是nn的约数。所以我们可以考虑枚举每个nn的约数dd,然后看有多少个gcd(i,n)=dgcd(i,n)=d。这个式子又可以化成gcd(i/d,n/d)=1gcd(i/d, n/d)=1。而它,就相当于ϕ(n/d)\phi(n/d)。所以,答案就是∑d|nϕ(n/d)\sum_原创 2016-01-06 00:12:28 · 750 阅读 · 0 评论 -
BZOJ 3875 - SPFA处理带环的DP
本题的DP思路很好想:设f[i]f[i]为第ii个怪兽被消灭所需要的最小代价,那么,f[i]=min{spl[i],ori[i]+∑j∈App[i]f[j]}f[i]=min\{spl[i], ori[i]+\sum_{j∈App[i]}{f[j]}\}然而,由于f[j]f[j]有可能也要依赖f[i]f[i],所以这个DP会带环。啊,那该怎么办呢?遇到这类问题,我们常常用SPFA来处理。怎么处理呢原创 2016-01-06 22:20:30 · 797 阅读 · 0 评论 -
BZOJ 2440 - 容斥原理 + 莫比乌斯函数的应用
找规律题?(雾。。题目要求的是第k个无平方因子数。。原创 2015-12-16 21:20:46 · 1259 阅读 · 0 评论 -
BZOJ 1415 - 利用定义计算期望 + DP
本题是我第一道A掉的NOI题~ 啪啪啪。。参考了tky的论文,他的题解很详尽易懂,下面对这个经典题目的经典解法作个推导和总结。第一个拦路虎是如何求出鼠和猫的位置为(a,b)时猫的下一步行动。我们设p[a][b]为猫位于a,鼠位于b时猫下一步走到的节点。由于这个图没有边权,所以这个p是可以通过n次BFS预处理出来的(这个BFS的细节需要特别注意,详见代码)。然后我们考虑枚举所有情况来计算原创 2015-12-23 00:33:54 · 609 阅读 · 0 评论 -
BZOJ 1015 - 变删点为加点 + 并查集维护
题意:给出一张无向图,每次删去其中一个点,每删一次就输出当前连通块的数量。 首先要明确一点:删去一个点,同时也删去了和这个点有关联的边集。但无论如何,删点并不好搞,所以我们可以考虑倒着来,加点,用并查集维护。具体来说,每次加上一个点xx,如果一个点是被第一次删去的(一个点可能被删去多次)(然而数据中并没有这种情况),那么就将连通块数加1;否则不考虑。然后依次添上它的每一条相邻边,并查集维护之即可。原创 2016-01-07 18:45:03 · 760 阅读 · 0 评论 -
BZOJ 1968 - 枚举约数
枚举1..n的每个数x,加上它对答案的贡献n/x即可。// BZOJ 1968#includeusing namespace std; int n, ans; int main(){ scanf("%d", &n); for(int i=1; i<=n; i++) ans+=n/i; printf("%d\n", ans); return 0;原创 2016-01-07 23:32:57 · 734 阅读 · 0 评论 -
BZOJ 2561 - 最小生成树 + 最小割
本题需要用一点M(in & ax)ST的性质。。以MinestST(这英语也是十级水平。。)为例。。假设加入边(u, v),边权为L。然后我们把所有边权小于L的边都取出来单独看。这些边不能连通u, v,否则(u,v)边绝无可能在MST中——因为在加入它之后形成的这个环中,如果去掉它,显然是最优的。所以以u、v为s、t,每条边权小于L的边容量置为1、跑一遍无向图最小割即可。。Maxest原创 2015-12-16 00:04:02 · 385 阅读 · 0 评论 -
BZOJ 1053 - 反素数(搜索)
一个写过的题还搞了半个多小时。。羞耻MAX。。求反素数的核心思想是“用大的(质数)不如用小的”。一个数的约数个数等于其各质因子的次数加1后的乘积,因此可以从小到大考虑每个质数,枚举其次数,DFS之即可。具体细节详见代码。// BZOJ 1053#include #include #include using namespace std; typedef long long L原创 2015-12-24 19:40:42 · 329 阅读 · 0 评论 -
BZOJ 1010 - 斜率优化
比较裸的DP+斜率优化啦…… 让窝又想到了BZOJ上A的第一道有意义的题1597…… 作为第27个A的题也让我颇有感触…… 设前ii个玩具放置到jj个盒子里所需的最小费用为f[i][j]f[i][j]。由于连续的玩具必须放到一个容器里,所以我们有:f[i][j]=f[k][j−1]+cost[k+1][i]f[i][j]=f[k][j-1]+cost[k+1][i]其中k为我们枚举的上一个容器的末原创 2016-01-07 23:14:10 · 461 阅读 · 0 评论 -
BZOJ 1588 - 二叉搜索树
本题是Treap/Splay的模板题了… 也可以用set或者双向链表实现。 (其实这题是在NOIP2012 Day1 T3的一部分啊。。 由于我懒,所以只码了Treap。还有很多模板题,先把这几种数据结构刷熟再说。 平衡树上找一个元素的前缀/后缀只要脑补一下,左左右右地走一走就行了。 第一次码,出现了不少问题,也从各种千奇百怪的模板中学到了不少。详见代码注释。// BZOJ 1588#inc原创 2016-01-10 00:37:59 · 748 阅读 · 0 评论 -
BZOJ 2301 - 莫比乌斯反演 + 前缀和 + 分块计算
题意:对于给出的nn个询问,每次求有多少个数对(x,y)(x,y),满足a≤x≤b,c≤y≤da \le x≤b,c≤y≤d,且gcd(x,y)=k(x,y) = k。 首先用容斥原理将一个询问拆成4个。然后,一种可行的转化是求一种可行的转化是先令k=1k=1,即求1≤floor(x/k)≤n1 ≤ floor(x/k) ≤ n 且 1≤floor(y/k)≤m1 ≤ floor(y/k) ≤ m原创 2016-01-05 19:24:31 · 396 阅读 · 0 评论 -
BZOJ 1257 - 数学题 乱搞
先看一个乱搞的题解(但是很有启发性...):首先是一个有趣的发现:当 i 增长很小时,k/i 值是不变的!比如,在 i∈[l, r]的时候,商不变,那么在这个区间内,k modi 的值将是一个公差为1的等差数列!所以,我们枚举商,统计答案就行了!好吧。。我们来一个严谨一点的方法。。题目要求的是 ans = Σ(k mod i) = Σ(k-k div i * i) = n*原创 2015-12-29 22:10:58 · 379 阅读 · 0 评论 -
BZOJ 1266 - 最短路 + 最小割
裸题。。第一问最短路,第二问最小割。。先求一发最短路树,然后建图,容量均为1,然后Dinic最大流即可。。原创 2015-12-17 19:57:46 · 298 阅读 · 0 评论 -
BZOJ 1597 斜率优化
题目链接: http://www.lydsy.com/JudgeOnline/problem.php?id=1597 作为一个非权限狗,我抱着侥幸心理在BZOJ上搜了一发USACO,结果发现了这道题。。然后想出了一个DP,然而超时。。然后就百度一下,于是被安利了一个DP的经典优化技巧——斜率优化 完整题解如下:① 注意到有一些土地是可以被其他土地无代价地“带掉”的。原创 2015-12-10 20:46:27 · 486 阅读 · 0 评论 -
BZOJ 2190 - 欧拉函数的应用(数据范围不同 -> 做法不同 -> 启示)
用欧拉函数解决问题满足(x, y)=1 (x<=n, y<=n) 的数对的个数UVa 10214数据范围不同 -> 做法不同 -> 启示原创 2015-12-28 23:12:05 · 396 阅读 · 0 评论 -
BZOJ 1264 动态规划 + 树状数组
“很难想的一道题不过不难写”—— Po姐 这道题窝的思考过程十分坎坷。 首先想着纯DP,类似于NOIP Day2T2的方法搞。 设f[i][j]为强制将A[i]与B串中第j个相同字符匹配的LCS,s[i][j]为考虑到A[i]与B串中第j个相同字符匹配(且强制不允许选这个字符之后)的LCS。 从这个状态设计就可以看得原创 2015-12-14 19:22:11 · 385 阅读 · 0 评论 -
BZOJ 1002 - 奇妙的题目 + 高精度
这道题有很多奇妙的方法可以搞。。最科学的当然是基尔霍夫矩阵(按照传统,“我也不知道是什么东西”),详见VFK教主的博客;还有乱七八糟的找规律,网上遍地都是。。我就把这题当作高精度练习题了。。原创 2015-12-29 00:10:35 · 470 阅读 · 0 评论 -
BZOJ 1406 - 伪数论
本来以为用一些奇妙的枚举顺序可以直接卡过去,然后弃疗。。由题意可得 x^2 = 1 (mod n) ==> x^2 = k*n+1 ==> (x+1)(x-1) = k*n ==> n | (x+1)(x-1)然后枚举n的约数。设n=a*b (aa),再判断它+2是否能被a整除。反过来再判断一次。如果(x+1)和(x-1)分别获得a、b中的因子,那么一定也会被其他情况枚举到,即做到了不原创 2015-12-14 20:07:39 · 678 阅读 · 0 评论 -
BZOJ 1954 (POJ 3764) Trie的经典应用 求树上最大异或值
题目链接: http://www.lydsy.com/JudgeOnline/problem.php?id=1954 (然而这是权限题…… 所以还是看POJ 3764吧)感谢黄学长。。涨姿势了。。树上路径问题,xor运算满足分配率交换律,先求出每个节点到根节点的路径权值,这样就转化为从一堆值中选出两个xor起来最大的。于是把这一堆值(不足30位的补到30位)一一插入一颗Trie原创 2015-12-10 20:55:39 · 402 阅读 · 0 评论 -
BZOJ 1003 - 最短路 + DP
从这篇开始换字体。。数据范围很小。。直接暴力DP之即可。。感觉跟之前做的1597的DP很像,都是基于连续区间的DP,应该也可以用斜率优化。。还感觉跟某次CodeVS模拟赛的题的一道变态题(多面体原谅我。。)很像。。只不过那道题最后是二分图匹配。。题解详见代码注释。。我只想吐槽。。窝一遇到什么n m d k p都出来的题,就很容易打错变量名(又因为这WA了三四次!。。这回我一开始就写原创 2015-12-29 22:10:32 · 334 阅读 · 0 评论 -
BZOJ 1045 (UVa 11300) 数学分析 + 结论
这道题在白书上题解相当详细了。。作个总结。。令传递是单向的。。(传递的糖果数量可正可负)然后列出了n-1个方程。。然后一些奇怪的方程加减消元。。转化成了单变量的极值问题。。是这样的。。令Ci=Ai-M(M为最终每个人手中的糖果数量,Ai为初始糖果数量)于是ans=|x1| + |x1-C1| + |x1-C2| ... + |x1-C(n-1)|注意它的几何意义。。在数原创 2015-12-16 21:15:12 · 309 阅读 · 0 评论 -
BZOJ 1001 (UVa1376, LA3661 ) - 平面图最大流(对偶图 -> 最短路)
直接套Dinic妥妥地TLE。。怎么办呢。。这是一个平面图。。有一些很好玩的性质。。利用这些性质,我们可以做一些奇妙的转化,把流量转化为边的长度,然后跑一遍最短路即可。。这个转化,就是对偶图。。理论依据详见2008年国家集训队周冬的论文《两极相通——浅析最大—最小定理在信息学竞赛中的应用》、原创 2015-12-17 19:16:27 · 452 阅读 · 0 评论 -
BZOJ 4352 预处理 + DP
题目链接 : http://www.lydsy.com/JudgeOnline/problem.php?id=4352一道SB题。。先把所有积木的长度从小到大排序。设前i块积木的摆放方案为f[i]。先考虑第i块摆在最下面的情况。显然合法,且方案数为f[i-1]。然后对于前i-1块的每一种摆放方案,都可以把第i块摆在s[i]块之上,其中s[i]为可以被第i块摆在上面的积木块数,可以O(n原创 2015-12-10 21:17:28 · 1063 阅读 · 0 评论 -
BZOJ 1787 裸LCA
一个求树上LCA的裸题。。WC(伪。。)里想出来的。。题目大意:给出树上的三个点,要求确定一个集合点,使得这三个点到集合点的路径权值和最小。所有边权均为1。先考虑两个点A、B的情形。。显然这两个点间路径上的任何一点都可以作为集合点。。然后再加入第三个点C。。画个图不难证明此时最优集合点应是LCA(A, B)。但是A、B、C分别是哪些点呢?。。枚举取最优解。。但看了黄学长博客原创 2015-12-16 21:22:45 · 745 阅读 · 0 评论 -
BZOJ 1036 - 树链剖分 模板题
今天终于入手了期盼已久的Macbook Pro,十分高兴。。然而这道题对着黄学长的代码码的,还是打错了一个变量名,查了半个小时,羞耻MAX。。第一次A了之后遵循了VFK的神谕和bkq的忠告,按照自己的理解重新码了一遍,感觉效果好了很多。。这种方法对之后的学习仍然适用~// BZOJ 1036// Tree Chain Spilt#include #include #inc原创 2015-12-27 00:07:57 · 470 阅读 · 0 评论