全网唯一一篇容斥题解 Description Solution 看到这个题,大部分人想的是状压dp 但是我是个蒟蒻没想到,就用容斥切掉了. 并且复杂度比一般状压低, (其实这个容斥的算法,提出来源于ywy_c_asm) (然而我知道了这个算法,竟然和他写的不一样,而且比他跑的快) 进入正题: 我们需要统计恰好满足匹配k个的情况. 那么,我们可以先找出来,恰好满足n个,n-1,n-2...k个的情况. 分别记为ans[i] ans[i]怎么算呢? 先给出公式: ans[i]=cal(i)-∑C(j…
Description 有n种颜色的砖块,第i种颜色的砖块有a[i]个,你需要把他们放成一排,使得相邻两个砖块的颜色不相同,限定第一个砖块的颜色是start,最后一个砖块的颜色是end,请构造出一种合法的方案或判断无解. HINT [数据范围] n,m≤1000000,1≤start,end≤n ∑ai<=1000000 Solution 全网唯一 一篇O(n)题解+bzoj最优解 这个题看大家都是优先队列,然后直接贪心放置. 还有用权值线段树来模拟堆过的%%%. 其实不用带logn也可以过的.…
[BZOJ1879][SDOI2009]Bill的挑战(动态规划) 题面 BZOJ 洛谷 题解 本来还想着容斥来着,这个数据范围直接暴力就好.设\(f[i][S]\)表示当前填到了第\(i\)位,和\(S\)这些串匹配上的方案数.暴力转移即可. #include<iostream> #include<cstdio> #include<cstring> using namespace std; #define MOD 1000003 void add(int &x…
http://www.lydsy.com/JudgeOnline/problem.php?id=1879 f[i][j] 表示匹配了i个字符,匹配字符串的状态为j的方案数 枚举下一个字符是什么 计算加上这个自字符之后新匹配到的状态s f[i+1][s]+=f[i][j] 转移的时候判断如果f[i][j]==0,就不用枚举字符了 没有这个复杂度在6e8,TLE 其实可以预处理 g[i][j]表示已经匹配了长度为i,再加字符j 可以匹配到的状态 #include<cstdio> #include&…
[BZOJ1879][Sdoi2009]Bill的挑战 Description Input 本题包含多组数据.  第一行:一个整数T,表示数据的个数.  对于每组数据:  第一行:两个整数,N和K(含义如题目表述).  接下来N行:每行一个字符串. T ≤ 5,M ≤ 15,字符串长度≤ 50. Output 如题 Sample Input 5 3 3 ???r??? ??????? ??????? 3 4 ??????? ?????a? ??????? 3 3 ??????? ?a??j??…
题目链接 bzoj 1879: [Sdoi2009]Bill的挑战 题解 n<=15,装压吧 对所有字符串进行装压 可以预处理一个数组can[i][j]表示所有的字符串中,有哪些可以在第i位匹配桑z 然后dp[i][j]表示T串第i位上取字符所对的状态j的方案 代码 #include<vector> #include<cstdio> #include<cstring> #include<algorithm> #define mod 1000003 us…
Bill的挑战 bzoj-1879 Sdoi-2009 题目大意: 注释:$1\le t \le 5$,$1\le m \le 15$,$1\le length \le 50$. 想法: 又是一个看数据范围想做法的题,我们想到状压dp. 看了题解... ...网上给的状态是f[len][s]表示长度为len满足状态s的字符串个数. 光看状态... ...可能算重啊?! 其实... ... 状态:dp[len][s]表示长度为len,能且只能满足状态为s的字符串个数. 转移:我们先预处理出g[i]…
Bill的挑战 题目链接:https://www.luogu.org/problem/P2167 数据范围:略. 题解: 因为$k$特别小,想到状压. 状压的方式也非常简单,就是暴力枚举. 但是会不会存在重复的问题呢? 我想到这里就转到容斥了. 就是暴力多步容斥就好了. $Luogu$的题解们的状压还有一步,算了算了不管了.…
一看题解好像全是状压DP,那么我就来补充一个容斥写法吧 乍一看,好像是水题,枚举选哪k个串,然后判断 1,如果这k个串中至少两个串某位置确定且不相同,答案显然为02,如果这个位置只被有且仅有一个串确定,这个位置就唯一确定了3,否则这个位置有26种不同填数情况,统计答案时只要用乘法原理搞一下就行 但是容易想到,这样做是有问题的,以样例的第一组数据为例我们选定串1,2,然后发现第四个位置确定是r,其他位置任选,但是无论我们构造出怎样的串,T总是可以同时匹配串3的 考虑容斥掉这些匹配到更多串的方案 首…
Description  Input 本题包含多组数据. 第一行:一个整数T,表示数据的个数. 对于每组数据: 第一行:两个整数,N和K(含义如题目表述). 接下来N行:每行一个字符串. Output 1 2 1 a? ?b Sample Input 50 Sample Output 对于30%的数据,T ≤ 5,M ≤ 5,字符串长度≤ 20: 对于70%的数据,T ≤ 5,M ≤ 13,字符串长度≤ 30: 对于100%的数据,T ≤ 5,M ≤ 15,字符串长度≤ 50. [思路] 状压D…