dp

dp[i][j]表示到了i赢和输的差为j

如果这位是?向dp[i-1][j-1],dp[i-1][j],dp[i-1][j+1]转移,如果是W向dp[i-1][j-1]转移,如果是L向dp[i-1][j+1]转移,如果是D向dp[i-1][j]转移

#include<bits/stdc++.h>
using namespace std;
const int N = ;
int n, k;
char s[N], ans[N][N * ];
int dp[N][N * ], pre[N][N * ];
int main()
{
scanf("%d%d", &n, &k);
scanf("%s", s + );
dp[][] = ;
for(int i = ; i <= n; ++i)
for(int j = -k + ; j <= k + ; ++j)
{
ans[i][j] = s[i];
if(s[i] == '?')
{
for(int l = -; l <= ; ++l) if(abs(j + l - ) < k && dp[i - ][j + l])
{
dp[i][j] = dp[i - ][j + l];
if(l == -) ans[i][j] = 'W';
else if(l == ) ans[i][j] = 'D';
else if(l == ) ans[i][j] = 'L';
pre[i][j] = j + l;
}
}
else if(s[i] == 'W')
{
if(abs(j - ) < k && dp[i - ][j - ])
{
dp[i][j] = ;
pre[i][j] = j - ;
}
}
else if(s[i] == 'L')
{
if(abs(j - ) < k && dp[i - ][j + ])
{
dp[i][j] = ;
pre[i][j] = j + ;
}
}
else if(s[i] == 'D')
{
if(abs(j - ) < k && dp[i - ][j])
{
pre[i][j] = j;
dp[i][j] = ;
}
}
}
if(!dp[n][k + ] && !dp[n][-k + ])
{
puts("NO");
return ;
}
vector<char> v;
int now = dp[n][k + ] ? k + : -k + ;
for(int i = now, j = n; i && j; i = pre[j][i], --j)
v.push_back(ans[j][i]);
reverse(v.begin(), v.end());
for(int i = ; i < v.size(); ++i) printf("%c", v[i]);
return ;
}

803E的更多相关文章

  1. AC日记——Roma and Poker codeforces 803e

    803E - Roma and Poker 思路: 赢或输或者平的序列: 赢和平的差的绝对值不得超过k: 结束时差的绝对值必须为k: 当“?”时可以自己决定为什么状态: 输出最终序列或者NO: dp( ...

  2. Codeforces 803E - Roma and Poker

    http://codeforces.com/problemset/problem/803/E E. Roma and Poker  time limit per test           2 se ...

  3. 【codeforces 803E】Roma and Poker

    [题目链接]:http://codeforces.com/contest/803/problem/E [题意] 给你一个不完整的胜负平序列(不完整是指中间有些地方为问号,让你自己选择胜负平) 让你复原 ...

  4. [反汇编练习] 160个CrackMe之018

    [反汇编练习] 160个CrackMe之018. 本系列文章的目的是从一个没有任何经验的新手的角度(其实就是我自己),一步步尝试将160个CrackMe全部破解,如果可以,通过任何方式写出一个类似于注 ...

  5. 电脑一直报PCIE BUS错误的原因

    报错 新装Linux 系统后,每隔数分钟则报以下错误: AER:Corrected error received: 0000:00:1c:4 pcie bus error: severity=Corr ...

  6. yaffs2在am335x上实施

    一.yaffs2文件烧写(通过网口) uboot下输入如下命令: setenv ipaddr 192.168.2.110;setenv serverip 192.168.2.222;saveenv n ...

  7. 菜鸟 学注册机编写之 “MD5”

    测试环境  系统: xp sp3 调试器 :od 1.10 sc_office_2003_pro 高手不要见笑,仅供小菜玩乐,有不对或不足的地方还请多多指教,不胜感激! 一:定位关键CALL 1. 因 ...

随机推荐

  1. 实验2 C++数组与指针

    一.实验目的: 掌握一维数组和二维数组的定义.赋值和输入输出的方法. 掌握字符数组和字符串函数的使用. 通过实验进一步掌握指针的概念,会定义和使用指针变量. 能正确使用数组的指针和指向数组的指针变量. ...

  2. 28 I/O限制的异步操作

    28.2 C#的异步函数 private static async Task<string> IssueClientRequestAsync(string serverName, stri ...

  3. BFS入门篇——RQNOJ195&&335

    PID195 / 校园迷宫☆ 从x,y走到去q,w的最小步数,限制是有的点可走,有的点不可走,BFS嘛. #include<bits/stdc++.h> using namespace s ...

  4. 洛谷——P2504 [HAOI2006]聪明的猴子

    P2504 [HAOI2006]聪明的猴子 题目描述 在一个热带雨林中生存着一群猴子,它们以树上的果子为生.昨天下了一场大雨,现在雨过天晴,但整个雨林的地表还是被大水淹没着,部分植物的树冠露在水面上. ...

  5. [LUOGU] 1108 低价购买

    统计本质不同的\(LIS\)个数. 因为本题要求的是\(N^2\)级别的算法,就直接暴力统计\(LIS\)的个数了 然后统计方案数的话加入发现有之间有一个值,以它为结尾的\(LIS\)长度和当前的相等 ...

  6. 一、Scrapy入门教程

    本文转载自以下链接:https://scrapy-chs.readthedocs.io/zh_CN/latest/intro/tutorial.html 在本篇教程中,我们假定您已经安装好Scrapy ...

  7. RAID-独立磁盘冗余阵列

    此文章理论部分内容大多数摘自网站 开心技术园 的一篇文章,但并做了一些修改与调整.理论部分原文链接:图文并茂 RAID 技术全解 – RAID0.RAID1.RAID5.RAID100-- 本文实验部 ...

  8. Eclipse集成Maven的Web工程demo(独立及Maven集成tomcat)

    用到的工具JDK1.8Eclipse Luna j2eeEclipse 集成的Mavetomcat7 (集成在xampp中的独立web服务器,或者通过Maven plugin集成web服务器) 步骤如 ...

  9. navicate远程访问ubuntu上的mysql数据库

    安装mysql 首先检查系统中是否已经安装了MySQL,在终端里面输入: sudo netstat -tap | grep mysql 如上所示就是正确安装并启动,启动命令为 sudo /etc/in ...

  10. 【Codeforces 474D】Flowers

    [链接] 我是链接,点我呀:) [题意] 让你吃东西 B食物一次必须要吃连续k个 但是对A食物没有要求 问你有多少种吃n个食物的方法(吃的序列) [题解] 设f[i]表示长度为i的吃的序列且符合要求的 ...