Sdut1309不老传说(区间dp)

来源:互联网 发布:des加密算法 c语言 编辑:程序博客网 时间:2024/04/28 22:01

题意:

给出很多个石头,围成一圈。现在要求将石头染成给定的颜色,但是限制了每次最多只能染k个石头并且最大用c种颜色。

题解:

这题和hdu2476是换汤不换药的。怎么说呢?

首先我们考虑下杭电的那题(只要考虑如何从空串变为目标串),没限制颜色,好说。那么状态dp[i][j] 表示i到j刷成目标串的最小步数,那么有这样的决策对于i到j区间假设i+1到j已经刷完了,那么久单独刷i这个点,于是dp[i][j]=dp[i+1][j]+1;接下来就是要枚举断点更新,如果区间内某个点和断点i相等,说明可以分成两个段进行更行,即 dp[i+1][k]+dp[k+1][j]

为什么是i+1呢?想想如果i位置的串等于k位置的串那么i点刷k点肯定也是刷了,那么少了一个i点只有dp[i+1][k]是不是也是一样的呢?yes!因为如果没i点k点肯定要刷,那么决策的答案记为a,那现在i点加进去必然是要刷的,那i点和k点是同时刷的,那么决策的答案应该不变才对,于是dp[i][j] = max ( dp[i+1][k]+dp[k+1][j]) 这个方程就出来了。

好!现在言归正传,不老传说怎么做,这题限制了颜色的多少,那么我可以很郑重的说这个颜色的限制就是个幌子!为什么呢?

这样想,如果目标石头有5中颜色,那么我现在限定你用3中颜色,想想怎么刷都不可能刷成功,因为3中颜色根本变不了5中颜色!对其实这题限制的颜色是没用的,因为要达到目标,颜色肯定要是等于目标拥有的颜色!好了现在颜色的问题解决了!

那么现在问题来了!k个石头的限制怎么办!呵呵,这个简单多了,只要每次状态转移时判断是否子区间是否满足个数小于等于k就好了!

那么问题解决!

#include<stdio.h>#include<string.h>#include<algorithm>#include<iostream>#include<math.h>using namespace std;typedef long long lld;#define oo 0x3f3f3f3f#define mod 1000000007#define maxn 400+5int dp[maxn][maxn];int a[maxn];int main(){    int n,C,K,ans,t;    while(scanf("%d %d %d",&n,&C,&K)!=EOF)    {        for(int i=1;i<=n;i++)        {            scanf("%d",&a[i]);            a[i+n]=a[i];        }        for(int i=1;i<=2*n;i++)            for(int j=i+1;j<=2*n;j++)                dp[i][j]=oo;        for(int i=1;i<=2*n;i++)            dp[i][i]=1;        for(int L=2;L<=n;L++)        {            for(int i=1;i+L-1<2*n;i++)            {                int j=i+L-1;                if(j-i+1<=K)                    dp[i][j]=dp[i+1][j]+1;                t=min(i+K-1,j);                for(int k=i+1;k<=t;k++)                    if(a[i]==a[k])                        dp[i][j]=min(dp[i][j],dp[i+1][k]+dp[k+1][j]);            }        }        ans=oo;        for(int i=1;i<=n;i++)            ans=min(ans,dp[i][i+n-1]);        printf("%d\n",ans);    }return 0;}/*4 30 00 44 01 14 100 00 44 44 0*/


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 美图m8卡机了怎么办 美图m6手机太卡怎么办 美图t8闪退怎么办 美图手机相机闪退怎么办 美图手机闪屏怎么办 魅族m6相册闪退怎么办 美图m6工厂模式怎么办 美图m6手机死机怎么办 美图m6s开不了机怎么办 美图手机m6进水怎么办 美图t8摔黑屏怎么办 美图屏幕点不动怎么办 朗动钥匙丢了怎么办 深圳小汽车摇号中签了怎么办 深圳摇号审核通过后怎么办 京东过保修期了怎么办 买的商业预付卡怎么办 壹钱包预付卡金额不足怎么办 美发店换老板原来预付卡怎么办 超市预付卡现超市停业怎么办? 利群购物卡丢了怎么办 利群金卡丢了怎么办 坐飞机洗漱用品超过规定怎么办 请律师团了解后怎么办 三星s9开不了机怎么办 三星手机开不了机了怎么办 安卓手机音响进水了怎么办 音响不读u盘怎么办 虎牌水壶显示f2怎么办 海尔冰箱门关不严没吸力怎么办 忘记京东金融账号怎么办 京东账号手机号已停用怎么办 京东账户忘了怎么办 京东登录名忘了怎么办? 京东已经发货了怎么办 苹果7p黑亮掉漆怎么办 淘宝卖家不肯退运费怎么办 健身付款收据丢了怎么办 收据丢了怎么办能退款 苹果售后不承认基带问题怎么办 电话卡欠费了不用了怎么办