803E
来源:互联网 发布:ntfs for mac反激活 编辑:程序博客网 时间:2024/06/06 02:32
#include<iostream>#include<vector>#include<string>#include<set>#include<map>#include<algorithm>#include<queue>#include<list>#include<stack>#include<cstdio>#include<fstream>#include<numeric>#include<functional>#include<utility>#include<memory>using namespace std;using namespace placeholders;map<int, map<int, bool>> dp;int getpoints(char t){if (t == 'W') return 1;if (t == 'D') return 0;return -1;}bool solve(int i, int k, int n, int points, string &s){if (dp[i].find(points) != dp[i].end()) return dp[i][points];if (points == k || points == -k){dp[i][points] = (i == n);return dp[i][points];}if (i == n){dp[i][points] = (points == k || points == -k);return dp[i][points];}if (s[i] != '?'){dp[i][points] = solve(i + 1, k, n, points + getpoints(s[i]), s);return dp[i][points];}else{if (solve(i + 1, k, n, points + 1, s)){s[i] = 'W';dp[i][points] = true;return true;}if (solve(i + 1, k, n, points - 1, s)){s[i] = 'L';dp[i][points] = true;return true;}if (solve(i + 1, k, n, points, s)){s[i] = 'D';dp[i][points] = true;return true;}}dp[i][points] = false;return dp[i][points];}int main(){int n, k;string s;while (cin >> n >> k >> s){dp.clear();if (solve(0, k, n, 0, s)) cout << s << endl;else cout << "NO" << endl;}return 0;}
0 0