zoukankan      html  css  js  c++  java
  • Codeforces_839

    A.每天更新判断。

    #include<bits/stdc++.h>
    using namespace std;
    
    int n,k,a[105];
    
    int main()
    {
        ios::sync_with_stdio(0);
        cin >> n >> k;
        for(int i = 1;i <= n;i++)   cin >> a[i];
        int ans = 0,now = 0;
        for(int i = 1;i <= n;i++)
        {
            now += a[i];
            if(now > 8)
            {
                now -= 8;
                ans += 8;
            }
            else
            {
                ans += now;
                now = 0;
            }
            if(ans >= k)
            {
                cout << i << endl;
                return 0;
            }
        }
        cout << -1 << endl;
        return 0;
    }
    View Code

    B.先贪心把4个位置的坐满,然后贪心两个的位置(加上4个位置剩余组数),最后剩余的座位仅能单人,为前两次贪心剩余组数和。

    #include<bits/stdc++.h>
    using namespace std;
    
    int n,k,a[10005];
    
    int main()
    {
        ios::sync_with_stdio(0);
        cin >> n >> k;
        for(int i = 1;i <= k;i++)   cin >> a[i];
        int cnt4 = n;
        for(int i = 1;i <= k;i++)
        {
            while(a[i] >= 4 && cnt4)
            {
                a[i] -= 4;
                cnt4--;
            }
        }
        int cnt2 = cnt4+2*n;
        for(int i = 1;i <= k;i++)
        {
            while(a[i] >= 2 && cnt2)
            {
                a[i] -= 2;
                cnt2--;
            }
        }
        int cnt1 = cnt2+cnt4;
        for(int i = 1;i <= k;i++)   cnt1 -= a[i];
        if(cnt1 >= 0)   cout << "YES" << endl;
        else    cout << "NO" << endl;
        return 0;
    }
    View Code

    C.dfs,每点的权值为儿子节点权值的平均值+1。

    #include<bits/stdc++.h>
    using namespace std;
    
    int n;
    vector<int> v[100005];
    
    double dfs(int now,int pre)
    {
        double ans = 1;
        int sz = v[now].size();
        if(now != 1)    sz--;
        for(int i = 0;i < v[now].size();i++)
        {
            int t = v[now][i];
            if(t == pre)    continue;
            ans += dfs(t,now)/sz;
        }
        return ans;
    }
    
    int main()
    {
        ios::sync_with_stdio(0);
        cin >> n;
        for(int i = 1;i < n;i++)
        {
            int x,y;
            cin >> x >> y;
            v[x].push_back(y);
            v[y].push_back(x);
        }
        cout << fixed << setprecision(10) << dfs(1,0)-1 << endl;
        return 0;
    }
    View Code

    D.首先,对于x个数,都含有某个因子,那么他们被统计的次数为1C(x,1)+2C(x,2)+...+xC(x,x),可推得结果为x*2^(x-1)。

    但事实上,某些数因子会被比它的因子替代,我们按因子从大到小容斥。

    #include<bits/stdc++.h>
    #define MOD 1000000007
    using namespace std;
    
    int n;
    long long two[200005],cnt[1000005] = {0},dp[1000005];
    
    int main()
    {
        ios::sync_with_stdio(0);
        two[0] = 1;
        for(int i = 1;i <= 200000;i++)  two[i] = two[i-1]*2%MOD;
        cin >> n;
        int maxx = 0;
        for(int i = 1;i <= n;i++)
        {
            int x;
            cin >> x;
            cnt[x]++;
            maxx = max(maxx,x);
        }
        long long ans = 0;
        for(int i = maxx;i > 1;i--)
        {
            long long t = 0;
            for(int j = i;j <= maxx;j += i) t += cnt[j];
            if(t == 0)  continue;
            dp[i] = t*two[t-1]%MOD;
            for(int j = 2*i;j <= maxx;j += i)   dp[i] = (dp[i]-dp[j]+MOD)%MOD;
            ans = (ans+dp[i]*i)%MOD;
        }
        cout << ans << endl;
        return 0;
    }
    View Code

  • 相关阅读:
    在日期选择轮中选择的时间转换成年龄
    字符串转换成NSDate类型的 为nil解决方法
    字符串与数组互转
    使用ASI传递post表单..参数是数组
    java synchronized的四种用法
    java 多线程实现的四种方式
    java 高性能Server —— Reactor模型单线程版
    java nio socket使用示例
    java.nio.Buffer 中的 flip()方法
    java NIO 详解
  • 原文地址:https://www.cnblogs.com/zhurb/p/7392491.html
Copyright © 2011-2022 走看看