CF - 1111D Destroy the Colony DP】的更多相关文章

题目传送门 题意: 这个题目真的是最近遇到的最难读. 有一个长度n的字符串,每一位字符都代表的是该种种类的敌人. 现在如果一个序列合法的话,就是同一种种类的敌人都在字符串的左半边或者右半边. 现在有q次询问,现在问你将 s[x] 和 s[y] 的敌人都放在同一边的合法方案数是多少. 题解: 首先如果划分组之后,那么答案就是,m! * m! * 2/ (c1! * c2! * c3! .... ) 然后对于每一组来说就是 这个值是一定的. 然后就是需要求这个分组方案数. 对于分组方案数,可以通过背…
第一次知道这种背包还能退的.... 我们用dp[ i ]表示选取若干个物品重量到达 i 的方案数. 如果我们g[ i ]表示不用第 x 个物品的, 然后选若干其他的物品到达 i 的方案数. if(i < cnt[ x ]) g[ i ] = dp[ i ] else  g[ i ] = dp[ i ] - g[ i - cnt[ x ] ] 这样退一次就能删一个物品, 这个题目退两次就可以了. 一共只有52 × 52 / 2个本质不同的询问, 预处理一下. #include<bits/stdc…
Codeforces1111D 退背包+组合数 D. Destroy the Colony Description: There is a colony of villains with several holes aligned in a row, where each hole contains exactly one villain. Each colony arrangement can be expressed as a string of even length, where the…
CF 983B XOR-pyramid(区间dp,异或) 若有一个长度为m的数组b,定义函数f为: \(f(b) = \begin{cases} b[1] & \quad \text{if } m = 1, \\ f(b[1] \oplus b[2],b[2] \oplus b[3],\dots,b[m-1] \oplus b[m]) & \quad \text{otherwise} \end{cases}\) 现在给出长度为n(n<=5000)的数组a,询问q(q<=1000…
大意:给定字符串$s$, 保证长度为偶数, 给定q个询问, 每次询问给定两个位置$x$,$y$, 可以任意交换字符, 要求所有字符$s[x],s[y]$在同一半边, 剩余所有同种字符在同一半边的方案数 注意到询问数虽然是1e5, 但有效的只有$52^2$, 考虑预处理出$52^2$后O(1)回答. 假设两半的字符种类已经定好, 那么种类数就为$2\frac{(n/2)!^2}{\prod\limits_{i} (c_i!)}$. 考虑如何分配每一半的字符, 若对$s[x],s[y]$所在的半边$…
题目链接 以前做过类似的,USACO,2.3,开始数组开小了,导致数据乱了,然后超数据范围了,.. #include <cstdio> #include <iostream> #include <cmath> using namespace std; #define LL __int64 LL dp[][][]; LL c[][]; int main() { int i,j,n,k,u,h; ; i <= ; i ++) { c[i][] = ; } ; i &l…
这题确实很棒..又是无想法..其实是AC自动机+DP的感觉,但是只有一个串,用kmp就行了. dp[i][j][k],k代表前缀为virus[k]的状态,len表示其他所有状态串,处理出Ac[len][26]数组来,DP就可以了.状态转移那里一直没想清楚,wa了很多次,记录路径倒是不复杂,瞎搞搞就行. #include<iostream> #include<cstring> #include<cstdio> #include<cmath> #include&…
题目链接 这题,没想出来,根本没想到用最小公倍数来更新,一直想状态压缩,不过余数什么的根本存不下,看的von学长的blog,比着写了写,就是模版改改,不过状态转移构造不出,怎么着,都做不出来. #include <iostream> #include <cstdio> #include <cstring> using namespace std; #define LL __int64 #define MOD 2520 LL dp[][][]; ]; ]; LL gcd(…
给一个给定括号序列,给该括号上色,上色有三个要求 1.只有三种上色方案,不上色,上红色,上蓝色 2.每对括号必须只能给其中的一个上色 3.相邻的两个不能上同色,可以都不上色 求0-len-1这一区间内有多少种上色方案,很明显的区间DP dp[l][r][i][j]表示l-r区间两端颜色分别是i,j的方案数 0代表不上色,1代表上红色,2代表上蓝色 对于l-r区间,有3种情况 1.if(l+1==r) 说明就只有一对,那么dp[l][r][0][1]=1;         dp[l][r][1][…
题意: n个矩阵排成一排,n<=2e5,高度分别为hei[i],宽度为1 对于一些连续的矩阵,矩阵的size为矩阵的个数,矩阵的strength为这些矩阵中高度最低的那一个高度 求:for each x such that 1 ≤ x ≤ n the maximum strength among all groups of size x. 对于每一个矩阵,我们先求出这个矩阵的l,r l表示这个矩阵左边最靠近它的小于它的矩阵的下标 r表示这个矩阵右边最靠近它的小于它的矩阵的下标 即在区间(l,r)…