zoukankan      html  css  js  c++  java
  • AtCoder Regular Contest 096

    C - Half and Half

    随便判判

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3  
     4 int main(){
     5     int A, B, C, X, Y, ans = 0;
     6     scanf("%d %d %d %d %d", &A, &B, &C, &X, &Y);
     7     if(C + C <= A + B) {
     8         int Z = min(X, Y);
     9         X -= Z, Y -= Z;
    10         ans += 2 * C * Z;
    11     }
    12     if(C + C <= A) ans += 2 * C * X, X = 0;
    13     if(C + C <= B) ans += 2 * C * Y, Y = 0;
    14     ans += A * X + B * Y;
    15     printf("%d
    ", ans);
    16     return 0;
    17 }
    Aguin

    D - Static Sushi

    讨论下下

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 typedef long long LL;
     4 const int maxn = 1e5 + 10;
     5 LL x[maxn], v[maxn];
     6 multiset<LL> MS;
     7 multiset<LL> :: iterator it;
     8  
     9 int main(){
    10     int N;
    11     LL C;
    12     scanf("%d %lld", &N, &C);
    13     LL tmp = 0, tmp2 = 0, M = 0;
    14     for(int i = 1; i <= N; ++i) scanf("%lld %lld", x + i, v + i);
    15     for(int i = 1; i <= N; ++i){
    16         tmp += v[i];
    17         M = max(M, tmp - x[i]);
    18         MS.insert(tmp - x[i]);
    19     }
    20     for(int i = N; i >= 1; --i){
    21         it = MS.find(tmp - x[i]);
    22         MS.erase(it);
    23         if(MS.empty()) break;
    24         tmp -= v[i];
    25         tmp2 += v[i];
    26         LL MM = *MS.rbegin();
    27         M = max(M, MM + tmp2 - 2 * (C - x[i]));
    28     }
    29  
    30     for(int i = 1; i <= N / 2; ++i) swap(x[i], x[N-i+1]), swap(v[i], v[N-i+1]);
    31     for(int i = 1; i <= N; ++i) x[i] = C - x[i];
    32  
    33     MS.clear();
    34     tmp = 0, tmp2 = 0;
    35     for(int i = 1; i <= N; ++i){
    36         tmp += v[i];
    37         M = max(M, tmp - x[i]);
    38         MS.insert(tmp - x[i]);
    39     }
    40     for(int i = N; i >= 1; --i){
    41         it = MS.find(tmp - x[i]);
    42         MS.erase(it);
    43         if(MS.empty()) break;
    44         tmp -= v[i];
    45         tmp2 += v[i];
    46         LL MM = *MS.rbegin();
    47         M = max(M, MM + tmp2 - 2 * (C - x[i]));
    48     }
    49     printf("%lld
    ", M);
    50     return 0;
    51 }
    Aguin

    E - Everything on It

    看题解的

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 typedef long long LL;
     4 LL way[3003], way2[3003][3003];
     5 LL C[3003][3003], f[3003][3003];
     6  
     7 LL qpow(LL a, LL b, LL mod) {
     8     LL ret = 1LL;
     9     while (b) {
    10         if (b & 1) ret = ret * a % mod;
    11         a = a * a % mod;
    12         b >>= 1;
    13     }
    14     return ret;
    15 }
    16  
    17 LL pow_mod[3003], pow_mod_1[3003];
    18 int main() {
    19     LL N, mod;
    20     scanf("%lld %lld", &N, &mod);
    21     pow_mod[0] = pow_mod_1[0] = 1;
    22     for(int i = 1; i < 3003; ++i) pow_mod[i] = pow_mod[i-1] * 2 % mod;
    23     for(int i = 1; i < 3003; ++i) pow_mod_1[i] = pow_mod_1[i-1] * 2 % (mod - 1);
    24  
    25     for (int i = 0; i < 3003; ++i) C[i][0] = C[i][i] = 1;
    26     for (int i = 2; i < 3003; ++i)
    27         for (int j = 1; j < i; ++j)
    28             C[i][j] = (C[i - 1][j - 1] + C[i - 1][j]) % mod;
    29  
    30     f[0][0] = f[1][0] = f[1][1] = 1;
    31     for (int i = 2; i <= N; ++i) {
    32         f[i][0] = 1;
    33         for (int j = 1; j <= N; ++j) {
    34             f[i][j] = (f[i - 1][j] + f[i - 1][j] * j + f[i - 1][j - 1]) % mod;
    35         }
    36     }
    37  
    38     for (int i = 0; i <= N; ++i) {
    39         for (int j = 0; j <= i; ++j) {
    40             way2[i][j] = f[i][j] * qpow(pow_mod[N - i], j, mod) % mod * qpow(2, pow_mod_1[N - i], mod) % mod;
    41             way[i] = (way[i] + way2[i][j]) % mod;
    42         }
    43     }
    44  
    45     LL ans = 0;
    46     for(int i = 0; i <= N; ++i){
    47         if(i % 2 == 0) ans = (ans + C[N][i] * way[i]) % mod;
    48         else ans = (ans - C[N][i] * way[i] % mod + mod) % mod;
    49     }
    50     printf("%lld
    ", ans);
    51     return 0;
    52 }
    Aguin

    F - Sweet Alchemy

  • 相关阅读:
    2019 | 开启新的堕落生活
    2018博客之星评选,我非常需要您宝贵的一票!♪(・ω・)ノ
    前端开发 2018 回顾
    全栈设计模式套餐MVVM, RESTful, MVC的历史探索
    停止学习框架
    那些被浏览器阻止的模拟事件...
    Just Cause系列游戏品鉴
    GPU硬件加速原理 /转
    快速上手最棒的网格框架ag-Grid
    用户数据验证的正确姿势之assert
  • 原文地址:https://www.cnblogs.com/Aguin/p/8909184.html
Copyright © 2011-2022 走看看