HUD 5375 Gray code 动态规划
2015-08-17 22:26
302 查看
题意:给出一段字符串,只含0, 1或者?(二进制), ?号表示这里可以填1或者0,下一行再给出和相对于字符串长度为数目的 价值
当?位置填上1或0时,将二进制转换成格雷码,若对应位上为1,则能得到相对位置上的
价值(上方提及到的),问这段二进
制字符串能获得的最大价值
格雷码:点击打开链接
二进制转换成格雷码:将二进制右移一位再和原二进制的对应位异或
思路:没有正面用到二进制转换成格雷码,这题可以用DP解
状态转移:dp[i][0] = max(dp[i-1][0] , dp[i-1][1]
+ a[i]) ;
dp[i][1] = max(dp[i-1][1] , dp[i-1][0]
+ a[i]) ;
i表示第i为,dp[i[0]表示第i位填0时能得到的最大值, dp[i][1]表示第 i 位填1能获得的最大值。
当?位置填上1或0时,将二进制转换成格雷码,若对应位上为1,则能得到相对位置上的
价值(上方提及到的),问这段二进
制字符串能获得的最大价值
格雷码:点击打开链接
二进制转换成格雷码:将二进制右移一位再和原二进制的对应位异或
思路:没有正面用到二进制转换成格雷码,这题可以用DP解
状态转移:dp[i][0] = max(dp[i-1][0] , dp[i-1][1]
+ a[i]) ;
dp[i][1] = max(dp[i-1][1] , dp[i-1][0]
+ a[i]) ;
i表示第i为,dp[i[0]表示第i位填0时能得到的最大值, dp[i][1]表示第 i 位填1能获得的最大值。
#include <stdio.h> #include <string.h> #define inf -99999999 #define maxn 200010 int max(int a, int b) { return a>b?a:b; } int dp[maxn][2], a[maxn]; char s[maxn]; int main() { int t, len, i, k; scanf("%d", &t); k = 1; while(t--) { scanf("%s", s); len = strlen(s); for(i = 0;i < len;i++) scanf("%d", &a[i]); if(s[0] == '0') { dp[0][0] = 0; dp[0][1] = inf; } else if(s[0] == '1') { dp[0][1] = a[0]; dp[0][0] = inf; } else if(s[0] == '?') { dp[0][1] = a[0]; dp[0][0] = 0; } for(i = 1;i < len;i++) { if(s[i] == '?') { dp[i][0] = max(dp[i - 1][0], dp[i - 1][1] + a[i]); dp[i][1] = max(dp[i - 1][0] + a[i], dp[i - 1][1]); } else if(s[i] == '1') { dp[i][0] = inf; dp[i][1] = max(dp[i - 1][0] + a[i], dp[i - 1][1]); } else if(s[i] == '0') { dp[i][0] = max(dp[i - 1][0], dp[i - 1][1] + a[i]); dp[i][1] = inf; } } printf("Case #%d: %d\n", k++, max(dp[len - 1][0], dp[len - 1][1])); } }
相关文章推荐
- Oracle连接<二>
- Java心得15
- POJ 2528 Mayor's posters // 线段树 区间更新 离散化
- 如何在Mac OS X上安装 Ruby运行环境
- 根据自己的需要,把别人开发好的东西搬过来,优化and重构,在优化的过程中,甚至也会弄出一套全新的东西(转)
- index的用法
- 黑马程序员=======集合Collection
- Intel CPU屏蔽PCIE错误的两种方法
- dojo------gridx的使用
- 在ubuntu 14.04上的cloudera安装--path B方式
- palindrome number
- Android Api Demos登顶之路(三十五)Fragment-->Alert Dialog
- HCNA每日一练错误
- HDU 2084 数塔
- 让前端测试变的自动化
- C++读写.mat文件
- Matlab把对应文件夹下的多个avi格式的视频转化成每一帧的图片
- [2-sat]HDOJ1824 Let's go home
- 6.代理模式(设计模式笔记)
- iOS 实现脉冲雷达以及动态增减元素 By Swift