zoukankan      html  css  js  c++  java
  • Codeforces Round #552(div.3)

    Problem: http://codeforces.com/contest/1154

     手速场,暴力场


    A: 

     1 /* basic header */
     2 #include <iostream>
     3 #include <cstdio>
     4 #include <cstdlib>
     5 #include <string>
     6 #include <cstring>
     7 #include <cmath>
     8 #include <cstdint>
     9 #include <climits>
    10 #include <float.h>
    11 /* STL */
    12 #include <vector>
    13 #include <set>
    14 #include <map>
    15 #include <queue>
    16 #include <stack>
    17 #include <algorithm>
    18 #include <array>
    19 #include <iterator>
    20 /* define */
    21 #define ll long long
    22 #define dou double
    23 #define pb emplace_back
    24 #define mp make_pair
    25 #define fir first
    26 #define sec second
    27 #define init(a,b) fill(begin(a),end(a),b)
    28 #define sot(a,b) sort(a+1,a+1+b)
    29 #define rep1(i,a,b) for(int i=a;i<=b;++i)
    30 #define rep0(i,a,b) for(int i=a;i<b;++i)
    31 #define repa(i,a) for(auto &i:a)
    32 #define eps 1e-8
    33 #define int_inf 0x3f3f3f3f
    34 #define ll_inf 0x7f7f7f7f7f7f7f7f
    35 #define lson curPos<<1
    36 #define rson curPos<<1|1
    37 /* namespace */
    38 using namespace std;
    39 /* header end */
    40 
    41 int a[5];
    42 
    43 int main()
    44 {
    45     cin >> a[1] >> a[2] >> a[3] >> a[4];
    46     sot(a, 4);
    47     cout << a[4] - a[1] << " " << a[4] - a[2] << " " << a[4] - a[3] << endl;
    48     return 0;
    49 }
    View Code

    B: 一开始看错题了

     1 /* basic header */
     2 #include <iostream>
     3 #include <cstdio>
     4 #include <cstdlib>
     5 #include <string>
     6 #include <cstring>
     7 #include <cmath>
     8 #include <cstdint>
     9 #include <climits>
    10 #include <float.h>
    11 /* STL */
    12 #include <vector>
    13 #include <set>
    14 #include <map>
    15 #include <queue>
    16 #include <stack>
    17 #include <algorithm>
    18 #include <array>
    19 #include <iterator>
    20 /* define */
    21 #define ll long long
    22 #define dou double
    23 #define pb emplace_back
    24 #define mp make_pair
    25 #define fir first
    26 #define sec second
    27 #define init(a,b) fill(begin(a),end(a),b)
    28 #define sot(a,b) sort(a+1,a+1+b)
    29 #define rep1(i,a,b) for(int i=a;i<=b;++i)
    30 #define rep0(i,a,b) for(int i=a;i<b;++i)
    31 #define repa(i,a) for(auto &i:a)
    32 #define eps 1e-8
    33 #define int_inf 0x3f3f3f3f
    34 #define ll_inf 0x7f7f7f7f7f7f7f7f
    35 #define lson curPos<<1
    36 #define rson curPos<<1|1
    37 /* namespace */
    38 using namespace std;
    39 /* header end */
    40 
    41 set<int>s;
    42 int n, x;
    43 
    44 int main()
    45 {
    46     s.clear();
    47     cin >> n;
    48     rep1(i, 1, n)
    49     {
    50         cin >> x;
    51         s.insert(x);
    52     }
    53     if (s.size() == 1) puts("0");
    54     else if (s.size() == 2)
    55     {
    56         int b[2], p = 0;
    57         for (auto i : s) b[p++] = i;
    58         sort(b, b + 2);
    59         if ((b[1] - b[0]) % 2 == 0)
    60             cout << (b[1] - b[0]) / 2 << endl;
    61         else
    62             cout << b[1] - b[0] << endl;
    63     }
    64     else if (s.size() >= 4) puts("-1");
    65     else
    66     {
    67         int b[3], p = 0;
    68         for (auto i : s) b[p++] = i;
    69         sort(b, b + 3);
    70         if (b[2] - b[1] == b[1] - b[0]) cout << b[1] - b[0] << endl;
    71         else puts("-1");
    72     }
    73     return 0;
    74 }
    View Code

    C: 

     1 /* basic header */
     2 #include <iostream>
     3 #include <cstdio>
     4 #include <cstdlib>
     5 #include <string>
     6 #include <cstring>
     7 #include <cmath>
     8 #include <cstdint>
     9 #include <climits>
    10 #include <float.h>
    11 /* STL */
    12 #include <vector>
    13 #include <set>
    14 #include <map>
    15 #include <queue>
    16 #include <stack>
    17 #include <algorithm>
    18 #include <array>
    19 #include <iterator>
    20 /* define */
    21 #define ll long long
    22 #define dou double
    23 #define pb emplace_back
    24 #define mp make_pair
    25 #define fir first
    26 #define sec second
    27 #define init(a,b) fill(begin(a),end(a),b)
    28 #define sot(a,b) sort(a+1,a+1+b)
    29 #define rep1(i,a,b) for(int i=a;i<=b;++i)
    30 #define rep0(i,a,b) for(int i=a;i<b;++i)
    31 #define repa(i,a) for(auto &i:a)
    32 #define eps 1e-8
    33 #define int_inf 0x3f3f3f3f
    34 #define ll_inf 0x7f7f7f7f7f7f7f7f
    35 #define lson curPos<<1
    36 #define rson curPos<<1|1
    37 /* namespace */
    38 using namespace std;
    39 /* header end */
    40 
    41 int a, b, c, ans = 0;
    42 
    43 int main()
    44 {
    45     scanf("%d%d%d", &a, &b, &c);
    46     int week = min(a / 3, min(b / 2, c / 2));
    47     a -= week * 3, b -= week * 2, c -= week * 2, ans += week * 7;
    48     int pre = ans;
    49     rep1(i, 1, 7)
    50     {
    51         int x = a, y = b, z = c, tmp = pre;
    52         rep1(j, i, i + 6)
    53         {
    54             int curr = j > 7 ? j - 7 : j;
    55             if (curr == 1 || curr == 4 || curr == 7)
    56             {
    57                 if (x)x--, tmp++; else break;
    58             }
    59             else if (curr == 2 || curr == 6)
    60             {
    61                 if (y) y--, tmp++; else break;
    62             }
    63             else if (curr == 3 || curr == 5)
    64             {
    65                 if (z) z--, tmp++; else break;
    66             }
    67         }
    68         ans = max(ans, tmp);
    69     }
    70     printf("%d
    ", ans);
    71     return 0;
    72 }
    View Code

    D:

     1 /* basic header */
     2 #include <iostream>
     3 #include <cstdio>
     4 #include <cstdlib>
     5 #include <string>
     6 #include <cstring>
     7 #include <cmath>
     8 #include <cstdint>
     9 #include <climits>
    10 #include <float.h>
    11 /* STL */
    12 #include <vector>
    13 #include <set>
    14 #include <map>
    15 #include <queue>
    16 #include <stack>
    17 #include <algorithm>
    18 #include <array>
    19 #include <iterator>
    20 /* define */
    21 #define ll long long
    22 #define dou double
    23 #define pb emplace_back
    24 #define mp make_pair
    25 #define fir first
    26 #define sec second
    27 #define init(a,b) fill(begin(a),end(a),b)
    28 #define sot(a,b) sort(a+1,a+1+b)
    29 #define rep1(i,a,b) for(int i=a;i<=b;++i)
    30 #define rep0(i,a,b) for(int i=a;i<b;++i)
    31 #define repa(i,a) for(auto &i:a)
    32 #define eps 1e-8
    33 #define int_inf 0x3f3f3f3f
    34 #define ll_inf 0x7f7f7f7f7f7f7f7f
    35 #define lson curPos<<1
    36 #define rson curPos<<1|1
    37 /* namespace */
    38 using namespace std;
    39 /* header end */
    40 
    41 int n, a, b;
    42 
    43 int main()
    44 {
    45     scanf("%d%d%d", &n, &a, &b);
    46     int ans = 0, tmp = b;
    47     rep1(i, 1, n)
    48     {
    49         int x; scanf("%d", &x);
    50         if (x == 1 && a && tmp > b)
    51         {
    52             ++ans, --a, b = min(++b, tmp);
    53         }
    54         else if (b) ++ans, --b;
    55         else if (a) ++ans, --a;
    56         else break;
    57     }
    58     printf("%d
    ", ans);
    59     return 0;
    60 }
    View Code

    E:

     1 /* basic header */
     2 #include <iostream>
     3 #include <cstdio>
     4 #include <cstdlib>
     5 #include <string>
     6 #include <cstring>
     7 #include <cmath>
     8 #include <cstdint>
     9 #include <climits>
    10 #include <float.h>
    11 /* STL */
    12 #include <vector>
    13 #include <set>
    14 #include <map>
    15 #include <queue>
    16 #include <stack>
    17 #include <algorithm>
    18 #include <array>
    19 #include <iterator>
    20 /* define */
    21 #define ll long long
    22 #define dou double
    23 #define pb emplace_back
    24 #define mp make_pair
    25 #define fir first
    26 #define sec second
    27 #define init(a,b) fill(begin(a),end(a),b)
    28 #define sot(a,b) sort(a+1,a+1+b)
    29 #define rep1(i,a,b) for(int i=a;i<=b;++i)
    30 #define rep0(i,a,b) for(int i=a;i<b;++i)
    31 #define repa(i,a) for(auto &i:a)
    32 #define eps 1e-8
    33 #define int_inf 0x3f3f3f3f
    34 #define ll_inf 0x7f7f7f7f7f7f7f7f
    35 /* namespace */
    36 using namespace std;
    37 /* header end */
    38 
    39 const int maxn = 2e5 + 10;
    40 int n, k, p = 1, a[maxn], l[maxn], r[maxn], ans[maxn];
    41 priority_queue<int>q;
    42 
    43 int main()
    44 {
    45     scanf("%d%d", &n, &k);
    46     l[0] = r[0] = 0; l[n + 1] = r[n + 1] = n + 1;
    47     rep1(i, 1, n)
    48     {
    49         int x; scanf("%d", &x);
    50         q.push(x);
    51         a[x] = i, l[i] = i - 1, r[i] = i + 1;
    52     }
    53     while (!q.empty() && p++)
    54     {
    55         while (!q.empty() && ans[a[q.top()]]) q.pop();
    56         if (q.empty()) break;
    57         int pos = a[q.top()]; q.pop();
    58         ans[pos] = p % 2 + 1;
    59         int lpos = pos, rpos = pos;
    60         rep1(i, 1, k)
    61         {
    62             lpos = l[lpos], rpos = r[rpos];
    63             ans[lpos] = ans[rpos] = p % 2 + 1;
    64         }
    65         l[r[rpos]] = l[lpos], r[l[lpos]] = r[rpos];
    66     }
    67     rep1(i, 1, n) printf("%d", ans[i]);
    68     puts("");
    69     return 0;
    70 }
    View Code

    F: 简单dp。注释掉的部分是自己写的,但是过不了。看了一下大佬的思路

     1 /* basic header */
     2 #include <iostream>
     3 #include <cstdio>
     4 #include <cstdlib>
     5 #include <string>
     6 #include <cstring>
     7 #include <cmath>
     8 #include <cstdint>
     9 #include <climits>
    10 #include <float.h>
    11 /* STL */
    12 #include <vector>
    13 #include <set>
    14 #include <map>
    15 #include <queue>
    16 #include <stack>
    17 #include <algorithm>
    18 #include <array>
    19 #include <iterator>
    20 /* define */
    21 #define ll long long
    22 #define dou double
    23 #define pb emplace_back
    24 #define mp make_pair
    25 #define fir first
    26 #define sec second
    27 #define init(a,b) fill(begin(a),end(a),b)
    28 #define sot(a,b) sort(a+1,a+1+b)
    29 #define rep1(i,a,b) for(int i=a;i<=b;++i)
    30 #define rep0(i,a,b) for(int i=a;i<b;++i)
    31 #define repa(i,a) for(auto &i:a)
    32 #define eps 1e-8
    33 #define int_inf 0x3f3f3f3f
    34 #define ll_inf 0x7f7f7f7f7f7f7f7f
    35 #define lson curPos<<1
    36 #define rson curPos<<1|1
    37 /* namespace */
    38 using namespace std;
    39 /* header end */
    40 
    41 const int maxn = 2e3 + 10;
    42 const int maxm = 2e5 + 10;
    43 int n, m, k, a[maxm], off[maxn], dp[maxn], s[maxn];
    44 
    45 int calc(int num)
    46 {
    47     // if (num > k) return 0;
    48     // ll ret = 1e17;
    49     // rep1(i, 1, k)
    50     // {
    51     //     if (!off[i]) continue;
    52     //     ret = min(ret, calc(num - i) + s[num] - s[num - i + off[i]]);
    53     // }
    54     // ret = min(ret, s[num]);
    55     // return dp[num] = ret;
    56     if (num > k) return 0;
    57     int &ans = dp[num];
    58     if (~ans) return ans;
    59     ans = int_inf;
    60     ans = min(ans, calc(num + 1) + a[num]);
    61     rep1(i, 1, k)
    62     {
    63         int x = i, y = off[i];
    64         if (!y) continue;
    65         if (num + x <= k + 1)
    66             ans = min(ans, calc(num + x) + s[num + x - 1] - s[num + y - 1]);
    67     }
    68     return ans;
    69 }
    70 
    71 int main()
    72 {
    73     scanf("%d%d%d", &n, &m, &k);
    74     rep1(i, 1, n) scanf("%d", &a[i]);
    75     sot(a, n);
    76     rep1(i, 1, k)
    77     {
    78         dp[i] = -1;
    79         s[i] = s[i - 1] + a[i];
    80     }
    81     rep1(i, 1, m)
    82     {
    83         int num, y; scanf("%d%d", &num, &y);
    84         if (num > k) continue;
    85         off[num] = max(off[num], y);
    86     }
    87     printf("%d
    ", calc(1));
    88     return 0;
    89 }
    View Code

    G: 枚举gcd

     1 /* basic header */
     2 #include <iostream>
     3 #include <cstdio>
     4 #include <cstdlib>
     5 #include <string>
     6 #include <cstring>
     7 #include <cmath>
     8 #include <cstdint>
     9 #include <climits>
    10 #include <float.h>
    11 /* STL */
    12 #include <vector>
    13 #include <set>
    14 #include <map>
    15 #include <queue>
    16 #include <stack>
    17 #include <algorithm>
    18 #include <array>
    19 #include <iterator>
    20 /* define */
    21 #define ll long long
    22 #define dou double
    23 #define pb emplace_back
    24 #define mp make_pair
    25 #define fir first
    26 #define sec second
    27 #define init(a,b) fill(begin(a),end(a),b)
    28 #define sot(a,b) sort(a+1,a+1+b)
    29 #define rep1(i,a,b) for(int i=a;i<=b;++i)
    30 #define rep0(i,a,b) for(int i=a;i<b;++i)
    31 #define repa(i,a) for(auto &i:a)
    32 #define eps 1e-8
    33 #define int_inf 0x3f3f3f3f
    34 #define ll_inf 0x7f7f7f7f7f7f7f7f
    35 #define lson curPos<<1
    36 #define rson curPos<<1|1
    37 /* namespace */
    38 using namespace std;
    39 /* header end */
    40 
    41 const int maxn = 1e7 + 10;
    42 int n, vis[maxn], qu[5];
    43 ll ansLcm = ll_inf, a, b;
    44 
    45 int main()
    46 {
    47     scanf("%d", &n);
    48     rep1(i, 1, n)
    49     {
    50         int x; scanf("%d", &x);
    51         if (vis[x])
    52         {
    53             if (ansLcm > x)
    54             {
    55                 ansLcm = x;
    56                 a = vis[x];
    57                 b = i;
    58             }
    59         }
    60         else vis[x] = i;
    61     }
    62     rep1(i, 1, 1e7)
    63     {
    64         int len = 0;
    65         for (int j = i; j <= 1e7; j += i)
    66         {
    67             if (vis[j]) qu[len++] = j;
    68             if (len == 2) break;
    69         }
    70         if (len == 2)
    71         {
    72             ll num1 = qu[0], num2 = qu[1], tmpLcm = num1 * num2 / i;
    73             if (tmpLcm < ansLcm)
    74             {
    75                 ansLcm = tmpLcm, a = vis[num1], b = vis[num2];
    76             }
    77         }
    78     }
    79     if (a > b) swap(a, b);
    80     printf("%lld %lld
    ", a, b);
    81     return 0;
    82 }
    View Code
  • 相关阅读:
    html页面自适应宽度
    Angularjs Select获取数组下标
    spring boot集成mybatis分页插件
    百度分享实现https
    nginx自定义错误页面
    nginx代理tomcat
    Nginx配置SSL证书
    Nginx安装
    xmlns:amq="http://activemq.apache.org/schema/core"报错
    ActiveMQ
  • 原文地址:https://www.cnblogs.com/JHSeng/p/10726979.html
Copyright © 2011-2022 走看看