lightoj 1422【区间DP·分类区间首元素的情况】
来源:互联网 发布:node.js 应用场景 编辑:程序博客网 时间:2024/06/06 07:42
题意:
给你n天分别要穿的衣服种类,可以套着穿,
一旦脱下来就不能再穿,求n天至少要几件。
思路:
区间DP
dp[i][j]代表i到j需要至少几件衣服
第i天的衣服在第i天穿上了,dp[i][j]=dp[i+1][j]+1,
给你n天分别要穿的衣服种类,可以套着穿,
一旦脱下来就不能再穿,求n天至少要几件。
思路:
区间DP
dp[i][j]代表i到j需要至少几件衣服
第i天的衣服在第i天穿上了,dp[i][j]=dp[i+1][j]+1,
枚举区间(i,j],如果有第k天的衣服=第i天的,考虑第i件衣服在在第i天没穿(因为穿上了,第k天还需要穿么?)dp[i][j]=dp[i+1,k-1]+dp[k,j];
#include <bits/stdc++.h>using namespace std;typedef long long LL;typedef unsigned long long ULL;typedef pair<int,int>PII;const double eps=1e-5;const double pi=acos(-1.0);const int INF=0x3f3f3f3f;const int N=1e2+10;int n,a[N];int dp[N][N];int main(){ int T,cas=1; scanf("%d",&T); while(T--) { scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]); memset(dp,0,sizeof(dp)); for(int i=1;i<=n;i++) dp[i][i]=1; for(int i=n-1;i>=1;i--) { for(int j=i+1;j<=n;j++) { dp[i][j]=dp[i+1][j]+1; for(int k=i+1;k<=j;k++) { if(a[i]==a[k]) dp[i][j]=min(dp[i][j],dp[i+1][k-1]+dp[k][j]); } } } printf("Case %d: %d\n",cas++,dp[1][n]); } return 0;}
0 0
- lightoj 1422【区间DP·分类区间首元素的情况】
- lightoj 1422 区间DP
- lightoj 1422 区间dp
- Lightoj 1422 区间dp
- LightOJ 1422 区间dp
- Lightoj 1422(区间dp)
- LightOJ 1422(区间DP)
- LightOJ 1422 (区间DP)
- #LightOJ 1422 Halloween奇怪的区间dp
- LightOJ 1422(区间DP)
- Lightoj 1422 (区间dp)
- Lightoj 1031 区间DP
- lightoj 1033 区间dp
- Lightoj 1031(区间dp)
- lightoj 1031【区间DP】
- lightoj 1025【区间DP】
- lightoj 1025 区间dp
- LightOJ-1044-区间dp
- 子串
- Java实现Apriori算法进行关联规则挖掘
- [JZOJ1115]【HNOI2008】GT考试
- linux字符设备驱动之异步通知
- 【C#】设计模式六大原则
- lightoj 1422【区间DP·分类区间首元素的情况】
- 嵌入式的童年-第16课:mini2440开发板介绍
- CentOS 7 部署RabbitMQ 服务
- PLL使用的必要性
- MySQL-5.7.17-winx64 Windows环境下的配置
- linux 中的date用法
- mysql数据库引擎 MyISAM和 InnoDB区别
- 【转】每天拿两个小时来浪费(文/王路)
- linux shell删除命令