zoukankan      html  css  js  c++  java
  • Codeforces Round #578 (Div. 2)

    比较简单暴力的一场。

    题目链接: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 }
    View Code

    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 }
    View Code

    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 }
    View Code

    D:

    O(n2)暴力可以过。

    E:

    kmp。

     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;
    22 string ans;
    23 
    24 int kmp(string s) {
    25     vector<int> tmp(s.size());
    26     for (int i = 1; i < s.size(); i++) {
    27         int k = tmp[i - 1];
    28         while (s[k] != s[i]) {
    29             if (!k) {
    30                 k = -1; break;
    31             }
    32             k = tmp[k - 1];
    33         }
    34         tmp[i] = k + 1;
    35     }
    36     return tmp.back();
    37 }
    38 
    39 int main() {
    40     cin >> n;
    41     for (int i = 0; i < n; i++) {
    42         if (!i) {
    43             cin >> ans;
    44             continue;
    45         }
    46         string s; cin >> s; string t = s + '#';
    47         int a = min((int)ans.size(), (int)s.size());
    48         t.insert(t.end(), ans.end() - a, ans.end());
    49         int x = kmp(t);
    50         while (x--) ans.pop_back();
    51         ans.insert(ans.end(), s.begin(), s.end());
    52     }
    53     cout << ans << endl;
    54     return 0;
    55 }
    View Code
  • 相关阅读:
    常用sql(转)
    dos
    VS调试 DataTable (转载)
    JS 对象 数组求并集,交集和差集
    js跳出循环的方法区别(break,continue,return)(转载)
    echarts 曲线平滑配置
    js 动态 批量 创建局部或全局变量 (转载)
    电脑 闪屏 无法启动的原因
    js switch case 判断的是绝对相对===,值和类型都要相等
    无法创建“匿名类型”类型的常量值。此上下文仅支持基元类型或枚举类型。
  • 原文地址:https://www.cnblogs.com/JHSeng/p/11337517.html
Copyright © 2011-2022 走看看