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

    Codeforces Round #589 (Div. 2)

    A. Distinct Digits

    • 思路:水题

    • 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;
    }
    
    bool calc(int x){
        bool f[10] = {0};
        while (x > 0){
            if (f[x % 10])
                return false;
            else
                f[x % 10] = true;
            x /= 10;
        }
        return true;
    }
    
    int l, r;
    
    int main(){
    #ifndef ONLINE_JUDGE
        freopen("my_in.txt", "r", stdin);
    #endif
        ios::sync_with_stdio(false);
        cin.tie(0);
        cout.tie(0);
        cin >> l >> r;
        for (int i = l; i <= r; i ++ )
            if (calc(i)){
                cout << i << "
    ";
                return 0;
            }
        cout << "-1
    ";
        return 0;
    }
    

    B. Filling the Grid

    • 思路:模拟

    • 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 = 1e3 + 10;
    const int mod = 1e9 + 7;
    
    int h, w, x, ans;
    int 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 >> h >> w;
        for (int i = 1; i <= h; i ++ ){
            cin >> x;
            for (int j = 1; j <= x; j ++ )
                mp[i][j] = 1;
            mp[i][x + 1] = -1;
        }
        for (int i = 1; i <= w; i ++ ){
            cin >> x;
            for (int j = 1; j <= x; j ++ ){
                if (mp[j][i] == -1){
                    cout << "0
    ";
                    return 0;
                }
                mp[j][i] = 1;
            }
            if (mp[x + 1][i] == 1){
                cout << "0
    ";
                return 0;
            }
            mp[x + 1][i] = 1;
        }
        for (int i = 1; i <= h; i ++ )
            for (int j = 1; j <= w; j ++ )
                if (!mp[i][j])
                    ans ++ ;
        cout << pow_mod(2, ans, mod) << "
    ";
        return 0;
    }
    

    C. Primes and Multiplication

    • 思路:分解质因子搞搞就行

    • 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 ll mod = 1e9 + 7;
    
    ll x, n, ans;
    vector<ll> p;
    
    void divide(ll x){
        for (int i = 2; i * i <= x; i ++ ){
            if (x % i == 0){
                p.push_back(i);
                while (x % i == 0)
                    x /= i;
            }
        }
        if (x > 1)
            p.push_back(x);
    }
    
    int main(){
    #ifndef ONLINE_JUDGE
        freopen("my_in.txt", "r", stdin);
    #endif
        ios::sync_with_stdio(false);
        cin.tie(0);
        cout.tie(0);
        ans = 1;
        cin >> x >> n;
        divide(x);
        for (int i = 0; i < p.size(); i ++ ){
            ll tmp = n;
            while (tmp >= p[i]){
                ans = (ans * pow_mod(p[i], tmp / p[i], mod)) % mod;
                tmp /= p[i];
            }
            ans %= mod;
        }
        cout << ans << "
    ";
        return 0;
    }
    

    D. Complete Tripartite

    • 思路:用三个set搞搞

    • 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 = 1e5 + 10;
    
    int n, m, a, b, cnt1, cnt2, cnt3, tot;
    int col[N];
    bool flag[N];
    vector<set<int> > vec(N);
    set<int> v1, v2, v3;
    
    int main(){
    #ifndef ONLINE_JUDGE
        freopen("my_in.txt", "r", stdin);
    #endif
        ios::sync_with_stdio(false);
        cin.tie(0);
        cout.tie(0);
        tot = 1;
        cin >> n >> m;
        for (int i = 1; i <= m; i ++ ){
            cin >> a >> b;
            vec[a].insert(b);
            vec[b].insert(a);
        }
        for (int i = 1; i <= n; i ++ ){
            if (!col[i]){
                memset(flag, true, sizeof(flag));
                col[i] = tot;
                for (auto j: vec[i])
                    flag[j] = false;
                for (int j = 1; j <= n; j ++ )
                    if (flag[j])
                        col[j] = tot;
                tot ++ ;
            }
        }
        for (int i = 1; i <= n; i ++ ){
            if (col[i] == 1){
                cnt1 ++ ;
                v1.insert(i);
            }
            else if (col[i] == 2){
                cnt2 ++ ;
                v2.insert(i);
            }
            else{
                cnt3 ++ ;
                v3.insert(i);
            }
        }
        if (!cnt1 || !cnt2 || !cnt3 || m != cnt1 * cnt2 + cnt1 * cnt3 + cnt2 * cnt3){
            cout << "-1
    ";
            return 0;
        }
        for (auto u: v1){
            for (auto v: v2){
                if (vec[u].find(v) == vec[u].end()){
                    cout << "-1
    ";
                    return 0;
                }
            }
        }
        for (auto u: v3){
            for (auto v: v2){
                if (vec[u].find(v) == vec[u].end()){
                    cout << "-1
    ";
                    return 0;
                }
            }
        }
        for (auto u: v1){
            for (auto v: v3){
                if (vec[u].find(v) == vec[u].end()){
                    cout << "-1
    ";
                    return 0;
                }
            }
        }
        for (int i = 1; i < n; i ++ )
            cout << col[i] << " ";
        cout << col[n] << "
    ";
        return 0;
    }
    
  • 相关阅读:
    取得元素节点的默认display值
    mass Framework emitter模块 v2
    memset函数详细说明
    八大排序算法总结
    电脑很卡,怎么办?这里帮你解决
    Android APK反编译详解(附图)
    java环境变量配置
    如何使用U盘安装操作系统 安装GHOST XP, xp纯净版
    c# WinForm开发 DataGridView控件的各种操作总结(单元格操作,属性设置)
    Js apply 方法 详解
  • 原文地址:https://www.cnblogs.com/Misuchii/p/11801518.html
Copyright © 2011-2022 走看看