zoukankan      html  css  js  c++  java
  • Codeforces Round #348(VK Cup 2016

    A - Little Artem and Presents (div2)

    1 2 1 2这样加就可以了

    #include <bits/stdc++.h>
    
    typedef long long ll;
    const int N = 1e5 + 5;
    
    int main() {
        int n; scanf ("%d", &n);
        int ans = n / 3 * 2;
        if (n % 3) {
            ans++;
        }
        printf ("%d
    ", ans);
        return 0;
    }

    B - Little Artem and Grasshopper (div2)

    水题,暴力模拟一下

    #include <bits/stdc++.h>
    
    typedef long long ll;
    const int N = 1e5 + 5;
    char str[N];
    int a[N];
    
    int main() {
        int n; scanf ("%d", &n);
        scanf ("%s", str);
        for (int i=0; i<n; ++i) {
            scanf ("%d", a+i);
        }
        int now = 0;
        while (true) {
            if (now < 0 || now >= n) {
                break;
            }
            if (a[now] == -1) {
                puts ("INFINITE");
                return 0;
            }
            if (str[now] == '>') {
                int pre = now;
                now = now + a[now];
                a[pre] = -1;
            } else {
                int pre = now;
                now = now - a[now];
                a[pre] = -1;
            }
        }
        puts ("FINITE");
        return 0;
    }
    

    构造 C - Little Artem and Matrix (div2)

    倒过来做,循环也反着来

    #include <bits/stdc++.h>
    
    typedef long long ll;
    const int N = 1e2 + 5;
    const int Q = 1e4 + 5;
    int a[N][N];
    int t[Q], row[Q], col[Q], x[Q];
    
    int main() {
        int n, m, q; scanf ("%d%d%d", &n, &m, &q);
        for (int i=1; i<=q; ++i) {
            scanf ("%d", t+i);
            if (t[i] == 1) {
                scanf ("%d", row+i);
            }
            if (t[i] == 2) {
                scanf ("%d", col+i);
            }
            if (t[i] == 3) {
                scanf ("%d%d%d", row+i, col+i, x+i);
            }
            //printf ("%d %d %d %d
    ", t[i], row[i], col[i], x[i]);
        }
        for (int i=q; i>=1; --i) {
            if (t[i] == 1) {
                int last = a[row[i]][m];
                for (int j=m; j>=2; --j) {
                    a[row[i]][j] = a[row[i]][j-1];
                }
                a[row[i]][1] = last;
            }
            if (t[i] == 2) {
                int last = a[n][col[i]];
                for (int j=n; j>=2; --j) {
                    a[j][col[i]] = a[j-1][col[i]];
                }
                a[1][col[i]] = last;
            }
            if (t[i] == 3) {
                a[row[i]][col[i]] = x[i];
            }
        }
        for (int i=1; i<=n; ++i) {
            for (int j=1; j<=m; ++j) {
                printf ("%d%c", a[i][j], j == m ? '
    ' : ' ');
            }
        }
        return 0;
    }
    

    数学 D - Little Artem and Dance (div2)

    题意:男生与女生围成圈跳舞,女生的位置不变,男生可以移动x个女生或者相邻的男生奇偶互换,问最后男生的排列

    分析:问题的关键点在于奇数男生的圈顺序不变,偶数也不变,只是起点的位置改变,所以只要对两个起点操作就行了。

    #include <bits/stdc++.h>
    
    typedef long long ll;
    const int N = 1e6 + 5;
    int ans[N];
    
    int main() {
        int p0 = 0, p1 = 1;
        int n, q; scanf ("%d%d", &n, &q);
        for (int i=0; i<q; ++i) {
            int type; scanf ("%d", &type);
            if (type == 1) {
                int x; scanf ("%d", &x);
                p0 = (p0 + x + n) % n;
                p1 = (p1 + x + n) % n;
            } else {
                p0 = p0 ^ 1;
                p1 = p1 ^ 1;
            }
        }
        for (int i=0; i<n; i+=2) {
            ans[(p0+i)%n] = i + 1;
        }
        for (int i=1; i<n; i+=2) {
            ans[(p1+i-1)%n] = i + 1;
        }
        for (int i=0; i<n; ++i) {
            printf ("%d%c", ans[i], i == n-1 ? '
    ' : ' ');
        }
        return 0;
    }
    

    数学+前(后)缀 C - Little Artem and Random Variable (div1)

    题意:已知p(max(a,b)=k) 和 p(min(a,b)=k)的概率,求p(a=k) 和 p(b=k)

    分析:

    P(a = k) = P(a <= k) — P(a <= k-1) P(max(a, b) <= k) = P(a <= k) * P(b <= k)

    P(min(a, b) >= k) = P(a >= k) * P(b >= k) = (1 — P(a <= k-1)) *(1 — P(b <= k-1))

     

    解方程的,从而求得

    #include <bits/stdc++.h>
    
    const int N = 1e5 + 5;
    double p[N], q[N], a[N], b[N];
    
    int main() {
        int n; scanf ("%d", &n);
        for (int i=1; i<=n; ++i) {
            scanf ("%lf", p+i);
            p[i] += p[i-1];
        }
        for (int i=1; i<=n; ++i) {
            scanf ("%lf", q+i);
        }
        for (int i=n; i>=1; --i) {
            q[i] += q[i+1];
        }
        for (int i=1; i<=n; ++i) {
            double A = p[i], B = q[i+1];
            double C = B - A - 1;
            double delta = sqrt (std::max (C*C - 4 * A, 0.0));
            a[i] = (-C+delta) / 2;
            b[i] = (-C-delta) / 2;
        }
        for (int i=1; i<=n; ++i) {
            printf ("%.10f%c", a[i] - a[i-1], i == n ? '
    ' : ' ');
        }
        for (int i=1; i<=n; ++i) {
            printf ("%.10f%c", b[i] - b[i-1], i == n ? '
    ' : ' ');
        }
        return 0;
    }
    

      

  • 相关阅读:
    可视化和解释的11种基本神经网络架构 标准,循环,卷积和自动编码器网络
    从头开始使用梯度下降优化在Python中实现单变量多项式回归(后续3)
    从头开始使用梯度下降优化在Python中实现单变量多项式回归(后续2)
    从头开始使用梯度下降优化在Python中实现单变量多项式回归
    从头开始使用梯度下降优化在Python中实现多元线性回归(后续)
    从头开始使用梯度下降优化在Python中实现多元线性回归
    算法分析 八: 总结补充补充
    算法分析五:贪婪算法
    JDBC简单使用、工具类构建以及Statement与PreparedStatement区别
    利用抓包工具Fiddler分析post和get对http请求、响应的区别。
  • 原文地址:https://www.cnblogs.com/Running-Time/p/5434631.html
Copyright © 2011-2022 走看看