状压dp
文章平均质量分 85
StaroForgin
这个作者很懒,什么都没留下…
展开
-
[航海协会]树
被OneInDark随切了。原创 2022-08-15 10:49:38 · 211 阅读 · 0 评论 -
[航海协会]无损加密
我只能说飘飘蛋是线代的神。原创 2022-07-10 20:04:12 · 251 阅读 · 2 评论 -
[NOI2021]机器人游戏
多亏了Cirno的细心指导,快膜她。原创 2022-05-31 20:11:42 · 516 阅读 · 0 评论 -
[硫化铂]开心消消乐
再次被卷爷吊打,卷爷秒切T2,yyds!!!原创 2022-02-15 10:51:26 · 228 阅读 · 0 评论 -
[TJOI2018]游园会
这波直接不能"NOI"了是吧。原创 2022-01-12 15:26:15 · 267 阅读 · 0 评论 -
[海军国际项目办公室]七负我
七海!!!原创 2021-10-29 19:14:02 · 185 阅读 · 0 评论 -
[海军国际项目办公室]数树
然而妹妹指数级暴力跑得比我正解还快,出题人这造的什么数据呀。那一天,人们想起了被PPL暴力支配的恐惧。原创 2021-10-27 20:05:23 · 224 阅读 · 0 评论 -
[CF321D]Ciel and Flipboard
或许真的有人能够很简单地看出性质吧。原创 2021-10-18 19:36:56 · 144 阅读 · 0 评论 -
[海军国际项目办公室]打拳
蕾丝:难道不是很容易读出必须胜利吗?笔者:满篇的仁义道德,我却从字里行间读出了OneInDarkAK一句。原创 2021-10-11 20:13:22 · 124 阅读 · 0 评论 -
[ARC126D]Pure Straight
挺水的一dp,但我比赛时连题面都没看到。原创 2021-09-21 22:44:59 · 322 阅读 · 0 评论 -
[海军国际项目办公室]序列
OneInDark又吊打我了。o(TωT)o原创 2021-09-09 22:23:18 · 101 阅读 · 0 评论 -
[ABC216H]Random Robots
酱鲤鱼好吃吗?原创 2021-08-31 11:34:45 · 216 阅读 · 0 评论 -
[ARC105F]Lights Out on Connected Graph
我的思维已经到了前所未有的低谷,JZM竟然想乘机凭借自己拉布拉多的身份趁机击垮我,真实太令人悲哀了。原创 2021-08-09 20:42:51 · 284 阅读 · 0 评论 -
[CF1450G]Communism
标杆·能理科夫曰:"状压板子!"!!!原创 2021-07-13 09:46:37 · 170 阅读 · 0 评论 -
[CF1523F]Favorite Game
Favorite Game题解**状压题看到n⩽14n\leqslant 14n⩽14应该很容易联系到状压。我们先考虑如果要状压的话我们表示当前状态的话最多需要几维的状态。当前已经激活了的传送塔的状态,当前位置,时间,完成任务数,总共四维。但细细考率一下其实并不需要这么多维。如果我们在某个完成任务的位置的话,我们应该业已完成这个任务,时间就是这个任务结束的时间,我们需要的是让次数的完成任务数最大,就用gi,jg_{i,j}gi,j表示我们激活传送塔的状态为iii,刚完成了任务jjj时完成任务原创 2021-06-02 17:09:58 · 154 阅读 · 2 评论 -
[省选联考 2021]滚榜
滚榜题解n!n!n!的暴力竟然有60pts!!!首先,n⩽13n\leqslant 13n⩽13这个范围是很小的,我们很容易想到状压dp。由于它要求的是方案数,而选择的bib_{i}bi又要求是递增的,我们需要将选择状态,上一个点,总的已选择题数都加入状态,所以我们得到的是一个dpS,i,j,kdp_{S,i,j,k}dpS,i,j,k的4维dp,最后答案就是dp2n−1,n,0−m,mdp_{2^n-1,n,0-m,m}dp2n−1,n,0−m,m。再加上需要转移的点于当前选择题数,我们成原创 2021-04-15 21:08:55 · 282 阅读 · 0 评论 -
[hdu6566]The Hanged Man
tree题解树dp板子题。首先O(nm2)O\left(nm^2\right)O(nm2)的朴素dp做法应该是十分容易想到的,直接合并即可。由于MAX卷积什么的太,太神仙了,我都没听说过,所以显然不能用来优化转移过程降低时间复杂度,我们就考虑改变一下dp状态。首先,我们知道如果每次只合并一个数的话每次转移明显就是O(m)O(m)O(m)的了,而对于这个数我们又只需要考虑它的父亲在不在,所以很快就可以想到状压,合并时看它父亲在不在。但很明显,直接状压是不现实的,n⩽50n\leqslant 50n原创 2021-03-12 22:03:06 · 296 阅读 · 0 评论 -
[SNOI2017]遗失的答案
遗失的答案题解其实这题挺水的。显然,当G∤ LG\not | \,\,\,LG∣L时是无解的。我们可以先将小于nnn的不是GGG倍数的值全部舍去,只用管为GGG倍数的数。当出去GGG后,剩下的数的最大公约数一定是111,最小公倍数一定是LG\frac{L}{G}GL。我们先将LG\frac{L}{G}GL进行质因数分解,记LG=∏piai\frac{L}{G}=\prod p_{i}^{a_{i}}GL=∏piai。容易发现,对于每个pip_{i}pi,一定有数不是pip_{原创 2021-02-03 16:33:44 · 184 阅读 · 0 评论 -
[hdu5304]Eastest Magical Day Seep Group‘s Summer
Eastest Magical Day Seep Group's Summer题解看到题面时应该很容易想到矩阵树定理,但是由于是一个条边的连通图,并不能直接用矩阵树来处理。很容易发现,任意一个个点条边的连通图,一定是一棵基环树,于是我们可以考虑缩点。考虑状压,表示一根起点为的链状态为的图的构成方案数,可以通过背包来进行更新。之后枚举每个,再计算出每个状态为的环的构成方案数,将所有在中的点缩点后再将该图的基尔霍夫矩阵建出来,计算出它的行列式值,加上它的贡献即可。由于每个环有两个方向,还需要原创 2020-09-29 21:34:49 · 236 阅读 · 0 评论 -
玩个球
玩个球《关于我继“贞难调”后又命名了一道“贞卡常”的这件事》其实这道题部分分还是比较好拿的。对于subtask3,明显就是一个都不拿,而就是全都拿。对于subtask4,如果全为W就输出,否则就输出。然后我们就愉快的拿到2pts了。对于subtask5,就直接统计这个W被拿到的概率,通过容斥可以求出,其概率为对于subtask6,也可以通过上面方法得到,不过有些麻烦。不过因为数据过水,直接输出k也可以得分对于subtask1,2,我们可以通过状压dp实现,状态表示那些点已经被原创 2020-08-26 20:06:31 · 145 阅读 · 0 评论 -
花园
花园题解很板的一道矩阵加速看到题目与的数据范围,应该很容易想到状压dp。令,表示在第位时前个的状态为,有转移方程式:。可是对于的数据范围明显是会T的,于是我们就想到了矩阵优化。我们可以先枚举最开始的前位的状态,通过矩阵快速幂求出最后位为各个状态时的dp值。找出对应的符合要求的状态,并统计答案。这样的时间复杂度是,可能会T。于是,我们可以先将矩阵快速幂给预处理出来,最后统计答案时也只需统计与当前状态相关的矩阵值。时间复杂度是,不会T了,其实时间还是很宽裕的。源码.原创 2020-08-25 16:20:45 · 146 阅读 · 0 评论 -
[CF855E]Salazar Slytherin‘s Locket
Salazar Slytherin's Locket题解很水的一道数位dp。在b进制下保证每个数的出现次数为偶,由于需要记录每个数出现次数的奇偶,而,很容易想到用状压来表示。至于答案还是很常规的差分套路,用记忆化搜索来进行数位dp来求出小于等于某个数的满足条件数的个数。令为进制下,在第位时状态为时满足条件数的个数。转移时还是用记忆化搜索进行,转移方程也很好想。源码#include<bits/stdc++.h>using namespace std;typed原创 2020-08-11 16:36:20 · 164 阅读 · 0 评论 -
[CF903]Party
Party题解看见,很容易想到状压。令表示说有互相认识的人状态为i时,集合i中的每个人都认识集合中的其他人。于是,转移方程式就很好想了,。依次更新一遍就可以了。源码#include<bits/stdc++.h>using namespace std;typedef long long LL;const int INF=0x7f7f7f7f;const int mo=1e9+7;typedef pair<LL,LL> pii;int n,m,a原创 2020-08-09 16:44:26 · 119 阅读 · 0 评论 -
[CF913E]Logical Expression
Logical Expression题解看到这题应该很容易想到暴力的,毕竟只有256种情况但是,由于这是状压的题,必须用状压来做。否则T**M*E***又会***定义为进行了i次操作,x,y,z的值的情况为j时的字典序最小表达式。但我们很快就发现,因为有字典序的限制,并不是每一层都要加括号,非运算,或运算与与运算本身的优先级是不一样的。所以原本的dp法有问题。重新定义,前两维含义与之前一样,k表示当前式子的优先级。优先级0表示,存在一个或运算未在括号内进行,优先级1表示,不存原创 2020-08-09 16:28:37 · 155 阅读 · 0 评论 -
[CF1209E2]Rotate Columns (hard version)
Rotate Columns (hard version)题解首先,很容易发现,这n行的最大值都来自最大值最大的n列。于是,我们可以将其变成一个n*n(或者更小)的矩形。由于很容易就可以想到状压dp。令表示前i列总的选择行的情况为j时的最大值和。先将当前选择情况的值初始化,再比对按每行最大选时是否有可能前面的一列旋转后当前位置值比其他列最大值大。再定义,即所有行选择情况为j时的最大值,这很容易用前面的f数组更新出来。源码#include<bits/stdc++.h&g原创 2020-08-09 16:02:29 · 164 阅读 · 0 评论 -
寿司晚宴
寿司晚宴题解分析一下部分分。30pts:考虑状压dp,我们可以选择将每个质因数压为一位,一个二维的dp状压,方程式也很好想。 50pts:别问笔者怎么想出来的,我们发现两个质因子完全不同的集合,它们构成的数也一定不同。于是我们可以去掉一维,只在最后加上两个完全不同状态的乘积即可。 70pts:笔者实在不知道。 100pts:我们发现,任意一个小于n的数最多只会有一个大于的因子。所...原创 2019-12-21 16:24:17 · 182 阅读 · 0 评论 -
小奇取石子
小奇取石子题解本题需要根据数据范围的不同来考虑。对于第一个30%的数据,打个暴力即可。对于第二个30%的数据,一看,就是状压dp,将每一堆石子压个状态就行了。对于第三个40%的数据,打个朴素dp就行了,表示表示i个石子选择的最少堆数。源码#include<cstdio>#include<cstring>#include<cmath&g...原创 2019-11-11 20:19:51 · 264 阅读 · 0 评论 -
十二桥问题
十二桥问题题解笔者最开始没看见(k<=12),明明题名都给得如此清楚了,。好了,回到正题,k如此的小,我们可以考虑一下状压dp,方程式也很好想,根据每一条边去推就好了。问题是如果每次需要用两个端点距离时都去找一遍的话很有可能炸,我们可以考虑在开始时将所有端点都SPFA一遍,加上1,最多也只会SPFA25次。有的大佬优化到了13次,如Indra,具体说就是将每条边的中点为单位,去SPF...原创 2019-11-08 20:37:09 · 297 阅读 · 0 评论 -
随机二分图
随机二分图题解我们先来分析一下各个部分分。对于5%的数据,:直接枚举每一种状态。 对于5%的数据,:与上面一个差不多。 对于10%的数据,:暴力枚举每个点的连接情况,与上面差不多。暴力按道理说可以跑过20%的分,只是打的区别而已。对于5%的数据,且,直接输出即可。 对于15%,,状压即可。剩下两个20%是给考试时间不够的人选择打情况的。对于100%的数据,我们可以先考...原创 2019-11-12 21:46:09 · 380 阅读 · 0 评论