您的位置:首页 > 大数据 > 人工智能

2015 Multi-University Training Contest 7 1007

2015-08-11 20:46 218 查看

Gray code

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 208 Accepted Submission(s): 117


[align=left]Problem Description[/align]
The reflected binary code, also known as Gray code after Frank Gray, is a binary numeral system where two successive values differ in only onebit (binary digit). The reflected binary code was originally designed to prevent spurious output from electromechanical switches. Today, Gray codes are widely used to facilitate error correction in digital communications such as digital terrestrial television and some cable TV systems.

#pragma comment(linker, "/STACK:1024000000,1024000000")
#include<cstdio>
#include<string>
#include<iostream>
#include<cstring>
#include<cmath>
#include<stack>
#include<queue>
#include<vector>
#include<map>
#include<stdlib.h>
#include<algorithm>
#define LL __int64
using namespace std;
const int MAXN=200000+5;
int dp[MAXN][2],a[MAXN];
char str[MAXN];
int kase,len;
int main()
{
//freopen("in.txt","r",stdin);
int Case=0;
scanf("%d",&kase);
while(kase--)
{
memset(str,0,sizeof(str));
memset(a,0,sizeof(a));
memset(dp,0,sizeof(dp));

scanf("%s",str);
len=strlen(str);
for(int i=0;i<len;i++) scanf("%d",&a[i]);

dp[0][0]=0;
dp[0][1]=a[0];
for(int i=1;i<len;i++)
{
if(str[i]=='?')
{
if(str[i-1]=='?')
{
dp[i][0]=max(dp[i-1][0],dp[i-1][1]+a[i]);//假设当前位为0,前一位为0则转换后还是0,前一位为1则转换后为1
dp[i][1]=max(dp[i-1][0]+a[i],dp[i-1][1]);
}
else
{
dp[i][0]=dp[i-1][str[i-1]-'0']+a[i]*(0^(str[i-1]-'0'));
dp[i][1]=dp[i-1][str[i-1]-'0']+a[i]*(1^(str[i-1]-'0'));
}
}
else
{
if(str[i-1]=='?')
dp[i][str[i]-'0']=max(dp[i-1][0]+a[i]*(0^(str[i]-'0')),dp[i-1][1]+a[i]*(1^(str[i]-'0')));
else
dp[i][str[i]-'0']=dp[i-1][str[i-1]-'0']+a[i]*((str[i-1]-'0')^(str[i]-'0'));//注意运算符的优先级
}
}
printf("Case #%d: ",++Case);
if(str[len-1]=='?') printf("%d\n",max(dp[len-1][0],dp[len-1][1]));
else printf("%d\n",dp[len-1][str[len-1]-'0']);
}
return 0;
}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: