ZOJ-3725 Painting Storages 动态规划】的更多相关文章

Painting Storages Time Limit: 2 Seconds      Memory Limit: 65536 KB There is a straight highway with N storages alongside it labeled by 1,2,3,...,N. Bob asks you to paint all storages with two colors: red and blue. Each storage will be painted with e…
Description There is a straight highway with N storages alongside it labeled by 1,2,3,...,N. Bob asks you to paint all storages with two colors: red and blue. Each storage will be painted with exactly one color. Bob has a requirement: there are at le…
题目要求找到至少存在m个连续被染成红色的情况,相对应的,我们求至多有m-1个连续的被染成红色的情况数目,然后用总的数目将其减去是更容易的做法. 用dp来找满足条件的情况数目,, 状态:dp[i][0]和dp[i][1]分别表示第i个柱子被染成红色和蓝色的情况数目. 状态转移:dp[i][0] = dp[i-1][0]+dp[i][1]-dp[i-m][1];                     dp[i][1] = dp[i-1][0]+dp[i][1]; 代码如下: #include <c…
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5048 Sample Input 4 3 Sample Output 3 题目大意:n个格子排成一条直线,可以选择涂成红色或蓝色,问最少 m 个连续为红色的方案数. 分析:递推法 dp[i] 表示前 i 个最少 m 个连续为红色的方案数. 转移时,分类讨论: 1.前 i-1 个已经满足这个性质,那么,第 i 个随意涂色,方案数为 dp[i-1] * 2 . 2.前 i…
题意:给定一个数N,表示有N个位置,要么放置0,要么放置1,问至少存在一个连续的M个1的放置方式有多少? 分析:正面求解可能还要考虑到重复计算带来的影响,该题适应反面求解.设dp[i][j]表示到前 i 为后导 1 个数为 j 的方案数,于是有动态规划方程: dp[i][0] = sum{ dp[i-1][0... min(i-1, M) ] };dp[i][j] = dp[i-1][j-1]  其中 j != 1 单单根据这个方程时间度为O(N*M),还是不足以在有限的时间内解出该问题.通过观…
There is a straight highway with N storages alongside it labeled by 1,2,3,...,N. Bob asks you to paint all storages with two colors: red and blue. Each storage will be painted with exactly one color. Bob has a requirement: there are at least M contin…
题意: n个格子排成一条直线,可以选择涂成红色或蓝色,问最少 m 个连续为红色的方案数. 解题思路: 应该是这次 ZOJ 月赛最水的一题,可惜还是没想到... dp[i] 表示前 i 个最少 m 个连续为红色的方案数. 转移时,分类讨论: 1.前 i-1 个已经满足这个性质,那么,第 i 个随意涂色,方案数为 dp[i-1] * 2 . 2.前 i-1 个不满足这个性质,那么,要想成为方案,区间 [i-m+1,i] 必须涂成红色.并且,下标为 i-m 这个点必须是蓝色,否则就与 情况1 重复了.…
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3725 n个点排列,给每个点着色,求其中至少有m个红色的点连续的数目.f[i]表示前i个点至少有m个连续红色的个数,则f[i]=f[i-1]*2+2^(i-m-1)-f[i-m-1]. //STATUS:C++_AC_120MS_1784KB #include <functional> #include <algorithm> #include &l…
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3662 之前写过这道题,结果被康神吐槽说代码写的挫. 的确,那时候想法太挫了. 题意: 给你三个数n,m,k. 问你存在多少个数列 a1,a2,...,ak,使得他们的和为n,他们的最小公倍数为m. 想法一: 因为 lcm(a1,a2,...,ak)=m,所以a1,a2,a3,...,ak都是m的约数. 因此预处理出来m的约数,记在w[i]里. 设计状态dp[i]…
Chopsticks 题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=234 题目大意:给定n个筷子的长度,取k+8套筷子,每套有3个,长度分别为A,B,C.要求k+8套筷子中(A-B)^2的和最小,输出这个最小值. 分析:题目中筷子长度是非降序排列的,所以最小的两个A和B一定是相邻的.先不考虑筷子C,只要留着就行. 令dp[i][j]表示从 j 个筷子中取 i 套筷子的最优值. dp[i][j] = min {dp…