zoukankan      html  css  js  c++  java
  • Codeforces #105 DIV2 ABCDE

    开始按照顺序刷刷以前的CF。

    #include <map>
    #include <set>
    #include <list>
    #include <cmath>
    #include <ctime>
    #include <deque>
    #include <stack>
    #include <queue>
    #include <cctype>
    #include <cstdio>
    #include <string>
    #include <vector>
    #include <climits>
    #include <cstdlib>
    #include <cstring>
    #include <iostream>
    #include <algorithm>
    #define LL long long
    #define PI 3.1415926535897932626
    using namespace std;
    int gcd(int a, int b) {return a % b == 0 ? b : gcd(b, a % b);}
    int a[4],d;
    int main()
    {
        while (cin>>a[0]>>a[1]>>a[2]>>a[3]>>d)
        {
            int ans = 0;
            for (int i = 1; i <= d; i++)
            {
                for (int j = 0; j < 4; j++)
                    if (i % a[j] == 0)
                {
                    ans ++;
                    break;
                }
            }
            cout<<ans<<endl;
        }
        return 0;
    }
    View Code

    B贡献无数发WA。注意相遇的条件 直接double处理就可以。一直以为按照相应直接直接跳跃相应距离 直接int处理

    #include <map>
    #include <set>
    #include <list>
    #include <cmath>
    #include <ctime>
    #include <deque>
    #include <stack>
    #include <queue>
    #include <cctype>
    #include <cstdio>
    #include <string>
    #include <vector>
    #include <climits>
    #include <cstdlib>
    #include <cstring>
    #include <iostream>
    #include <algorithm>
    #define LL long long
    #define PI 3.1415926535897932626
    using namespace std;
    int gcd(int a, int b) {return a % b == 0 ? b : gcd(b, a % b);}
    int vp,vd,t,f,c;
    int pos[1010];
    int main()
    {
        while (cin>>vp>>vd>>t>>f>>c)
        {
           if (vp >= vd) {puts("0");continue;}
           int thev = vd - vp;
           double pospri = vp * t;int ans = 0;
           while (pospri < c)
           {
               double ti = pospri / (double)thev;
               if ((double) vd * ti >= c) break;
               ans ++;
               pospri = pospri + f * vp +(double) 2 * ti * vp;
              // printf("%d
    ",pospri);
               if (pospri >= c) break;
           }
           cout <<ans <<endl;
        }
        return 0;
    }
    View Code

    C 坑点比较多。注意b等于0的情况

    #include <map>
    #include <set>
    #include <list>
    #include <cmath>
    #include <ctime>
    #include <deque>
    #include <stack>
    #include <queue>
    #include <cctype>
    #include <cstdio>
    #include <string>
    #include <vector>
    #include <climits>
    #include <cstdlib>
    #include <cstring>
    #include <iostream>
    #include <algorithm>
    #define LL long long
    #define PI 3.1415926535897932626
    using namespace std;
    int gcd(int a, int b) {return a % b == 0 ? b : gcd(b, a % b);}
    int n,a,b;
    int num[110];
    int main()
    {
        while (cin >> n >> a >> b)
        {
            if (a > n || b > n){ puts("-1");continue;}
            if (a > 0 &&  b == 0)
            {
                if (n - a < 2) {puts("-1");continue;}
                else
                {
                    printf("1 1 ");
                    for (int i = 1 ,k = 2,j = 3; j <= n && i <= a ; k++,i++) printf("%d ",k);
                    for (int i = a + 3; i <= n; i++) printf("%d ",a + 1);
                    puts("");
                }
                continue;
            }
            for (int i = 0; i < 110; i++) num[i] = 1;
            int cas = 1;
            int sum = 1;
            for (int i = 2; i <= b + 1; i++)
            {
                num[i] = sum + cas;
                sum += num[i];
            }
            cas = 1;
            for (int i = b + 2; i <= a + b + 1;i ++)
            {
                num[i] = num[i - 1] + cas;
            }
            for (int i = 1; i <= n; i++)
                if (i == 1) cout << num[i];
                else cout << ' ' << num[i];
            puts("");
        }
        return 0;
    }
    View Code

    D DP

    #include <map>
    #include <set>
    #include <list>
    #include <cmath>
    #include <ctime>
    #include <deque>
    #include <stack>
    #include <queue>
    #include <cctype>
    #include <cstdio>
    #include <string>
    #include <vector>
    #include <climits>
    #include <cstdlib>
    #include <cstring>
    #include <iostream>
    #include <algorithm>
    #define LL long long
    #define PI 3.1415926535897932626
    using namespace std;
    int gcd(int a, int b) {return a % b == 0 ? b : gcd(b, a % b);}
    int w,b;
    double dp[1010][1010];
    void init()
    {
        for (int i = 0; i < 1001; i++)
        {
            dp[i][0] = 1.0;
            dp[0][i] = 0.0;
        }
        for (int w = 1; w < 1001; w++)
            for (int b = 1; b < 1001; b++)
        {
            dp[w][b]  += 1.0 * w / (w + b);
            if (b >= 3)
                dp[w][b] += dp[w][b - 3] * 1.0 * b / (w + b) * 1.0 * (b - 1) / (w + b - 1) * 1.0 * (b - 2) / (w + b - 2);
            if (b >= 2)
                dp[w][b] += dp[w - 1][b - 2] * 1.0 * b / (w + b) * 1.0 * (b - 1) / (w + b - 1) * w / (w + b - 2);
        }
    }
    int main()
    {
        init();
        while (scanf("%d%d",&w,&b) != EOF)
        printf("%.9lf
    ",dp[w][b]);
        return 0;
    }
    View Code

    E DP预处理+DP

    #include <map>
    #include <set>
    #include <list>
    #include <cmath>
    #include <ctime>
    #include <deque>
    #include <stack>
    #include <queue>
    #include <cctype>
    #include <cstdio>
    #include <string>
    #include <vector>
    #include <climits>
    #include <cstdlib>
    #include <cstring>
    #include <iostream>
    #include <algorithm>
    #define LL long long
    #define PI 3.1415926535897932626
    using namespace std;
    int gcd(int a, int b) {return a % b == 0 ? b : gcd(b, a % b);}
    #define MAXN 110
    #define MAXD 10010
    int sum[MAXN][MAXD],dp[MAXN][MAXD],res[MAXN][MAXD];
    int N,M;
    int num[MAXN];
    int main()
    {
        while (scanf("%d%d",&N,&M) != EOF)
        {
            memset(dp,0,sizeof(dp));
            memset(res,0,sizeof(res));
            for (int i = 1; i <= N; i++)
            {
                scanf("%d",&num[i]);
                sum[i][0] = 0;
                for (int j = 1; j <= num[i];j++)
                {
                    int tmp;
                    scanf("%d",&tmp);
                    sum[i][j] = sum[i][j - 1] + tmp;
                }
                res[i][0] = 0;
                for (int j = 1; j <= num[i]; j++)
                  for (int k = 0; k <= j; k++)
                    res[i][j] = max(res[i][j],sum[i][k] + sum[i][num[i]] - sum[i][num[i] - (j - k)]);
            }
            for (int i = 1; i <= N; i++)
                for (int j = 1; j <= M; j++)
                  for (int k = 0; k <= num[i] && k <= j; k++)
                  dp[i][j] = max(dp[i][j],max(dp[i - 1][j],dp[i - 1][j - k] + res[i][k]));
            printf("%d
    ",dp[N][M]);
        }
        return 0;
    }
    View Code
  • 相关阅读:
    如何:将控件锁定到 Windows 窗体
    Linux 设置字符集
    sql 批量处理
    解决表被锁了
    oracle 分页模板
    创建用户及表空间
    恢复数据库数据
    instr vs like 效率
    自定义参数转换器
    spring boot 整合MyBatis
  • 原文地址:https://www.cnblogs.com/Commence/p/4033713.html
Copyright © 2011-2022 走看看