比较简单暴力的一场。
题目链接:http://codeforces.com/contest/1200
A:
水题。

1 /* basic header */
2 #include <bits/stdc++.h>
3 /* define */
4 #define ll long long
5 #define dou double
6 #define pb emplace_back
7 #define mp make_pair
8 #define sot(a,b) sort(a+1,a+1+b)
9 #define rep1(i,a,b) for(int i=a;i<=b;++i)
10 #define rep0(i,a,b) for(int i=a;i<b;++i)
11 #define eps 1e-8
12 #define int_inf 0x3f3f3f3f
13 #define ll_inf 0x7f7f7f7f7f7f7f7f
14 #define lson (curpos<<1)
15 #define rson (curpos<<1|1)
16 /* namespace */
17 using namespace std;
18 /* header end */
19
20 const int maxn = 1e5 + 10;
21 int n, a[20];
22 char s[maxn];
23
24 int main() {
25 scanf("%d", &n);
26 scanf("%s", s + 1);
27 for (int i = 1; i <= n; i++) {
28 if (s[i] == 'L') {
29 for (int i = 0; i < 10; i++)
30 if (!a[i]) {
31 a[i] = 1; break;
32 }
33 } else if (s[i] == 'R') {
34 for (int i = 9; i >= 0; i--)
35 if (!a[i]) {
36 a[i] = 1; break;
37 }
38 } else a[s[i] - '0'] = 0;
39 }
40 for (int i = 0; i < 10; i++) printf("%d", a[i]);
41 puts("");
42 return 0;
43 }
B:
贪心,注意h[i]<h[i+1]时也可以攒石头。

1 /* basic header */
2 #include <bits/stdc++.h>
3 /* define */
4 #define ll long long
5 #define dou double
6 #define pb emplace_back
7 #define mp make_pair
8 #define sot(a,b) sort(a+1,a+1+b)
9 #define rep1(i,a,b) for(int i=a;i<=b;++i)
10 #define rep0(i,a,b) for(int i=a;i<b;++i)
11 #define eps 1e-8
12 #define int_inf 0x3f3f3f3f
13 #define ll_inf 0x7f7f7f7f7f7f7f7f
14 #define lson (curpos<<1)
15 #define rson (curpos<<1|1)
16 /* namespace */
17 using namespace std;
18 /* header end */
19
20 int main() {
21 int t; scanf("%d", &t);
22 while (t--) {
23 ll n, m, k; scanf("%lld%lld%lld", &n, &m, &k);
24 ll h[n + 1], solved = 1;
25 for (int i = 1; i <= n; i++) scanf("%lld", &h[i]);
26 for (int i = 1; i < n; i++) {
27 if (h[i] >= h[i + 1]) {
28 m += h[i] - h[i + 1];
29 h[i] = h[i + 1];
30 m += min(h[i], k);
31 } else {
32 if (h[i + 1] - h[i] - m > k) {
33 solved = 0; break;
34 } else {
35 if (h[i + 1] - h[i] <= k)
36 m += min(h[i], h[i] - (h[i + 1] - k));
37 else
38 m -= h[i + 1] - h[i] - k;
39 }
40 }
41 }
42 if (solved) puts("YES"); else puts("NO");
43 }
44 return 0;
45 }
C:
求个gcd就看出来了。

1 /* basic header */
2 #include <bits/stdc++.h>
3 /* define */
4 #define ll long long
5 #define dou double
6 #define pb emplace_back
7 #define mp make_pair
8 #define sot(a,b) sort(a+1,a+1+b)
9 #define rep1(i,a,b) for(int i=a;i<=b;++i)
10 #define rep0(i,a,b) for(int i=a;i<b;++i)
11 #define eps 1e-8
12 #define int_inf 0x3f3f3f3f
13 #define ll_inf 0x7f7f7f7f7f7f7f7f
14 #define lson (curpos<<1)
15 #define rson (curpos<<1|1)
16 /* namespace */
17 using namespace std;
18 /* header end */
19
20 ll n, m;
21 int q;
22
23 int main() {
24 scanf("%lld%lld%d", &n, &m, &q);
25 ll gcd = __gcd(n, m);
26 ll awall = n / gcd, bwall = m / gcd;
27 while (q--) {
28 ll x, y, p, q; scanf("%lld%lld%lld%lld", &x, &y, &p, &q);
29 ll tmpa, tmpb;
30 if (x == 1)
31 tmpa = y % awall ? y / awall : y / awall - 1;
32 else
33 tmpa = y % bwall ? y / bwall : y / bwall - 1;
34 if (p == 1)
35 tmpb = q % awall ? q / awall : q / awall - 1;
36 else
37 tmpb = q % bwall ? q / bwall : q / bwall - 1;
38 if (tmpa == tmpb) puts("YES"); else puts("NO");
39 }
40 return 0;
41 }
