LightOJ 1422 Halloween Costumes
2016-02-29 13:42
211 查看
区间DP。
这题好难想....做区间DP专题的时候,第一题看的就是这题,发现不会然后一直没去做,直到今天专题中其余的题都切完了再看这题...依旧无头绪,还是看了题解....看了也发现好难。。。
这题好难想....做区间DP专题的时候,第一题看的就是这题,发现不会然后一直没去做,直到今天专题中其余的题都切完了再看这题...依旧无头绪,还是看了题解....看了也发现好难。。。
#include<cstdio> #include<cstring> #include<cmath> #include<algorithm> using namespace std; const int INF = 0x7FFFFFFF; const int maxn = 100 + 10; int T, n; int a[maxn]; int dp[maxn][maxn]; void read() { scanf("%d", &n); for (int i = 1; i <= n; i++) scanf("%d", &a[i]); } void init() { for (int i = 1; i <= n; i++) for (int j = 1; j <= n; j++) dp[i][j] = j - i + 1; } void work() { for (int i = 2; i <= n; i++) { for (int j = 1; j <= n; j++) { int st = j, en = st + i - 1; if (en>n) continue; dp[st][en] = min(dp[st][en], dp[st + 1][en] + 1); if (a[st] == a[en]) dp[st][en] = min(dp[st][en], dp[st][en - 1]); for (int k = st + 1; k <= en - 1; k++) if (a[st] == a[k]) dp[st][en] = min(dp[st][en], dp[st][k] + dp[k + 1][en]); } } printf("%d\n", dp[1] ); } int main() { scanf("%d", &T); for (int c = 1; c <= T; c++) { read(); init(); printf("Case %d: ", c); work(); } return 0; }
相关文章推荐
- 安卓HTTP请求之get和post方法。
- android学习之RelativeLayout
- IE浏览器安装插件(ocx)提示“windows 已经发现此文件有一个问题”怎么办?
- db2cmd建库,备份,恢复等日常操作
- 使用照相机拍照后读取当前拍到的图片方法
- HDOJ-1421 搬寝室
- 棋盘上的麦子(BigInteger处理大数问题)
- 利用Oracle的row_number() over函数消除重 复的记录
- 【剑指offer】Q40:数组中出现一次的数
- 常用汉字拼音对照表
- gitlab 杂记
- 【算法总结】graph 图的问题
- OpenCV进行图像相似度对比的几种办法
- maven本地仓库和镜像源设置
- 成都Uber优步司机奖励政策(2月29日)
- 解决Html.CheckBoxFor中”无法将类型 bool 隐式转换为 bool。存在一个显式转换..."的方法
- gulp ( http://markpop.github.io/2014/09/17/Gulp入门教程 )
- Keil MDK、Sublime的纵向垂直选择
- mongodb分片环境开启认证
- [推荐]DataX、DbSync和Timetunnel学习贴