A.
题解:分类讨论。注意题目要求,至少有两种方案。
1 #pragma warning(disable:4996) 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 9 int n, m;10 string s;11 12 int main()13 {14 while (cin >> n) {15 cin >> s;16 int cnt = 0;17 for (int i = 0; i < n; i++) if (s[i] == '?') cnt++;18 if (!cnt) printf("No\n");19 else {20 bool flag1 = false;21 bool flag2 = true;22 for (int i = 1; i < n; i++) {23 if (s[i] == s[i - 1] && s[i] == '?') flag1 = true;24 if (s[i] == s[i - 1] && s[i] != '?') flag2 = false;25 }26 if (!flag2) printf("No\n");27 else {28 if (flag1) printf("Yes\n");29 else {30 bool flag3 = false;31 for (int i = 1; i < n - 1; i++) {32 if (s[i] == '?') {33 if (s[i - 1] == s[i + 1]) flag3 = true;34 }35 }36 if (s[0] == '?' || s[n - 1] == '?') flag3 = true;37 if (!flag3) printf("No\n");38 else printf("Yes\n");39 }40 }41 }42 }43 return 0;44 }
B.
题解:对于同一列的"#"所在行应该是对称的。
1 #pragma warning(disable:4996) 2 #include
C.
题解:分析式子,当 Ej 选定后,i=j-1,所以只需要考虑 Ek ,显然 k 的位置离 j 越远答案越优。
注意:精度。
1 #pragma warning(disable:4996) 2 #include