Gray code---hdu5375(格雷码与二进制码,普通dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5375
题意就是:给你一串二进制码,里面可能含有'?'这个既可以表示0又可以表示1,
让我们把这个二进制串转成格雷码串,转换之后的串中如果第 i 位为 1 那么就加上对应给出的a[i],求最大加的结果ans;
例如:
00?0
1 2 4 8
二进制串可以是 0000或者0010
转化成格雷码之后是0000或者0011
0000价值总和为0;
0011的价值总和为a[3]+a[4]=12;
dp[i][j]表示二进制第i位为j时的最大价值。同时应该注意初始化。

#include<stdio.h>
#include<iostream>
#include<string.h>
#include<algorithm>
#include<math.h>
using namespace std;
#define N 200020
#define INF 0xfffffff int a[N], dp[N][];
char s[N]; int main()
{
int T, n, t=;
scanf("%d", &T);
while(T--)
{
memset(s, , sizeof(s));
memset(a, , sizeof(a));
memset(dp, , sizeof(dp));
scanf("%s", s);
n=strlen(s);
for(int i=; i<n; i++)
{
scanf("%d", &a[i]);
dp[i][] = dp[i][] = -INF;
}
if(s[]=='' || s[]=='?') dp[][] = ;
if(s[]=='' || s[]=='?') dp[][] = a[];
for(int i=; i<n; i++)
{
if(s[i]=='' || s[i]=='?')
dp[i][] = max(dp[i-][], dp[i-][]+a[i]);
if(s[i]=='' || s[i]=='?')
dp[i][] = max(dp[i-][], dp[i-][]+a[i]);
}
int ans=max(dp[n-][], dp[n-][]);
printf("Case #%d: %d\n", t++, ans);
}
return ;
}
Gray code---hdu5375(格雷码与二进制码,普通dp)的更多相关文章
- LeetCode:Gray Code(格雷码)
题目链接 The gray code is a binary numeral system where two successive values differ in only one bit. Gi ...
- leetCode 89.Gray Code (格雷码) 解题思路和方法
The gray code is a binary numeral system where two successive values differ in only one bit. Given a ...
- c++实现gray code(格雷码)
今天别人问的一道题,强调用分治法实现 =.= 百度了一下格雷码,然后写了一下. 关于格雷码大家看百度的吧,特别详细,贴个图: 代码如下(header_file.h是我自己写的一个头文件,包括常见的ve ...
- LeetCode OJ:Gray Code(格林码)
The gray code is a binary numeral system where two successive values differ in only one bit. Given a ...
- 力扣—gray code (格雷编码) python实现
题目描述: 中文: 格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异. 给定一个代表编码总位数的非负整数 n,打印其格雷编码序列.格雷编码序列必须以 0 开头. 英文: Th ...
- gray-code (格雷码)
题目描述 The gray code(格雷码) is a binary numeral system where two successive values differ in only one bi ...
- 格雷码(Gray Code)转二进制码(Binary Code)
学习verilog generate语句时,偶然看到用generate语句来进行格雷码到二进制码转换的代码,就从网上找了一些案例来学习. 下表为几种自然二进制码与格雷码的对照表: 十进制数 自然二进制 ...
- 格雷码Gray Code详解
格雷码简介 在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码(Gray Code),另外由于最大数与最小数之间也仅一位数不同,即“首尾相连”,因此又称循环码或反射码.格 ...
- 用硬件(Verilog)实现二进制码和格雷码的转换
格雷码(Gray code)是1880年由法国工程师Jean-Maurice-Emlle Baudot发明的一种编码,是一种绝对编码方式,典型格雷码是一种具有反射特性和循环特性的单步自补码,它的循环. ...
随机推荐
- MVC4 网站发布(整理 + 部分转载 + 部分问题收集和解决方案)
网站发布步骤: 这部分是转载文章 在此标明出处,以前有文章是转的没标明的请谅解,因为有些已经无法找到出处,或者与其它原因. 如有冒犯请联系本人,或删除,或标明出处. 因为好的文章,以前只想收藏,但连接 ...
- OpenCms 集成外部Solr Server
OpenCms默认是以内嵌的Solr作为全文搜索服务的,不过我们也可以配置一个独立的Solr搜索服务器 设置外部Solr Server 1. 从Solr 官方站点http://lucene.apach ...
- Java_Swing实现小球沿正弦曲线运动的代码
1 package zuidaimapack_1; import java.awt.*; import javax.swing.*; /** *Java_Swing实现小球沿正弦曲线运动的代码 * @ ...
- android开发 图片合成
private static Bitmap compositeImages(Bitmap srcBitmap,Bitmap dstBitmap){ Bitmap bmp = null; //下面这个B ...
- 【BZOJ】【1269】【AHOI2006】文本编辑器editor
Splay Splay序列维护的模板题了……为了便于处理边界情况,我们可以先插入两个空格当作最左端和最右端,然后……其实本题主要考察的就是Build.splay和Findkth这三个操作,我们可以实现 ...
- spring.net +dapper 打造简易的DataAccess 工具类.
public class DBUtil { /// <summary> /// 数据库连接字符串 /// </summary> private static string Da ...
- C#与C++之间类型的对应{转}
Windows Data Type .NET Data Type BOOL, BOOLEAN Boolean or Int32 BSTR String BYTE Byte CHAR ...
- sql server 时间
sql server 获取月份天数:1,SELECT 32-DAY(CAST('2015-03-01' as datetime)+32-DAY(CAST('2015-03-01' as datetim ...
- ASP.NET 将Excel导入数据库
将Excel导入数据库大致流程: Excel数据->DataSet->数据库 需要做的准备:1.FileUpload控件一个,按钮一个,如果需要即时显示那么GridView或DataGr ...
- (转)单机上配置hadoop
哈哈,几天连续收到百度两次电话,均是利好消息,于是乎不知不觉的自己的工作效率也提高了,几天折腾了好久终于在单机上配置好了hadoop,然后也成功的运行了一个用例,耶耶耶耶耶耶. 转自:http://w ...