省选
文章平均质量分 57
wwyx2001
OIer----这条路,仅一人独行
展开
-
[BZOJ3144][HNOI2013]切糕(最小割)
题目:我是超链接题解:这么经典的题目我现在才做? 首先和s,t相连的就是每个格子都要有40个点,起码要在40个点里选择一个(最小割)最小代价 那么这个限制d怎么办呢?相邻的格子如果某一个选择了h,那么另一个选择的范围只能是[h-d,h+d],那么相连上相邻格子的h-d,h+d点,那么必须要选择下一个格子的[h-d,h+d],不然S还是能到T。因为x和y相连,y也会和x相连,...原创 2018-07-09 21:32:09 · 299 阅读 · 0 评论 -
[BZOJ1076][SCOI2008]奖励关(状压dp+期望)
题目:我是超链接题解:看着自己的“概率期望(5)”再看看别人的“概率期望(40)”。。。。。恶补概率期望一波这个东西一看就要状压了,哪些物品抛出过,哪些没有 这一步的期望=(上一步的期望+这一步的收益)*上一步到这一步的概率 然而这都是很基本的知识。 那么用f[i][s]表示第i步状态为s的期望,由于正推没法确定最优解,所以我们选择倒推代码:#include &l...原创 2018-04-13 11:02:08 · 195 阅读 · 0 评论 -
[BZOJ1227][SDOI2009]虔诚的墓主人(树状数组+扫描线)
题目:我是超链接题解:首先离散横纵坐标. 以纵坐标为第一关键字,横坐标为第二关键字排序依次考虑每个点. 对于相邻的两个点a,b; 如果a.y=b.y;设在这一行,a左边算上a有sa棵树,b右边算上b有sb棵树.那么这一行上a,b之间的点都会产生c[sa][k]*c[sb][k]*t的贡献.(c[ ][ ]是组合数).t是a,b之间的点在它们的列上会产生的贡献.即形如(c[...原创 2018-04-13 09:15:54 · 259 阅读 · 0 评论 -
[COGS2287][HZOI2015]疯狂的机器人(NTT+Catalan数)
题目:我是超链接题解:又是上下左右走的问题。。。当初我的Catalan入门就是这玩意那么我们设g[i]表示走i步光走左右不走上下,不会不走,回到原点的方案数 可以发现当i为奇数的时候g[i]=0 考虑i为偶数的情况,肯定是选择i/2步向上走,i/2步向下走,并且时刻保证向上走的步数>=向下走的步数 这不就是Catalan数吗,可以用Ci/2i−Ci/2−1iCii/...原创 2018-04-17 20:25:08 · 177 阅读 · 0 评论 -
[BZOJ1834][ZJOI2010]网络扩容(费用流)
题目:我是超链接题解:第一问:直接跑最大流即可。第二问:扩容的实质是增加一条连接原来两个点的边,并且这条边费用为 W 。将每一条边对应新增的边加入到残量网络中,限制流量为 K 跑最小费用流即可。代码:#include <cstdio>#include <queue>#include <cstring>#include <i...原创 2018-03-29 09:30:54 · 154 阅读 · 0 评论 -
[BZOJ2425][HAOI2010]计数(数位+组合数学)
题目:我是超链接题解:数位dp的思想应该是把下界的都处理好了,然后做紧贴上界的计数我们先把所有有的数字记录下来,删掉零相当于把0移到最前面,所以和其他数字没什么区别 当各个数字个数分别为a0,a1...a9a0,a1...a9a0,a1...a9时,自由排列能产生的数的个数为(a0+a1+...+a9)!a0!a1!...a9!(a0+a1+...+a9)!a0!a1!...a9...原创 2018-04-17 11:08:13 · 213 阅读 · 0 评论 -
[BZOJ1009][HNOI2008]GT考试(AC自动机+矩阵加速dp)
题目:我是超链接题解:沃日后天省选了而我还在填坑 好吧看着这个范围我觉得应该是矩乘,那么不能包含某个字符串肯定是AC自动机+矩乘的套路 我们来看一下DP状态设计:f[i][j]表示第i位匹配到AC自动机的第j位有多少方案 如果暴力DP的话,f[i][j]向i+1转移,枚举0~9,如果下一个节点不是end节点那么我们就可以继续转移 【要注意end节点的传递性。】 那么我们发...原创 2018-04-04 14:00:55 · 251 阅读 · 0 评论 -
[BZOJ1833][ZJOI2010]数字计数(数位dp)
题目:我是超链接题解:感觉一直不会这类dp f[i][j][k]表示i位数以j开头,k数字出现的次数代码:#include <cstdio> #include <cstring>#define LL long longusing namespace std;struct hh{ LL a[10]; void cle...原创 2018-04-17 10:01:56 · 207 阅读 · 0 评论 -
[BZOJ4816][SDOI2017]数字表格(反演)
题目:我是超链接题解:不愧是一去不返的SDOI,就是套路 我们要求的是∏i=1n∏j=1mf((i,j))=∏i=1n∏j=1m∑d=1n[(i,j)=d]f(d)∏i=1n∏j=1mf((i,j))=∏i=1n∏j=1m∑d=1n[(i,j)=d]f(d)\prod _{i=1}^n\prod _{j=1}^mf( (i,j) )=\prod _{i=1}^n\prod _{j...原创 2018-03-27 19:16:13 · 227 阅读 · 0 评论 -
[BZOJ4873]六省联考寿司餐厅(最大权闭合子图)
题目:我是超链接题解:有经验的人可以从【权值只算一遍】这个点get到这就是一个最大权闭合子图的问题 既然知道了是个最大权闭合子图就可以YY一下建图了 id[i][j]表示从i到j的点的编号,对于这一部分点按照好吃的程度正负S连正,负连T就好。 点与点之间有联系的要相连,比如[1,2,3]会连[1,2]和[2,3],为什么没有单个的点呢?因为[1,2]和[2,3]这个区间已经连了啊...原创 2018-03-28 15:26:54 · 196 阅读 · 0 评论 -
[BZOJ2668][CQOI2012]交换棋子(费用流)
题目:我是超链接题解:能够看出来这道题目是网络流,但并不清楚这个图怎么建 这种有交换次数限制的要考虑分成两半:最多流入的数量,最多流出的数量 作为流量限制 我们对于每个节点拆成三个点:x1,x2,x3,一个点的流量限制为val[i][j] 整体的连接方向是x1->x2->x3如果只有原图中这个点是黑点 <x1,x2>.cap=val[i][j]/...原创 2018-03-27 21:56:28 · 227 阅读 · 0 评论 -
[BZOJ2733][HNOI2012]永无乡(并查集+splay启发式合并)
题目:我是超链接题解:求解集合内第k大的话是splay的基本操作 那么维护连通性用并查集,然后就是个splay启发式合并的裸题了。 splay启发式合并,按照splay的后序遍历进行合并,不然如果你从头就开始合并父子关系就混乱了 时间复杂度是O(nlog2n)O(nlog2n)O(nlog^2n)代码:#include <cstdio>#incl...原创 2018-04-09 23:34:21 · 228 阅读 · 0 评论 -
[BZOJ1070][SCOI2007]修车(费用流)
题目:我是超链接题解:先说一下构成的图吧。 把每个工人拆成N个点。记A[i,j]表示第i个工人修倒数第j辆车。 每个车跟所有N*M个工人拆出的点连边。流量为1,费用为time[i,j]*k。 源和每辆车连边,N*M个点和汇连边,流量都为1,费用同为0。为什么要这样建图呢? 我们考虑这一个工人修这一辆车对后面带来的影响,举个例子,代价为3的车要是排在倒数第二去修的话,会对倒数...原创 2018-03-27 16:25:41 · 251 阅读 · 0 评论 -
[BZOJ5249][多省联考2018]IIIDX(线段树)
题目:我是超链接题解:首先很显然我们有一个贪心的思路:后序遍历从大到小填数,trick一下可以得到60pts 但是对于下面这组数据显然是没有用的 4 2 1 1 1 2 我们贪心的答案是1 1 1 2,但更优的方案是1 1 2 1 那么考虑一下怎么消除这种有重复数字的情况,我们发现只有排名一样的情况下需要考虑前后 我们可以按位贪心,即在给后面预留出足够位置的情况下先填好...原创 2018-04-09 17:38:02 · 274 阅读 · 0 评论 -
[BZOJ5248][多省联考2018] 一双木棋(对抗搜索+hash)
题目:我是超链接题解:考试的时候就打了25pts的暴力分 其实从暴力的做法是可以得到启迪的。 我们把所有搜索的状态记录下来,然后如果这一步该A走,就在可以走的几步中选择Max的状态走;如果这一步该B走,就在可以走的几步中选择Min的状态走,这应该是所谓的对抗搜索 考虑一下所有的状态,一定是一个从上往下的阶梯型 因为n,m<=10 所以我们可以用一个n位的m+1进制数把...原创 2018-04-09 08:44:28 · 300 阅读 · 0 评论 -
[BZOJ4818][SDOI2017]序列计数(矩阵加速dp)
题目:我是超链接题解:首先设计状态f[i][j]f[i][j]f[i][j]表示选i个数%p余数为j的方案数 据说还至少要有一个质数?那就再设g[i][j]g[i][j]g[i][j]表示选i个数%p余数为j且不含一个质数的方案数 那么最后的答案就是f[i][0]−g[i][0]f[i][0]−g[i][0]f[i][0]-g[i][0] 然后看看这个数据范围啊,一看就要想到用矩...原创 2018-04-01 08:19:01 · 216 阅读 · 0 评论 -
[BZOJ4820][SDOI2017]硬币游戏(KMP+概率+高斯消元)
题目:我是超链接题解:这种东西是概率dp嘛,看个数据范围似乎还要扯上和概率经常玩耍的高斯消元 这个题目的关键是设一个变量P(N)P(N)P(N)表示所有没有到达终止点的概率 假如说A同学猜的是TTH,B同学猜的是HTT,设P(A)P(A)P(A)表示A取胜的概率,P(B)P(B)P(B)同理 那么如果是N没有达到终止点,加上一个TTH肯定就结束了嘛,因为A赢了,但是在A赢的路...原创 2018-03-31 20:40:02 · 450 阅读 · 0 评论 -
[BZOJ3992][SDOI2015]序列统计(NTT+DP+ksm)
题目:我是超链接题解:从简单开始吧。 首先我们假设题目让求的是“数列中所有数的【和】%mod=x的不同方案数” 那么设F[i][j]表示选择i个数%mod=j的方案数 转移方程F[i][j]=∑|S|k=1F[i−1][j−Sk]F[i][j]=∑k=1|S|F[i−1][j−Sk]F[i][j]=\sum_{k=1}^{|S|}F[i-1][j-S_k]这个形式我们可以转化...原创 2018-04-18 20:10:39 · 208 阅读 · 0 评论 -
[BZOJ3165][HEOI2013]Segment(不下放标记的线段树)
题目:我是超链接题解:这个线段遮挡的和那个BZOJ1568一样啊,除了给了一个范围,这样需要自己算delta 注意他给的有可能是x0=x1但是y0!=y1,这个时候给y0,y1取max。。。代码:#include <cstdio>#include <iostream>using namespace std;const int sb=1e9;...原创 2018-04-23 16:38:37 · 204 阅读 · 0 评论 -
[BZOJ4868][六省联考]期末考试(贪心)
题目:我是超链接题解:我觉得枚举就可以解决这个问题了 发现学生和老师的顺序没什么影响,那就把两个都排序 枚举结束的时间,二分找到位置,计算出花费取min值就行代码:#include <cstdio>#include <algorithm>#define LL unsigned long longusing namespace std;co...原创 2018-04-19 15:14:14 · 281 阅读 · 0 评论 -
[BZOJ5252][八省联考2018]林克卡特树lct(DP凸优化/WQS二分)
题目:我是超链接题解:题目等价于:在树上选择k+条不相交的链,使其权值和最大。考虑树形DP(以下的k均为k+1)一个很直观的想法是用f[i][j]表示第ii个节点,子树中选了jj条链的最大价值。但这样是无法转移的,因此我们要考虑到根节点的情况,令f[0/1/2][i][j]表示ii号节点的子树中选了jj条链,根节点不在任何一条链中/作为链的端点/作为两条链的端点的最大值...原创 2018-07-09 10:12:54 · 746 阅读 · 0 评论 -
[BZOJ1211][HNOI2004]树的计数(prufer序列)
题目:我是超链接题解:这是一道prufer序列裸题 也就是相当于让我们求:长度为n-2的数列,每个数字出现的次数是lilil_i,不同的数列个数是多少。(n−2)!l1!l2!...(n−2)!l1!l2!...{(n-2)!\over l_1!l_2!...}。我们发现这个题目没有模数,我们就用质因数分解做。这道题目特判注意。如果度数加起来不合条件直接退出;如果有点度数为0而且...原创 2018-06-27 09:08:38 · 218 阅读 · 0 评论 -
[BZOJ4530][BJOI2014]大融合(LCT维护子树信息)
题目:我是超链接题解:上次我是运用的树链剖分+并查集做的,但事实上看到连接边应该想到LCT,这个负载很明显是两个子树的节点数相乘,那么我们只要在LCT的同时维护一波信息就好了维护什么信息?我们要维护的是虚子树的节点数量!有一个操作叫做split,意思是把除x,y这条边之外和x,y相连的splay边断掉。实现起来很简单,reverse+access+splay就好了。这样做完之后,我...原创 2018-07-08 20:06:20 · 241 阅读 · 0 评论 -
[BZOJ3534][SDOI2014]重建(矩阵树定理)
题目:我是超链接题解:代码:原创 2018-06-06 23:53:23 · 323 阅读 · 0 评论 -
[BZOJ4596][SHOI2016]黑暗前的幻想乡(矩阵树定理+容斥)
题目:我是超链接题意:n个点要修n-1条路(形成一棵树)。有n-1个公司,每个公司可以修建某些路径。求每个公司恰好修建一条路能修成树的方案数。题解:生成树的数量要考虑矩阵树定理,但是如果把所有的边加进去,不能保证每个公司都修一条路。 我们考虑容斥,其实答案就是:至少不选0个公司-至少不选1个公司+至少不选2个公司…… 我们可以二进制枚举哪些公司选,剩下的就是不选的。代码...原创 2018-06-05 11:07:35 · 215 阅读 · 0 评论 -
[BZOJ4031][HEOI2015]小Z的房间(矩阵树定理)
题目:我是超链接题解:利用类似辗转相除的方法,避免了对1e9取余,就可以避开做除法的过程。因为每次交换行,都会使行列式的值变成原来的-1倍,因为是取模,所以不能对最后的结果直接取绝对值。需要记录交换的次数,然后计算答案,再进行取模。代码:#include <cstdio>#include <cstring>#include <iostr...原创 2018-06-04 18:46:14 · 183 阅读 · 0 评论 -
[BZOJ1016][JSOI2008]最小生成树计数(辗转相除高斯消元+矩阵树定理)
题目:我是超链接题解:最小生成树有两个性质: (1)不同的最小生成树中,每种权值的边出现的个数是确定的 (2)不同的生成树中,某一种权值的边连接完成后,形成的联通块状态是一样的 那么我们其实可以把每种权值的处理看成是分开的好几步,然后根据乘法原理,将每一步得到的结果相乘。 举个例子,下图中s1,s2,s3表示已经处理好的3个连通块,虚线表示一组同权值的边。加入这组边后s1...原创 2018-06-03 21:58:52 · 780 阅读 · 1 评论 -
[BZOJ3590][SNOI2013]Quare(状压dp+边双连通分量)
题目:我是超链接题解:题目相当于是:在无向图中选出权值最小的包含所有点的双连通子图 双连通图可以拆为一个小双连通图和一条链,枚举这一条链就是整体思想 熟悉的数据范围,状压dp了?首先设计几个状态 f[i]表示状态为i,且使i中的点双联通的最小权值 h[i][j][0]表示一个端点为j,通往状态为i的点集中的最小权值 h[i][j][1]表示一个端点为j,通往状态为i的点集中的...原创 2018-05-27 08:34:46 · 404 阅读 · 0 评论 -
[BZOJ3997][TJOI2015]组合数学(递推)
题目:我是超链接题解:第一眼以为是网络流,这数据范围。。有点大啊 然而。。。结论:求一条从左下到右上的【最长】路径,大概可以证明这就是最少的次数。这个最长的定义表示如果他们不能在一行或一列上到达,就要计入权值。可以发现只要不是对角线【左下-右上】的关系都是可以在一次路径上到达的,只有对角线才不能互相到达,所以要单独记录值,那这个求最长路径也是可以理解的代码:#incl...原创 2018-05-21 21:26:25 · 303 阅读 · 0 评论 -
[BZOJ1974][SDOI2010]代码拍卖会(规律+DP)
题目:我是超链接题解:首先这个n特别大,而且这个转移怎么也是二维的,所以矩乘也不像。我们考虑拆一下这样一个【上升数】,11234=11111+111+11+1,每一个【上升数】被拆完之后不会超过9位,而且为了避免总共选0位有前导零,我们起初先填上11…111(共n位)。这样会发现一个规律:1,11,111,1111…这些数字%p会有一个循环节(循环节不一定是从第一位开始的!)。...原创 2018-05-21 19:26:48 · 282 阅读 · 0 评论 -
[BZOJ4591][SHOI2015]超能粒子炮·改(Lucas+组合数学)
题目:我是超链接题解:也就是求∑ki=0Cin(%mod)∑i=0kCni(%mod)\sum_{i=0}^{k}C_n^i(\% mod) n,k这么大,Lucas没跑了,我们先画柿子(模意义下 SmnSnmS_n^m意为∑mi=0Cin∑i=0mCni\sum_{i=0}^{m}C_n^i Lucas定理: Skn=∑i=0kCin=∑i=0k(Ci%pn%p∗Ci/p...原创 2018-04-28 12:14:39 · 253 阅读 · 0 评论 -
[BZOJ4598][SDOI2016]模式字符串(点分治+hash)
题目:我是超链接题解:树上路径用点分,很明显这里有两种方式,一种是正着的字符串,一种是倒着的字符串 所以我们在点分治的时候需要维护两个方向的路径,统计过顶点的路径 而且必须先统计再修改,不然有可能根本不经过根节点= = 而且我们在统计路径的时候,只关心是若干个模式串的前缀或后缀的路径 现在我们的问题就是:如何判断一个字符串是不是模式串的前缀或后缀。hash! 时间复杂度也是很...原创 2018-05-03 17:44:00 · 311 阅读 · 0 评论 -
[BZOJ4515][SDOI2016]游戏(线段树+链剖+差分)
题目:我是超链接题解:我们先随意分析一下题目,这个处理路径上的最小值应该是树链剖分。 还有这个距离,一开始想的是lca,但我发现这个s作为一条路径的开始不能白费,而且对于每个节点和s求lca显然太慢了,我们考虑差分,即: 上升的路径:A(dis[s]−dis[r])+B=−Adis[r]+Adis[s]+BA(dis[s]−dis[r])+B=−Adis[r]+Adis[s]+...原创 2018-04-23 23:27:12 · 268 阅读 · 0 评论 -
[BZOJ1857][SCOI2010]传送带(三分套三分)
题目:我是超链接题解:先画个图 我们可以发现,答案必然是从AB上的某一个点出发,经过平面,到达CD上的另一点然后到达D。即答案可以表示为 |AF|/P+|FE|/R+|ED|/Q,其中F∈AB,E∈CD|AF|/P+|FE|/R+|ED|/Q,其中F∈AB,E∈CD|AF|/P+|FE|/R+|ED|/Q ,其中F∈AB,E∈CD 我们要找到最优解,其实就是在AB上确定一个点...原创 2018-04-19 19:43:34 · 222 阅读 · 0 评论 -
[BZOJ3143][HNOI2013]游走(概率期望+高斯消元)
题目:我是超链接题解:与概率挂钩而且互相之间都有关系的我们考虑高斯消元(当然还有这么小的数据范围) 如果我们再设f[i]表示到i点的期望,那么由于权值不确定,我们有2n个未知数,然而并不能找到2n个方程 怎么办呢?我们设f[i]表示到i点的概率,不难发现f[i]=∑i,j相连f[j]du[j]f[i]=∑i,j相连f[j]du[j]f[i]=\sum_{i,j相连}{f[j]\...原创 2018-04-14 09:02:07 · 224 阅读 · 0 评论 -
[BZOJ2752][HAOI2012]高速公路(线段树)
题目:我是超链接题解:这个题目期望的点就是把每一段的距离加起来然后/[(r-l+1)*(r-l)/2] 那么这道题目就剩下求每个子区间的和 的和 这个1e5的范围还有修改操作我们选择线段树 很明显权值是在边上的,这里我们已经考虑r–了,那么我们要求的值=Σcost[i]* (i-l+1)*(r-i+1) 其实并不难理解,就是包含这个数的左子集*包含这个数的右子集 然后拆开=(...原创 2018-04-13 19:50:04 · 207 阅读 · 0 评论 -
[BZOJ4821][SDOI2017]相关分析(线段树)
题目:我是超链接题解:这个给的a的柿子很明显不好弄啊,我们画一画a=∑Ri=L(x−x¯)(y−y¯)∑Ri=L(x−x¯)2a=∑i=LR(x−x¯)(y−y¯)∑i=LR(x−x¯)2a=\frac{\sum_{i=L}^R(x-\bar{x})(y-\bar{y})}{\sum_{i=L}^R(x-\bar{x})^2} (以后∑∑\sum表示∑Ri=L∑i=LR\sum_...原创 2018-03-31 16:03:19 · 162 阅读 · 0 评论 -
[BZOJ4530][BJOI2014]大融合(树链剖分+并查集)
题目:我是超链接题解:显然一条边的负载等于将这条边断开后形成的两个子树的节点数的乘积。 在计算一条边的负载的时候,可以将所有与之连通的点看成一棵树。只需要计算出一个端点的size大小就可以用size*(n-size)计算出答案。 由于这棵树的形态是已经确定的,可以先将这棵树建出来。每一次添加一条边肯定是在一对父子之间。那么将这条边连通无非是将父亲以及它能到的最远的祖先之间的点的...原创 2018-03-14 15:49:38 · 305 阅读 · 0 评论 -
[BZOJ3226][SDOI2008]校门外的区间(线段树)
fBAgGjwvfrKU题目:我是超链接题解:如何处理开闭区间?开两倍的节点,一部分代表端点,一部分代表区间 然而一开始愚蠢的up选择1-base为区间,base+1-Max为端点,然后就开始无穷无尽的调试,最后还没法输出 没办法了,那就让端点和区间挨着吧,一个端点一个区间。。。 这些操作也很明了了 And 两侧变成0 Or 区间全1 已有-新读 区间全0 新读-已有...原创 2018-03-07 21:02:01 · 259 阅读 · 0 评论 -
[BZOJ4032][HEOI2015]最短不公共子串(dp+后缀自动机)
题目:我是超链接题解:后缀自动机只是一个幌子?其实只有第三问才用啦,神题4合1?总之这个题目记住的原则就是 1、最短不公共长度实际上就是最长匹配中的最小值+1 2、如果某一方是子串,要想方设法让子串依次转移不能跳First:A子串≠B子串想想我们以前求最长公共子串的时候吧 f[i][j]表示A的第i位匹配到B的第j位的最长公共长度 f[i][j]=f[i-1][j-...原创 2018-02-27 21:21:41 · 571 阅读 · 1 评论