"题目传送门" 又是一道状压+计数类好题hh~~(真香)~~。数据范围非常友好,告诉我们$n include define maxn 300000 using namespace std; typedef long long ll; const ll moder=19260817; int n,m, ...
分类:
其他好文 时间:
2018-10-29 10:24:33
阅读次数:
151
参考:https://www.cnblogs.com/liu runda/p/6019426.html 有点神奇 大概就是显然最直观的转移是全部合起来再一个一个拆,是n+m次,然后设f[i][j]为分别取i,j状态的最多相同大小块的集合数,枚举新加块转移,答案是n+m 2 f[(1 include ...
分类:
其他好文 时间:
2018-10-25 19:25:27
阅读次数:
143
首先根据lucas, $$ C_n^m\%2=C_{n\%2}^{m\%2} C_{n/2}^{m/2} $$ 让这个式子的结果为计数的情况只有n&m==m,因为m的每一个为1的二进制位都需要n中这一位为1,否则结果就是0 所以枚举子集,设f[i]为以i开头的合法子序列个数,dp的时候枚举子集从后往 ...
分类:
其他好文 时间:
2018-10-25 00:18:11
阅读次数:
175
题意:给定$m$个字符串,要求你求出长度为$n$,且至少包含$m$个字符串中的$K$串的字符串的方案数。 题解:这题的$m$很小,只有10,所以可以考虑状压DP,先对这$m$个串构建AC自动机,然后设$f[i][j][s]$表示长度为$i$,目前在自动机上的节点是$j$,与这$m$个字符串匹配的情况 ...
分类:
其他好文 时间:
2018-10-24 10:51:36
阅读次数:
156
题目 "原题" Solution 看到数据范围就可以想到状压,然后你就可以直接转移就好了? cpp include include include include include include include define ll long long define file(a) freopen(a ...
分类:
其他好文 时间:
2018-10-23 22:52:54
阅读次数:
145
引题 状压dp,全称为状态压缩动态规划,是一种利用二进制的数来表示状态的动态规划 我们经常用二进制中某一位的1表示选取这一位表示的状态,用0表示相反的意义 例如:现在有一张有$n$个节点的图,我们需要找到经过某些特定点的最短路 ? 假设$n=8$,那么二进制数10010011的意义如下 | 节点编号 ...
分类:
其他好文 时间:
2018-10-23 21:14:45
阅读次数:
150
"链接" 基础状压DP,预处理出sum,按照题意模拟即可 复杂度 $O(n^22^n)$ cpp include define REP(i,a,b) for(int i(a);i=p)x =p;} int main(){ scanf("%d%d",&n,&m); while(m ){ int x,y ...
分类:
其他好文 时间:
2018-10-23 20:58:36
阅读次数:
141
传送门 看到数据范围就知道是搜索或状压DP 算了一波复杂度搜索好像过不了极限数据 搞状压 设 f [ i ] 表示所有猪的状态为 i (二进制下1表示死了,0表示没死)时需要的最少发射次数 设 p [ i ] [ j ] 存经过第 i 只猪和第 j 只猪的抛物线经过的猪的状态(可以$n^2$预处理出 ...
分类:
其他好文 时间:
2018-10-21 13:34:13
阅读次数:
163
P2831 愤怒的小鸟 我们先预处理出每个猪两两之间(设为$u,v$)和原点三点确定的抛物线(当两只猪横坐标相等时显然无解) 处理出$u,v$确定的抛物线一共可以经过多少点,记为$lines[u][v]$ 设$f[i]$表示已经被消灭的猪的集合为二进制表示为$i$时,需要的最小抛物线数 显然$f[0 ...
分类:
其他好文 时间:
2018-10-21 00:57:04
阅读次数:
138