zoukankan      html  css  js  c++  java
  • Codeforces Round #428 (Div. 2) A-C

    A. Arya and Bran

    水题

    #include <iostream>
    #include <cstring>
    #include <cstdio>
    #include <algorithm>
    #include <queue>
    #include <vector>
    #include <iomanip>
    #include <math.h>
    #include <map>
    using namespace std;
    #define FIN     freopen("input.txt","r",stdin);
    #define FOUT    freopen("output.txt","w",stdout);
    #define INF     0x3f3f3f3f
    #define INFLL   0x3f3f3f3f3f3f3f
    #define lson    l,m,rt<<1
    #define rson    m+1,r,rt<<1|1
    typedef long long LL;
    typedef pair<int, int> PII;
    using namespace std;
    
    int n, k;
    int a[105];
    
    int main() {
        //FIN
        while(~scanf("%d%d", &n, &k)) {
            for(int i = 1; i <= n; i++) scanf("%d", &a[i]);
            int cnt = 0;
            int i ;
            int flag = 0;
            for(i = 1; i <= n; i++) {
                cnt += a[i];
                if(cnt >= 8) cnt -= 8, k -= 8;
                else k -= cnt, cnt = 0;
                if(k <= 0) {
                    flag = 1;
                    break;
                }
            }
            if(flag) printf("%d
    ", i);
            else puts("-1");
    
    
        }
    
        return 0;
    }
    

      

    B. Game of the Rows

    要注意很多细节....WA了好多发

    #include <iostream>
    #include <cstring>
    #include <cstdio>
    #include <algorithm>
    #include <queue>
    #include <vector>
    #include <iomanip>
    #include <math.h>
    #include <map>
    using namespace std;
    #define FIN     freopen("input.txt","r",stdin);
    #define FOUT    freopen("output.txt","w",stdout);
    #define INF     0x3f3f3f3f
    #define INFLL   0x3f3f3f3f3f3f3f
    #define lson    l,m,rt<<1
    #define rson    m+1,r,rt<<1|1
    typedef long long LL;
    typedef pair<int, int> PII;
    using namespace std;
    
    int n, k;
    int a[105];
    int b[10];
    
    int main() {
        //FIN
        while(~scanf("%d%d", &n, &k)) {
            memset(b, 0, sizeof(b));
            for(int i = 1; i <= k; i++) {
                scanf("%d", &a[i]);
                int tmp = a[i];
                b[4] += tmp / 4;
                tmp %= 4;
                b[2] += tmp / 2;
                tmp %= 2;
                b[1] += tmp;
            }
    
    
    
            //4
            int k = b[4];
            while(k--) {
                n -= 1;
                if(b[2] >= 2) b[2] -= 2;
                else if(k > 0) k--;
                else if(b[2] == 1 && b[1] >= 1) b[2] -= 1, b[1] -= 1;
                else if(b[2] == 1 && b[1] == 0) b[2] -= 1;
                else if(b[1] >= 2) b[1] -= 2;
                else if(b[1] == 1) b[1] -= 1;
            }
    
    
    
            if(n < 0) {
                printf("NO
    ");
                continue;
            }
    
            int for1 = n;
            int for1n2 = n * 3;
    
            //1and2
    
            if(b[1] > n) b[1] -= n, for1 -= n;
            else for1 -= b[1], b[1] = 0;
    
            b[2] -= (for1 / 2);
    
            int tmp = b[1] + b[2];
            if(tmp <= for1n2) printf("YES
    ");
            else printf("NO
    ");
        }
    
        return 0;
    }
    

      

    C. Journey

    dfs途中保存路径长度

    #include <iostream>
    #include <cstring>
    #include <cstdio>
    #include <algorithm>
    #include <queue>
    #include <vector>
    #include <iomanip>
    #include <math.h>
    #include <map>
    using namespace std;
    #define FIN     freopen("input.txt","r",stdin);
    #define FOUT    freopen("output.txt","w",stdout);
    #define INF     0x3f3f3f3f
    #define INFLL   0x3f3f3f3f3f3f3f
    #define lson    l,m,rt<<1
    #define rson    m+1,r,rt<<1|1
    typedef long long LL;
    typedef pair<int, int> PII;
    using namespace std;
    
    const int maxn = 200000 + 5;
    
    int n;
    
    vector<int> Vec[maxn];
    
    double dfs(int st, int ed) {
        int flag = 0;
        double cnt = 0.0;
        double sum = 0.0;
        for(int i = 0; i < Vec[st].size(); i++) {
            if(Vec[st][i] == ed) continue;
            flag = 1;
            cnt += 1.0;
            sum += dfs(Vec[st][i], st);
        }
        if(flag) return 1.0 + sum / cnt;
        else return 0;
    }
    
    int main() {
        //FIN
        scanf("%d", &n);
        int st, ed;
        for(int i = 1; i < n; i++) {
            scanf("%d%d", &st, &ed);
            Vec[st].push_back(ed);
            Vec[ed].push_back(st);
        }
        printf("%.15lf
    ", dfs(1, 0));
        return 0;
    }
    

      

  • 相关阅读:
    资源与锁
    资源与锁
    Leetcode-Rotate List
    Leetcode-Unique Paths II
    Leetcode-Unique Paths
    Leetcode-Minimum Path Sum
    Leetcode-Sqrt(x)
    Leetcode-Set Matrix Zeroes
    Leetcode-Search a 2D Matrix
    Leetcode-Combinations
  • 原文地址:https://www.cnblogs.com/Hyouka/p/7397744.html
Copyright © 2011-2022 走看看