zoukankan      html  css  js  c++  java
  • CCPC2017

    A.

    乱搞

    #include<cstdio>
    #include<algorithm>
    #include<cstdlib>
    #include<cstring>
    #include<iostream>
    #include<cctype>
    #include<cmath>
    using namespace std;
    int T;
    string S;
    int len;
    int u[2][30];
    int mx_u[2];
    int main()
    {
        cin >> T;
        while (T--)
        {
            mx_u[0] = mx_u[1] = 0;
            memset(u, 0, sizeof(u));
            cin >> S;
            len = S.length();
            for (int i = 0; i < len; ++i)
            {
                ++u[i & 1][S[i] - 'a'];
                if (u[i & 1][S[i] - 'a'] > mx_u[i & 1])
                {
                    mx_u[i & 1] = u[i & 1][S[i] - 'a'];
                }
            }
            cout << (len - mx_u[0] - mx_u[1]) << endl;
        }
        return 0;
    }
    

    B.

    数论乱搞
    (O(2^m)) 变成 (O(m)) 需要稍加思考

    #include<cstdio>
    #include<algorithm>
    #include<cstdlib>
    #include<cstring>
    #include<iostream>
    #include<cctype>
    #include<cmath>
    using namespace std;
    const int MOD = 998244353;
    int T, m;
    long long q, p;
    long long qp(long long bs, int pw)
    {
        long long ret = 1;
        while (pw)
        {
            if (pw & 1)
            {
                ret *= bs;
                ret %= MOD;
            }
            bs *= bs;
            bs %= MOD;
            pw >>= 1;
        }
        return ret;
    }
    long long inv(int x)
    {
        return qp(x, MOD - 2);
    }
    long long ans;
    long long n;
    int main()
    {
        ios::sync_with_stdio(false);
        cin >> T;
        while (T--)
        {
            ans = 1;
            n = 1;
            cin >> m;
            for (int i = 1; i <= m; ++i) {
                cin >> p >> q;
                n *= qp(p, q);
                n %= MOD;
                ans *= 1ll + q - q * inv(p) % MOD + MOD;
                ans %= MOD;
            }
            cout << n * ans % MOD << endl;
        }
        // system("pause");
        return 0;
    }
    

    C.

    博弈论,反正也是可以乱搞的
    不乱搞也不难

    暂时不想写


    D.

    摸一下规律就可以乱搞了

    #include<cstdio>
    #include<algorithm>
    #include<cstdlib>
    #include<cstring>
    #include<iostream>
    #include<cctype>
    #include<cmath>
    using namespace std;
    const int maxn = 1e5 + 10;
    int T;
    long long fact[maxn];
    int n;
    long long a;
    
    const int MOD = 998244353;
    long long qp(long long bs, long long pw)
    {
        long long ret = 1;
        while (pw)
        {
            if (pw & 1)
            {
                ret *= bs;
                ret %= MOD;
            }
            bs *= bs;
            bs %= MOD;
            pw >>= 1;
        }
        return ret;
    }
    
    void pre(int n)
    {
        fact[0] = fact[1] = 1;
        for (int i = 2; i <= n; ++i)
        {
            fact[i] = fact[i - 1] * i % MOD;
        }
    }
    
    long long ginv(long long x)
    {
        if (!x)
            return 1;
        else
            return qp(x, MOD - 2);
    }
    
    long long gp;
    int main()
    {
        ios::sync_with_stdio(false);
        cin >> T;
        pre(100000);
        while (T--)
        {
            cin >> n;
            long long sm = 0;
            sm = gp = 0;
            for (int i = 1; i <= n; ++i)
            {
                cin >> a;
                gp = (gp + fact[n - 1] * ginv(i - 1) % MOD) % MOD;
                sm += gp * a % MOD;
                if (sm >= MOD) sm -= MOD;
            }
            sm *= ginv(fact[n]);
            cout << sm % MOD << endl;
        }
        // system("pause");
        return 0;
    }
    

    E.

    感觉是树形 DP
    不想写


    J.

    什么简单差分

    #include<cstdio>
    #include<algorithm>
    #include<cstdlib>
    #include<cstring>
    #include<iostream>
    #include<cctype>
    #include<cmath>
    using namespace std;
    int T;
    int n, m;
    const int MOD = 998244353;
    const int maxn = 1e5 + 10;
    int dv[2][maxn];
    int mn[2];
    long long pw[2];
    long long qp(long long bs, int pw)
    {
        long long ret = 1;
        while (pw)
        {
            if (pw & 1)
            {
                ret *= bs;
                ret %= MOD;
            }
            bs *= bs;
            bs %= MOD;
            pw >>= 1;
        }
        return ret;
    }
    int main()
    {
        ios::sync_with_stdio(false);
        cin >> T;
        while (T--)
        {
            cin >> n >> m;
            for (int i = n + 1; i >= 0; --i)
                dv[0][i] = dv[1][i] = 0;
            for (int l, r, x, i = 1; i <= m; ++i)
                {
                    cin >> l >> r >> x;
                    ++dv[x - 2][l];
                    --dv[x - 2][r + 1];
                }
                mn[0] = mn[1] = 2147483644;
                int st[2] = {0, 0};
                for (int i = 1; i <= n; ++i)
                {
                    st[0] += dv[0][i];
                    st[1] += dv[1][i];
                    mn[0] = min(mn[0], st[0]);
                    mn[1] = min(mn[1], st[1]);
                }
                pw[0] = qp(2, mn[0]);
                pw[1] = qp(3, mn[1]);
            cout << pw[0] * pw[1] % MOD << endl;
        }
        // system("pause");
        return 0;
    }
    

    K.

    二分
    不会


    L.

    很好搞。
    (10^{12}) 印象里貌似就可以
    枚举一下所有因数,这大概是可以承受的
    然后异或的前缀和其实很好推,这个是 (log)
    (为什么是异或前缀和嘛,你考虑一个 (n)(2)(3) 这两个因数
    你首先考虑一下模比 (n/2) 大的那些数,再考虑模比 (n/3) 大的那些数)

    虽然可能不太能过
    当然这个也不一定正确

    好像是类欧,我跑了


    FGHI

    有缘再见吧

  • 相关阅读:
    NotifyIcon控件
    JS中的tostring()方法
    WebApp之Meta标签总结
    List<T>用法
    JSON.parse()和JSON.stringify()
    背景图片移动插件MyFloatingBg(浮动背景图效果,可让背景随着页面的滚动而滚动)
    illegal mix of collcations表连接时非法的校对
    truncate 命令删除恢复
    php里 换行问题
    mysql命令行导出导入数据库
  • 原文地址:https://www.cnblogs.com/ccryolitecc/p/14091170.html
Copyright © 2011-2022 走看看