zoukankan      html  css  js  c++  java
  • [Codeforces]Good Bye 2017

    A - New Year and Counting Cards

    #pragma comment(linker, "/STACK:102400000,102400000")
    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    #include<vector>
    #include<algorithm>
    #include<iostream>
    #include<map>
    #include<queue>
    #include<stack>
    #include<string>
    #include<functional>
    #include<math.h>
    //#include<bits/stdc++.h>
    using namespace std;
    typedef long long lint;
    typedef vector<int> VI;
    typedef pair<int, int> PII;
    typedef queue<int> QI;
    
    
    void makedata() {
        freopen("input.txt", "w", stdout);
        fclose(stdout);
    }
    
    int a[256];
    
    int main() {
    #ifndef ONLINE_JUDGE
        freopen("input.txt", "r", stdin);
    #endif
        //makedata();
        std::ios::sync_with_stdio(0), cin.tie(0);
        string s;
        cin >> s;
        int n = s.size();
        for (int i = 0; i < n; i++) a[s[i]]++;
        cout << (a['1'] + a['3'] + a['5'] + a['7'] + a['9'] + a['a'] + a['e'] + a['i'] + a['o'] + a['u']) << endl;
        return 0;
    }
    View Code

    B - New Year and Buggy Bot

    #pragma comment(linker, "/STACK:102400000,102400000")
    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    #include<vector>
    #include<algorithm>
    #include<iostream>
    #include<map>
    #include<queue>
    #include<stack>
    #include<string>
    #include<functional>
    #include<math.h>
    //#include<bits/stdc++.h>
    using namespace std;
    typedef long long lint;
    typedef vector<int> VI;
    typedef pair<int, int> PII;
    typedef queue<int> QI;
    
    
    void makedata() {
        freopen("input.txt", "w", stdout);
        fclose(stdout);
    }
    
    string mp[100], s;
    int d[4], op[200];
    const int dx[4] = {-1, 0, 1, 0};
    const int dy[4] = {0, 1, 0, -1};
    
    int main() {
    #ifndef ONLINE_JUDGE
        freopen("input.txt", "r", stdin);
    #endif
        //makedata();
        std::ios::sync_with_stdio(0), cin.tie(0);
        int n, m;
        cin >> n >> m;
        for (int i = 0; i < n; i++) cin >> mp[i];
        cin >> s;
        int l = s.size();
        for (int i = 0; i < l; i++) op[i] = s[i] - '0';
        int sx, sy;
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                if (mp[i][j] == 'S') {
                    sx = i;
                    sy = j;
                }
            }
        }
        int ans = 0;
        bool f[4];
        for (d[0] = 0; d[0] < 4; d[0]++) {
            for (d[1] = 0; d[1] < 4; d[1]++) {
                for (d[2] = 0; d[2] < 4; d[2]++) {
                    for (d[3] = 0; d[3] < 4; d[3]++) {
                        memset(f, false, sizeof(f));
                        f[d[0]] = true, f[d[1]] = true, f[d[2]] = true, f[d[3]] = true;
                        if (f[0] && f[1] && f[2] && f[3]) {
                            int x = sx, y = sy, j;
                            bool ok = false;
                            for (int i = 0; i < l; i++) {
                                j = d[op[i]];
                                x += dx[j], y += dy[j];
                                if (x < 0 || x >= n || y < 0 || y >= m) break;
                                if (mp[x][y] == '#') break;
                                if (mp[x][y] == 'E') {
                                    ok = true;
                                    break;
                                }
                            }
                            if (ok) ans++;
                        }
                    }
                }
            }
        }
        cout << ans << endl;
        return 0;
    }
    View Code

    C - New Year and Curling

    #pragma comment(linker, "/STACK:102400000,102400000")
    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    #include<vector>
    #include<algorithm>
    #include<iostream>
    #include<map>
    #include<queue>
    #include<stack>
    #include<string>
    #include<functional>
    #include<math.h>
    //#include<bits/stdc++.h>
    using namespace std;
    typedef long long lint;
    typedef vector<int> VI;
    typedef pair<int, int> PII;
    typedef queue<int> QI;
    
    
    void makedata() {
        freopen("input.txt", "w", stdout);
        fclose(stdout);
    }
    
    class SAM {
    private:
        int Last, sz;
        vector<int [26]> ch;
        vector<int> fa, maxlen;
    public:
        void init() {
            sz = 1;
            ch.clear();
        }
        void add(int x) {
            int np = ++sz, p = Last;
            Last = np;
            memset(ch[np], 0, sizeof(ch[np]));
            maxlen[np] = maxlen[p] + 1;
            while (p && !ch[p][x]) ch[p][x] = np, p = fa[p];
            if (!p) fa[np] = 1;
            else {
                int q = ch[p][x];
                if (maxlen[p] + 1 == maxlen[q]) fa[np] = q;
                else {
                    int nq = ++sz;
                    memcpy(ch[nq], ch[q], sizeof(ch[q]));
                    maxlen[nq] = maxlen[p] + 1;
                    fa[nq] = fa[q];
                    fa[q] = fa[np] = nq;
                    while (p && ch[p][x] == q) ch[p][x] = nq, p = fa[p];
                }
            }
        }
    };
    double x[2000], y[2000];
    int main() {
    #ifndef ONLINE_JUDGE
        freopen("input.txt", "r", stdin);
    #endif
        //makedata();
        //std::ios::sync_with_stdio(0), cin.tie(0);
        int n;
        double r, h;
        //cin >> n >> r;
        scanf("%d%lf", &n, &r);
        for (int i = 0; i < n; i++) {
            //cin >> x[i];
            scanf("%lf", &x[i]);
            y[i] = r;
            for (int j = 0; j < i; j++) {
                if (fabs(x[i] - x[j]) <= 2 * r) {
                    h = sqrt(4 * r * r - (x[i] - x[j]) * (x[i] - x[j])) + y[j];
                    if (y[i] < h) y[i] = h;
                }
            }
        }
        for (int i = 0; i < n; i++) printf("%.8lf ", y[i]); //cout << y[i] << ' ';
        return 0;
    }
    View Code

    D - New Year and Arbitrary Arrangement

    #include <bits/stdc++.h>
    using ll = long long;
    using ld = long double;
    using namespace std;
    
    const int MOD = 1000 * 1000 * 1000 + 7;
    
    ll pw(ll a, ll b = MOD - 2) {
        if (b == 0) {
            return 1;
        }
    
        ll v = pw(a, b / 2);
        v = (v * v) % MOD;
    
        if (b & 1) {
            v = (v * a) % MOD;
        }
    
        return v;
    }
    
    constexpr int MAXN = 1001;
    
    ll f[MAXN][MAXN];
    
    int main() {
    #ifdef PAUNSVOKNO
        freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout);
    #endif
        ios_base::sync_with_stdio(false); cout.setf(ios::fixed); cout.precision(20); cout.tie(nullptr); cin.tie(nullptr);
        ll k, pa, pb;
        cin >> k >> pa >> pb;
        ll s = pw(pa + pb);
        pa = (pa * s) % MOD;
        pb = (pb * s) % MOD;
    
        ll ans = 0;
    
        f[1][0] = 1;
    
        ll last = (1 - pa + MOD) % MOD;
        last = pw(last, MOD - 2);
        last = (last - 1 + MOD) % MOD;
    
        for (int i = 1; i <= k; ++i) {
            for (int j = 0; j <= k; ++j) {
                if (i + j >= k) {
                    ll val = j + i + last;
                    ans = (ans + f[i][j] * val) % MOD;
                } else {
                    f[i + 1][j] = (f[i + 1][j] + f[i][j] * pa) % MOD;
                    f[i][j + i] = (f[i][j + i] + f[i][j] * pb) % MOD;
                }
            }
        }
    
        cout << ans << "
    ";
    }
    View Code

    E - New Year and Entity Enumeration

    #include<bits/stdc++.h>
    #define ll long long
    #define mod 1000000007
    using namespace std;
    
    ll m,n,c[1010][1010],f[1010],b[1010],x,ans=1;
    map<ll,ll>mp;
    
    int main(){
        for (cin>>m>>n;n--;)
            for (int i=0;i<m;++i)
                scanf("%1lld",&x), b[i]|=x<<n;
        for (int i=0;i<m;++i) ++mp[b[i]];
        for (int i=0;i<=m;++i)
            for (int j=0;j<=i;++j)
                c[i][j]= j? (c[i-1][j-1]+c[i-1][j])%mod: 1;
        f[0]=f[1]=1;
        for (int i=2;i<=m;++i)
            for (int j=0;j<i;++j)
                f[i]=(f[i]+c[i-1][j]*f[j])%mod;
        for (auto o:mp) ans=(ans*f[o.second])%mod;
        cout<<ans;
    }
    View Code

    F - New Year and Rainbow Roads

    #pragma comment(linker, "/STACK:102400000,102400000")
    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    #include<vector>
    #include<algorithm>
    #include<iostream>
    #include<map>
    #include<queue>
    #include<stack>
    #include<string>
    #include<functional>
    #include<math.h>
    //#include<bits/stdc++.h>
    using namespace std;
    typedef long long lint;
    typedef vector<int> VI;
    typedef pair<int, int> PII;
    typedef queue<int> QI;
    
    
    void makedata() {
        freopen("input.txt", "w", stdout);
        fclose(stdout);
    }
    
    int main() {
    #ifndef ONLINE_JUDGE
        freopen("input.txt", "r", stdin);
    #endif
        //makedata();
        std::ios::sync_with_stdio(0), cin.tie(0);
        int n;
        char ch;
        lint pb = 0, pr = 0, pg = 0, mr = 0, mb = 0, ans = 0, x;
        cin >> n;
        for (int i = 0; i < n; i++) {
            cin >> x >> ch;
            if (ch == 'R' || ch == 'G') {
                if (pr) {
                    ans += x - pr;
                    mr = max(mr, x - pr);
                }
                pr = x;
            }
            if (ch == 'B' || ch == 'G') {
                if (pb) {
                    ans += x - pb;
                    mb = max(mb, x - pb);
                }
                pb = x;
            }
            if (ch == 'G') {
                if (pg) ans += min(0LL, x - pg - mr - mb);
                pg = x;
                mr = mb = 0;
            }
        }
        cout << ans << endl;
        return 0;
    }
    View Code

    G - New Year and Original Order

    #pragma comment(linker, "/STACK:102400000,102400000")
    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    #include<vector>
    #include<algorithm>
    #include<iostream>
    #include<map>
    #include<queue>
    #include<stack>
    #include<string>
    #include<functional>
    #include<math.h>
    //#include<bits/stdc++.h>
    using namespace std;
    typedef long long lint;
    typedef vector<int> VI;
    typedef pair<int, int> PII;
    typedef queue<int> QI;
    
    
    void makedata() {
        freopen("input.txt", "w", stdout);
        fclose(stdout);
    }
    
    const int mod = 1000000007;
    lint dp[800][800][10][2];
    string s;
    
    int main() {
    #ifndef ONLINE_JUDGE
        freopen("input.txt", "r", stdin);
    #endif
        //makedata();
        std::ios::sync_with_stdio(0), cin.tie(0);
        cin >> s;
        int n = s.size();
        reverse(s.begin(), s.end());
        memset(dp, 0, sizeof(dp));
        for (int i = 1; i < 10; i++) dp[0][0][i][1] = 1;
        for (int i = 0; i < n; i++) {
            for (int j = 0; j <= i; j++) {
                for (int k = 1; k < 10; k++) {
                    for (int l = 0; l < 2; l++) {
                        for (int p = 0; p < 10; p++) {
                            (dp[i + 1][j + (p >= k)][k][(s[i] - '0' > p) || (l && (s[i] - '0' == p))] += dp[i][j][k][l]) %= mod;
                        }
                    }
                }
            }
        }
        lint ans = 0;
        for (int i = 1; i < 10; i++) {
            lint t = 1;
            for (int j = 1; j <= n; j++, t = (t * 10 + 1) % mod) ans += dp[n][j][i][1] * t, ans %= mod;
        }
        cout << ans << endl;
        return 0;
    }
    View Code

    H - New Year and Boolean Bridges

    #include<bits/stdc++.h>
    #define N 50
    #define fr(i,n) for(int i=1;i<=n;i++)
    using namespace std;
    int n,i,j,x,S,an,nv,id,to[N],c[N],b[N],F[N],sz[N];bool v[N][N];
    char s[N][N];
    int gf(int x){return F[x]==x?x:F[x]=gf(F[x]);}
    void uni(int x,int y){
        x=gf(x);y=gf(y);
        if(x!=y)F[x]=y,sz[y]+=sz[x];
    }
    int main(){
        scanf("%d",&n);
        fr(i,n)F[i]=i,sz[i]=1;
        fr(i,n){
            scanf("%s",s[i]+1);
            fr(j,n)if(i!=j)
                if(s[i][j]=='A')uni(i,j);
        }
        fr(i,n)if(gf(i)==i&&sz[i]>1)to[i]=++id;
        fr(i,n)fr(j,n)if(gf(i)==gf(j)&&s[i][j]=='X')return puts("-1"),0;
        fr(i,n)fr(j,n)if(s[i][j]=='X')v[to[gf(i)]][to[gf(j)]]=1;
        fr(i,id)b[i]=i;an=n;
        fr(T,9999){
            random_shuffle(b+1,b+id+1);nv=0;
            fr(i,id){
                x=b[i];S=0;
                fr(j,id)if(v[x][j])S|=1<<c[j];
                for(j=1;;j++)if(!(S>>j&1)){
                    c[x]=j;
                    break;
                }
                nv=max(nv,c[x]);
            }
            fr(i,id)c[i]=0;
            an=min(an,nv);
        }
        printf("%d
    ",n-1+an);
    }
    View Code
  • 相关阅读:
    函数-列表生成式
    函数-闭包
    函数-参数
    函数-装饰器
    函数-函数递归
    函数-高阶函数
    函数-命名空间
    函数-匿名函数
    模块-shutil
    在 Android 5.1.1 执行 remount system failed 解决方法
  • 原文地址:https://www.cnblogs.com/dramstadt/p/8149716.html
Copyright © 2011-2022 走看看