803E - Roma and Poker

思路:

  赢或输或者平的序列;

  赢和平的差的绝对值不得超过k;

  结束时差的绝对值必须为k;

  当“?”时可以自己决定为什么状态;

  输出最终序列或者NO;

  dp(随便搞搞);

来,上代码:

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm> using namespace std; int n,k,dp[][],m; char ch[]; int main()
{
cin>>n>>k;
cin>>ch+;
m=k-;dp[][m+]=true;
for(int i=;i<n;i++)
{
if(ch[i]=='W') for(int j=;j<=m*+;j++) dp[i][j]=dp[i-][j-];
else if(ch[i]=='L') for(int j=;j<m*+;j++) dp[i][j]=dp[i-][j+];
else if(ch[i]=='D') for(int j=;j<=m*+;j++) dp[i][j]=dp[i-][j];
else for(int j=;j<=m*+;j++) dp[i][j]=(dp[i-][j-]||dp[i-][j]||dp[i-][j+]);
}
if(ch[n]=='W') dp[n][*m+]=dp[n-][*m+];
else if(ch[n]=='L') dp[n][]=dp[n-][];
else if(ch[n]=='D') ;
else dp[n][]=dp[n-][],dp[n][m*+]=dp[n-][m*+];
if(!dp[n][]&&!dp[n][m*+]) cout<<"NO";
else
{
int now;
if(dp[n][m*+]) now=m*+;
else now=;
for(int i=n;i>;i--)
{
if(ch[i]=='L') now++;
else if(ch[i]=='W') now--;
else if(ch[i]=='D') now=now;
else
{
if(dp[i-][now+]) now++,ch[i]='L';
else if(dp[i-][now]) ch[i]='D';
else if(dp[i-][now-]) now--,ch[i]='W';
}
}
cout<<ch+;
}
return ;
}

最新文章

  1. Android 如何有效的解决内存泄漏的问题
  2. Gson解析复杂的json数据
  3. 对Prepared Statement 是否可以防止 SQL Injection 的实验
  4. java_Cookies_1_商品浏览历史记录servlet1
  5. Openstack中间DVR Part1 -- 东西走向的交通处理
  6. 关于调用office com组件导出Excel
  7. Python中else语句块(和if、while、for、try搭配使用)
  8. Ultra-QuickSort(树状数组+离散化)
  9. DFS-hdu-2821-Pusher
  10. (笔记):组合and继承之访问限制(二)
  11. LindAgile.SchedulingTask~设计一个不错的任务调度组件
  12. 写一个Python 1、通过select实现的最简单的web框架2、通过wsgiref实现的web框架
  13. npm 模块的总结
  14. 数组方括号有趣的split方法
  15. zabbix3.2监控vcenter和exsi信息
  16. [备份]EntityFramework
  17. SPREAD for Windows Forms 控制输入法
  18. ubuntu14.04上 nginx启动停止
  19. [Java] 高效快速导入EXCEL数据
  20. CentOS-yum基本使用

热门文章

  1. Java - 收藏集 -
  2. 《Cracking the Coding Interview》——第2章:链表——题目1
  3. script async和defer
  4. 使用pip命令报You are using pip version 9.0.3, however version 18.0 is available pip版本过期.解决方案
  5. visio2013密钥
  6. coreos ipa image Injection of public key
  7. [转载]kd tree
  8. STL之deque使用简介
  9. html页面分块加载
  10. foreach的理解