字符串DP cf803E
来源:互联网 发布:长期避孕药 知乎 编辑:程序博客网 时间:2024/06/07 17:21
http://codeforces.com/problemset/problem/803/E
状态表示
转移方程
- 这一局为?,即可能赢,输,平局:
d[i][j]=d[i−1][j−1]|d[i−1][j+1]|d[i−1][j] - 已经确定该局的状态,直接按照条件转移即可:
a)ai=W:d[i][j]=d[i−1][j−1]
b)ai=L:d[i][j]=d[i−1][j+1]
c)ai=D:d[i][j]=d[i−1][j]
细节
- 注意可能最后得分是-k,所以在dp的时候,对j加上偏移量。
- 注意边界,在
i<j 一定不满足,并且j=k orj=−k 时,i必须为n 。
#include <bits/stdc++.h>using namespace std;const int M=1001;char s[1010];int f[1010][2010],g[1010][2010];int n,k;void dp(int i,int t){ for(int j=-k+1+M;j<M+k;j++) { if(!f[i][j]&&f[i+1][j+t]) { f[i][j]=1; g[i][j]=t; } }}int main(){scanf("%d%d%s", &n, &k, s);f[n][M+k]=f[n][M-k]=1; for(int i=n-1;i>=0;i--) { if(s[i]=='W') dp(i,1); else if(s[i]=='L') dp(i,-1); else if(s[i]=='D') dp(i,0); else dp(i,0),dp(i,1),dp(i,-1); } if(f[0][M]) { for(int i=0,j=M;i<n;i++) { s[i]=(g[i][j]+1)["LDW"]; j+=g[i][j]; } printf("%s\n",s); } else { printf("NO\n"); }return 0;}
阅读全文
1 0
- 字符串DP cf803E
- 字符串DP
- 字符串dp。
- DP字符串
- DP+字符串
- DP+字符串
- PKU3356 字符串 DP
- 【dp】字符串比较问题
- ZOJ-1544 字符串DP
- NYOJ - 回文字符串(DP)
- DP-回文字符串匹配
- UVA 字符串区间DP
- [poj3356]字符串dp
- uva 11584 字符串 dp
- uva10739(DP 回文字符串)
- poj 2138 字符串dp
- 字符串类DP Align
- 【bzoj2121】字符串游戏 dp
- 仿支付宝密码输入框
- Crazy Bird
- bzoj 1874 [BeiJing2009 WinterCamp]取石子游戏
- “考虑对方的感受”之案例
- linux下如何使用sftp命令
- 字符串DP cf803E
- Android手势密码实现方案
- 卷积神经网络CNN理论到实践(3)
- mysql5.7.12 源码安装
- JS阻止事件的传播行为
- 网络编程基础
- java 获取本机的详细信息
- Java的位运算符详解实例——与(&)、非(~)、或(|)、异或(^)
- 使用XAMPP3.2.2开局域网访问