博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CodeForces 803E Roma and Poker
阅读量:7143 次
发布时间:2019-06-29

本文共 2674 字,大约阅读时间需要 8 分钟。

$dp$。

$dp[type][i][j]$表示,前i个字符前缀和为$j$,第$i$个字符放的是$type$类型的能否实现,然后倒推回来就可以了。

#include 
#include
#include
#include
#include
using namespace std;char s[1010];int n,k;int dp[3][1010][2010];int ans[1010];int B = 1000;void work(int type,int pos,int sum){ ans[pos] = type; if(pos==1) return ; int E; if(type == 0) E=-1; //L else if(type == 1) E=1; //W else if(type == 2) E=0; //D for(int i=0;i<3;i++) { if(dp[i][pos-1][sum-E]==0) continue; work(i,pos-1,sum-E); return ; }}int main(){ scanf("%d%d",&n,&k); scanf("%s",s); memset(dp,0,sizeof dp); dp[0][0][B] = 1; dp[1][0][B] = 1; dp[2][0][B] = 1; for(int i=1;i<=n;i++) { if(s[i-1]=='?') { for(int j=B-k;j<=B+k;j++) { if(j+1<=B+k) dp[0][i][j] = max(dp[0][i][j],dp[0][i-1][j+1]); if(j+1<=B+k) dp[0][i][j] = max(dp[0][i][j],dp[1][i-1][j+1]); if(j+1<=B+k) dp[0][i][j] = max(dp[0][i][j],dp[2][i-1][j+1]); } for(int j=B-k;j<=B+k;j++) { if(j-1>=B-k) dp[1][i][j] = max(dp[1][i][j],dp[0][i-1][j-1]); if(j-1>=B-k) dp[1][i][j] = max(dp[1][i][j],dp[1][i-1][j-1]); if(j-1>=B-k) dp[1][i][j] = max(dp[1][i][j],dp[2][i-1][j-1]); } for(int j=B-k;j<=B+k;j++) { dp[2][i][j] = max(dp[2][i][j],dp[0][i-1][j]); dp[2][i][j] = max(dp[2][i][j],dp[1][i-1][j]); dp[2][i][j] = max(dp[2][i][j],dp[2][i-1][j]); } } else if(s[i-1] == 'L') { for(int j=B-k;j<=B+k;j++) { if(j+1<=B+k) dp[0][i][j] = max(dp[0][i][j],dp[0][i-1][j+1]); if(j+1<=B+k) dp[0][i][j] = max(dp[0][i][j],dp[1][i-1][j+1]); if(j+1<=B+k) dp[0][i][j] = max(dp[0][i][j],dp[2][i-1][j+1]); } } else if(s[i-1]=='W') { for(int j=B-k;j<=B+k;j++) { if(j-1>=B-k) dp[1][i][j] = max(dp[1][i][j],dp[0][i-1][j-1]); if(j-1>=B-k) dp[1][i][j] = max(dp[1][i][j],dp[1][i-1][j-1]); if(j-1>=B-k) dp[1][i][j] = max(dp[1][i][j],dp[2][i-1][j-1]); } } else { for(int j=B-k;j<=B+k;j++) { dp[2][i][j] = max(dp[2][i][j],dp[0][i-1][j]); dp[2][i][j] = max(dp[2][i][j],dp[1][i-1][j]); dp[2][i][j] = max(dp[2][i][j],dp[2][i-1][j]); } } if(i

 

转载于:https://www.cnblogs.com/zufezzt/p/6837169.html

你可能感兴趣的文章
Python模块学习--shutil和hashlib和json
查看>>
Linux防火墙iptables学习笔记(一)入门要领
查看>>
xshell 秘钥配对
查看>>
saltstack之SLS文件
查看>>
Redhat linux下cvs的安装配置
查看>>
cxgrid合并值相同的某列
查看>>
增量备份和差异备份的区别
查看>>
纯JS操作获取桌面路径方法
查看>>
thinkphp数据库添加表单提交的数据
查看>>
Hibernate事务属性
查看>>
OVS local network 连通性分析 - 每天5分钟玩转 OpenStack(132)
查看>>
反编译工具jad简单用法
查看>>
无法获取网关MAC地址表/radware备机流量——在不断的应急中提高
查看>>
iOS上使用自定义ttf字体
查看>>
关于CentOS/RHEL 7.x的yum组安装错误的解决方案
查看>>
通过PowerShell轻松转换VHD文件到VHDX格式
查看>>
OLTP应用之MySQL架构选型
查看>>
[Unity插件]LitJson杂谈
查看>>
调节effective_io_concurrenc优化PostgreSQL bitmap index scan性能
查看>>
MySQL体系结构笔记
查看>>