zoukankan      html  css  js  c++  java
  • Codeforces Round #579 (Div. 3)

    打得巨差。题目链接:https://codeforces.com/contest/1203


    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 int q;
    21 int a[300];
    22 
    23 int main() {
    24     scanf("%d", &q);
    25     while (q--) {
    26         int n; scanf("%d", &n);
    27         int p, k;
    28         rep1(i, 1, n) {
    29             scanf("%d", &a[i]);
    30             if (a[i] == 1) k = p = i;
    31         }
    32         if (n == 1) {
    33             puts("YES");
    34             continue;
    35         }
    36         int flag1 = 1, flag2 = 1, last = a[k];
    37         while (1) {
    38             p++;
    39             if (p > n) p = 1;
    40             if (a[p] - last != 1) {
    41                 flag1 = 0; break;
    42             }
    43             last = a[p];
    44             if (a[p] == n) break;
    45         }
    46         last = a[k]; p = k;
    47         while (1) {
    48             p--;
    49             if (!p) p = n;
    50             if (a[p] - last != 1) {
    51                 flag2 = 0; break;
    52             }
    53             last = a[p];
    54             if (a[p] == n) break;
    55         }
    56         if (flag1 || flag2) puts("YES"); else puts("NO");
    57     }
    58     return 0;
    59 }
    View Code

    B:

    因为面积要相等,显然对棍子排序之后最小匹配最大,次小匹配次大,以此类推。

     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 = 500;
    21 int n, a[maxn], t;
    22 
    23 int main() {
    24     scanf("%d", &t);
    25     while (t--) {
    26         scanf("%d", &n); n = n * 4;
    27         for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
    28         sort(a + 1, a + 1 + n);
    29         int p = 1, q = n, area = -1, flag = 1;
    30         while (p < q) {
    31             if (area == -1) area = a[p] * a[q];
    32             else if (a[p]*a[q] != area) {
    33                 flag = 0; break;
    34             }
    35             if (a[p] != a[p + 1] || a[q] != a[q - 1]) {
    36                 flag = 0; break;
    37             }
    38             p += 2, q -= 2;
    39         }
    40         if (flag) puts("YES"); else puts("NO");
    41     }
    42     return 0;
    43 }
    View Code

    C:

    求一遍gcd,答案就是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 const int maxn = 4e5 + 10;
    21 int a[maxn], n;
    22 
    23 int main() {
    24     scanf("%d", &n);
    25     ll gcd = 1, k; scanf("%lld", &k);
    26     gcd = k;
    27     for (int i = 1; i < n; i++) {
    28         ll x; scanf("%lld", &x);
    29         gcd = __gcd(gcd, x);
    30     }
    31     if (gcd == 1) return puts("1"), 0;
    32     int cnt = 0;
    33     for (ll i = 1; i < sqrt(gcd); i++)
    34         if (gcd % i == 0) cnt += 2;
    35     ll tmp = sqrt(gcd);
    36     if (tmp * tmp == gcd) cnt++;
    37     printf("%d
    ", cnt);
    38     return 0;
    39 }
    View Code

    D:

     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 string s, t;
    21 
    22 int main() {
    23     cin >> s >> t;
    24     int len1 = s.size(), len2 = t.size();
    25     vector<int>pre(len2), suf(len2);
    26     int cur = 0;
    27     // pre存放从前往后扫时字符串t中的字母在字符串s中出现的位置
    28     for (int i = 0; cur < len2; i++)
    29         if (s[i] == t[cur])
    30             pre[cur++] = i;
    31     // suf存放从后往前扫时字符串t中字母在字符串s中出现的位置
    32     cur = len2;
    33     for (int i = len1; i--;) {
    34         if (s[i] == t[cur - 1])
    35             suf[--cur] = i;
    36     }
    37     // 这样得到的pre数组是字符串t中的每个字母在字符串s中最早出现的下标
    38     // suf数组同理,得到的是最晚出现的下标
    39     int ans = max(len1 - 1 - pre.back(), suf[0]);
    40     for (int i = 0; i + 1 < len2; i++)
    41         ans = max(ans, suf[i + 1] - pre[i] - 1);
    42     printf("%d
    ", ans);
    43     return 0;
    44 }
    View Code

    E:

    给定n个数,每个数x只能变成x-1,x+1或不变。问经过若干次变化后,最多能选出多少个不同的数。

    贪心。排序后检查每个数并与一个值last进行比较。若x-1>last,则ans++,last=x-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 n, ans = 0;
    21 vector<int>a;
    22 
    23 int main() {
    24     scanf("%d", &n);
    25     for (int i = 1; i <= n; i++) {
    26         int x; scanf("%d", &x);
    27         a.pb(x);
    28     }
    29     sort(a.begin(), a.end());
    30     int last = 0;
    31     for (auto i : a) {
    32         if (i - 1 > last) ans++, last = i - 1;
    33         else if (i - 1 == last) ans++, last = i;
    34         else if (i == last) ans++, last = i + 1;
    35     }
    36     printf("%d
    ", ans);
    37     return 0;
    38 }
    View Code

    F:

  • 相关阅读:
    【软件工程Ⅱ】作业二 |分布式版本控制系统Git的安装与使用
    【软件工程Ⅱ】作业一 |走进计算机
    字符串、文件操作,英文词频统计预处理
    了解大数据的特点、来源与数据呈现方式
    作业五:结对项目-“四则运算”之升级版
    第四次作业:小学四则运算“软件”之初版
    阅读《构建之法》1-5章的感想
    作业二/Git的安装以及使用
    大三学习软件工程感想
    爬取全部的校园新闻
  • 原文地址:https://www.cnblogs.com/JHSeng/p/11349546.html
Copyright © 2011-2022 走看看