Educational Codeforces Round 73 (Rated for Div. 2)

Educational Codeforces Round 73 (Rated for Div. 2)

A. 2048 Game

  • 思路:水题

  • AC代码


#include <algorithm>
#include <iomanip>
#include <iostream>
#include <map>
#include <math.h>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <stdio.h>
#include <string.h>
#include <string>
typedef long long ll;
typedef unsigned long long ull;
using namespace std;

ll mult_mod(ll x, ll y, ll mod){
    return (x * y - (ll)(x / (long double)mod * y + 1e-3) * mod + mod) % mod;
}

ll pow_mod(ll a, ll b, ll p){
    ll res = 1;
    while (b){
        if (b & 1)
            res = mult_mod(res, a, p);
        a = mult_mod(a, a, p);
        b >>= 1;
    }
    return res % p;
}

ll gcd(ll a, ll b){
    return b ? gcd(b, a % b) : a;
}

int q, n;
ll x, sum;
bool flag;

int main(){
#ifndef ONLINE_JUDGE
    freopen("my_in.txt", "r", stdin);
#endif
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    cin >> q;
    while (q -- ){
        sum = 0;
        cin >> n;
        for (int i = 1; i <= n; i ++ ){
            cin >> x;
            if (x <= 2048)
                sum += x;
        }
        if (sum >= 2048)
            cout << "YES\n";
        else
            cout << "NO\n";
    }
    return 0;
}

B. Knights

  • 思路:依次间隔构造即可

  • AC代码


#include <algorithm>
#include <iomanip>
#include <iostream>
#include <map>
#include <math.h>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <stdio.h>
#include <string.h>
#include <string>
typedef long long ll;
typedef unsigned long long ull;
using namespace std;

ll mult_mod(ll x, ll y, ll mod){
    return (x * y - (ll)(x / (long double)mod * y + 1e-3) * mod + mod) % mod;
}

ll pow_mod(ll a, ll b, ll p){
    ll res = 1;
    while (b){
        if (b & 1)
            res = mult_mod(res, a, p);
        a = mult_mod(a, a, p);
        b >>= 1;
    }
    return res % p;
}

ll gcd(ll a, ll b){
    return b ? gcd(b, a % b) : a;
}

const int N = 110;

int n;
char mp[N][N];

int main(){
#ifndef ONLINE_JUDGE
    freopen("my_in.txt", "r", stdin);
#endif
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    cin >> n;
    for (int i = 1; i <= n; i ++ ){
        if (i & 1){
            for (int j = 1; j <= n; j ++ ){
                if (j & 1)
                    mp[i][j] = 'W';
                else
                    mp[i][j] = 'B';
            }
        }
        else{
            for (int j = 1; j <= n; j ++ ){
                if (j & 1)
                    mp[i][j] = 'B';
                else
                    mp[i][j] = 'W';
            }
        }
    }
    for (int i = 1; i <= n; i ++ ){
        for (int j = 1; j <= n; j ++ )
            cout << mp[i][j];
        cout << "\n";
    }
    return 0;
}

C. Perfect Team

  • 思路:思维题

  • AC代码


#include <algorithm>
#include <iomanip>
#include <iostream>
#include <map>
#include <math.h>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <stdio.h>
#include <string.h>
#include <string>
typedef long long ll;
typedef unsigned long long ull;
using namespace std;

ll mult_mod(ll x, ll y, ll mod){
    return (x * y - (ll)(x / (long double)mod * y + 1e-3) * mod + mod) % mod;
}

ll pow_mod(ll a, ll b, ll p){
    ll res = 1;
    while (b){
        if (b & 1)
            res = mult_mod(res, a, p);
        a = mult_mod(a, a, p);
        b >>= 1;
    }
    return res % p;
}

ll gcd(ll a, ll b){
    return b ? gcd(b, a % b) : a;
}

int q, c, m, x, min_;

int main(){
#ifndef ONLINE_JUDGE
    freopen("my_in.txt", "r", stdin);
#endif
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    cin >> q;
    while (q -- ){
        cin >> c >> m >> x;
        min_ = min(c, m);
        if (c - min_ + m - min_ + x < min_)
            cout << x + (c - x + m - x) / 3 << "\n";
        else
            cout << min_ << "\n";
    }
    return 0;
}

D. Make The Fence Great Again

  • 思路:线性dp

  • AC代码


#include <algorithm>
#include <iomanip>
#include <iostream>
#include <map>
#include <math.h>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <stdio.h>
#include <string.h>
#include <string>
typedef long long ll;
typedef unsigned long long ull;
using namespace std;

ll mult_mod(ll x, ll y, ll mod){
    return (x * y - (ll)(x / (long double)mod * y + 1e-3) * mod + mod) % mod;
}

ll pow_mod(ll a, ll b, ll p){
    ll res = 1;
    while (b){
        if (b & 1)
            res = mult_mod(res, a, p);
        a = mult_mod(a, a, p);
        b >>= 1;
    }
    return res % p;
}

ll gcd(ll a, ll b){
    return b ? gcd(b, a % b) : a;
}

const int N = 3e5 + 10;
const ll INF = 2e18;

int q, n;
int a[N], b[N];
ll dp[N][3];

int main(){
#ifndef ONLINE_JUDGE
    freopen("my_in.txt", "r", stdin);
#endif
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    cin >> q;
    while (q -- ){
        cin >> n;
        for (int i = 1; i <= n; i ++ ){
            cin >> a[i] >> b[i];
            dp[i][0] = dp[i][1] = dp[i][2] = INF;
        }
        dp[1][0] = 0, dp[1][1] = b[1], dp[1][2] = 2 * b[1];
        for (int i = 2; i <= n; i ++ )
            for (int j = 0; j < 3; j ++ )
                for (int k = 0; k < 3; k ++ )
                    if (a[i] + k != a[i - 1] + j)
                        dp[i][k] = min(dp[i][k], dp[i - 1][j] + k * b[i]);
        cout << min(dp[n][0], min(dp[n][1], dp[n][2])) << "\n";
    }
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/Misuchii/p/11801524.html