• Educational Codeforces Round 79 (Rated for Div. 2)


    题目链接

    B:
    水题,从头累加,超过s时输出遍历过的最大值的位置即可

    C:
    读懂题也是水题,记录当前最大的下标与已经去掉的数量,维护即可

    #include<bits/stdc++.h>
    using namespace std;
    #define ms(x,y) memset(x, y, sizeof(x))
    #define lowbit(x) ((x)&(-x))
    #define sqr(x) ((x)*(x))
    typedef long long LL;
    typedef pair<int,int> pii;
    typedef pair<LL,LL> pll;
    
    
    
    void run_case() {
        int n, m;
        cin >> n >> m;
        vector<int> a(n+1), b(m+1);
        for(int i = 1; i <= n; ++i) {
            int t; cin >> t;
            a[t] = i;
        }
        for(int i = 1; i <= m; ++i) {
            cin >> b[i];
        }
        LL ans = 0, sum = 0, pre = 1;
        for(int i = 1; i <= m; ++i) {
            int pos = a[b[i]];
            if(pos <= pre) ans++, sum++;
            else {
                ans += (pos - sum - 1) *2 + 1;
                pre = pos;
                sum++;
            }
        }
        cout << ans << "
    ";
    
    }
    
    
    int main() {
        ios::sync_with_stdio(false), cin.tie(0);
        cout.flags(ios::fixed);cout.precision(9);
        int t; cin >> t;
        while(t--)
        run_case();
        cout.flush();
        return 0;
    }
    

    D:
    简单的概率+逆元题
    设选择第(i)个人,他有(k_i)种选择,每种选择对应的人的总个数为(包括自己)(x_{k_{i_j}}), 答案为(sum_{i=1}^{n}{frac{1}{n}sum_{j=1}^{k_i}(frac{1}{k_i} frac{x_{k_{i_j}}}{n})}), 化简求和,为:(frac{1}{n^2}sum_{i=1}^{n}{sum_{j=1}^{k_i}(frac{1}{k_i}x_{k_{i_j}})})

    #include<bits/stdc++.h>
    using namespace std;
    #define ms(x,y) memset(x, y, sizeof(x))
    #define lowbit(x) ((x)&(-x))
    #define sqr(x) ((x)*(x))
    typedef long long LL;
    typedef pair<int,int> pii;
    typedef pair<LL,LL> pll;
    
    const LL MOD = 998244353;
    const int maxn = 1e6+5;
    
    LL inv[maxn];
    
    void init() {
        inv[1] = 1;
        for(int i = 2; i < maxn; ++i)
            inv[i] = (MOD - MOD / i) * 1LL * inv[MOD%i] % MOD;
    }
    
    void run_case() {
        init();
        int n; cin >> n;
        vector<LL> b[n], c(maxn);
        for(int i = 0; i < n; ++i) {
            int t; cin >> t;
            for(int j = 0; j < t; ++j) {
                int k; cin >> k;
                b[i].push_back(k);
                c[k]++;
            }
        }
        LL ans = 0;
        for(int i = 0; i < n; ++i) {
            int k = b[i].size();
            for(int j = 0; j < k; ++j) {
                (ans += inv[k]*c[b[i][j]] % MOD) %= MOD;
            }
        }
        ans = (ans * inv[n] % MOD * inv[n]) % MOD;
        ans = (ans + MOD) % MOD;
        cout << ans;
    }
    
    
    int main() {
        ios::sync_with_stdio(false), cin.tie(0);
        cout.flags(ios::fixed);cout.precision(9);
        //int t; cin >> t;
        //while(t--)
        run_case();
        cout.flush();
        return 0;
    }
    
  • 相关阅读:
    深入理解npm run命令,run命令的两条潜规则
    oracle 删除表空间及数据文件方法
    Oracle11g创建表空间和用户,并授权
    java poi 读取excel 获取第一个不隐藏的sheet
    VBS 学习
    VBS 操作Excel
    Selenium + Python操作IE 速度很慢的解决办法
    Selenium打开IE报错“Protected Mode settings...”解决方法
    Robot Framework搭建
    获取一组元素的最后一个
  • 原文地址:https://www.cnblogs.com/GRedComeT/p/13062702.html
Copyright © 2020-2023  润新知