luogu4187 [USACO18JAN]Stamp Painting (dp)】的更多相关文章

可以发现,只要存在连续k个相同的,这个情况就一定是合法情况 然而这个不太好算,我们算不存在k个相同的,然后用$m^n$把它减掉 设f[i]为前i个,没有连续k个的 显然$f[i]=m^i ,i<K$ 然后我们现在想把f[i]转移过来,只要取f[i-k+1]..f[i-1]的所有情况,然后在每个的后面都涂上与这种情况的最后一个颜色不相同的颜色就可以了.容(bu)易(hui)证明这样做是不重不漏的 所以$f[i]=(M-1)\sum_{j=i-K+1}^{i-1}f[j]$ #include<bi…
传送门 其实本来想做组合数学的2333. 谁知道是道dpdpdp. 唉只能顺手做了 还是用真难则反的思想. 这题我们倒着考虑,只需要求出不合法方案数就行了. 这个显然是随便dpdpdp的. f[i]f[i]f[i]表示到第iii个格子不合法的方案数. 那么有两种情况. i<ki<ki<k,则无论怎么当前格子染都不合法,f[i]=f[i−1]∗mf[i]=f[i-1]*mf[i]=f[i−1]∗m i≥ki\geq ki≥k,则从当前的格子向左染最多染到第i−k+1i-k+1i−k+1个格…
Description: Bessie想拿\(M\) 种颜色的长为\(K\) 的图章涂一个长为\(N\) 的迷之画布.假设他选择涂一段区间,则这段区间长度必须为\(K\) ,且涂完后该区间颜色全变成图章颜色.他可以随便涂,但是最后必须把画布画满.问能有多少种最终状态,\(N\leq 10^6,M\leq 10^6,K\leq 10^6\) Solution: 好题 告诉我了思维僵化是多么可怕 想了各种排列组合 最后看到正解直接傻逼 正着做非常不可做 考虑补集转化,求任意一段相同颜色长度都小于k的…
Time limit : 2sec / Memory limit : 256MB Score : 700 points Problem Statement Squid loves painting vertices in graphs. There is a simple undirected graph consisting of N vertices numbered 1 through N, and M edges. Initially, all the vertices are pain…
题 There are 2N white balls on a table in two rows, making a nice 2-by-N rectangle. Jon has a big paint bucketfull of black paint. (Don’t ask why.) He wants to paint all the balls black, but he would like to have somemath fun while doing it. (Again, d…
可以大胆猜想的一点是,只要有不少于一个长度为k的颜色相同子串,方案就是合法的. 直接算有点麻烦,考虑减去不合法的方案. 一个正(xue)常(sha)的思路是枚举序列被分成的段数,问题变为用一些1~k-1的数组成n的方案数,这显然是可以容斥的.但好像对每一种都进行容斥就不太好办了. 暴力二维dp是很容易想到的.考虑去掉一维的暴力,设f[i]为前i位不合法染色方案数,枚举这一段的长度转移.这显然是可以前缀和的. #include<iostream> #include<cstdio> #…
P4187 [USACO18JAN]Stamp Painting 样例 input3 2 2output6 input6 10 5output190 sol:首先可以发现,对于合法的序列,只要有一串至少连续K个相同的就可以了,其他没有限制 这当然是可以dp辣 dp[i][j]表示前i位没有,当前有j个连续相同,前面没有出现连续K个相同 统计答案的时候就是∑i={K,n} dp[i][K]*Ksm(m,n-i) 转移挺容易的 dp[1][1]=m dp[i][1]=(m-1)*∑j={1,K-1}…
B. Painting The Wall time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output User ainta decided to paint a wall. The wall consists of n2 tiles, that are arranged in an n × n table. Some tiles are p…
dp..dp(i, j)表示画两个点为i-j, i的最优答案. dp(i, j) = min{ dp(i-j, k) } + cost[i] (1≤k≤M-j) 令f(i, j) = min{dp(i, j)}, 那么转移时间下降为O(1).然后滚动数组..这道题卡空间..时间复杂度O(NM) -------------------------------------------------------------------------------- #include<cstdio> #in…
C. Painting Fence time limit per test 1 second memory limit per test 512 megabytes input standard input output standard output Bizon the Champion isn't just attentive, he also is very hardworking. Bizon the Champion decided to paint his old fence his…