zoukankan      html  css  js  c++  java
  • 【组队训练】2013天津区域赛

    三题,按现场排名应该是80名,铜牌靠后。

    几次训练发现自己的心理素质实在是太!差!了!一开始,老规矩,我k题,zrA题,ysB题。

    A题大模拟,比较费时,zr先看了过了几个人的H,31mins,1A

    B题过的人越来越多,我看了N久终于看懂K题……不会做……我去问ys怎么样,他说了下题意,我觉得很水的暴力,让他直接写,他一直在和我讲说复杂度不够。我有点不耐烦,直接上机写。写的过程中出了点小问题,不过还是水题,一个小时左右1A

    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #include <cmath>
    #include <vector>
    #include <iostream>
    using namespace std;
    typedef long long ll;
    
    const int N = 1000005;
    const int INF = 0x5f5f5f5f;
    const int MOD = 1000000007;
    
    ll cal(int x, int m) {
        ll ans = 0;
        int f = m;
        while (x) {
            int z = x%m;
            ans += z*z;
            x /= m;
        }
        return ans;
    }
    
    void output(ll x, int m) {
        char ans[100]; int idx = 0;
        while (x) {
            int z = x%m;
            if (z < 10) ans[idx++] = z + '0';
            else ans[idx++] = z - 10 + 'A';
            x /= m;
        }
        for (int i = idx-1; i >= 0; --i) printf("%c", ans[i]); printf("
    ");
    }
    
    void solve(int n, int m) {
        ll ans = 0;
        int lit = sqrt(n);
        for (int i = 1; i <= lit; ++i) {
            if (n % i == 0) {
                ans += cal(i, m);
                if (i != n/i) ans += cal(n/i, m);
            }
        }
        output(ans, m);
    }
    
    int main() {
        //freopen("in.txt", "r", stdin);
        int n, m;
        while (~scanf("%d%d", &n, &m)) {
            solve(n, m);
        }
        return 0;
    }
    View Code

    然后看C题,我直接想到dp方程dp[i][j][k]表示前i个数已经排好,i+1是j,i+2是k的最小步数。但是转移方程没想好。和队友说了一下开始写,快写好的时候队友看了一眼,说由各情况没有考虑到,我一想确实是,心情瞬间就很烦躁,队友和我说思路的时候我不是很想理他,心情很烦,因为觉得全写错了(实际上只是差了一点),直接和队友说你有思路你写把,我不管了/我去想E,结果没想出来,后来队友说C他写错了,我已经想明白了,写了一发之后出了点bug,最后两个字母的旋转没考虑,上了个厕所突然明白,n+2之后解决,一共用了一个小时左右,1A

    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #include <cmath>
    #include <vector>
    #include <iostream>
    using namespace std;
    typedef long long ll;
    
    const int N = 1005;
    const int INF = 0x5f5f5f5f;
    const int MOD = 1000000007;
    
    char a[N], s[N];
    int dp[N][30][30];
    
    int move(int p, int x) {
        return (p+x+10)%10;
    }
    
    void mi(int &x, int y) {
        if (x == -1 || x > y) x = y;
    }
    
    int step(int x, int y) {
        if (x>y) swap(x, y);
        return min(y-x, x+10-y);
    }
    
    int main()
    {
        //freopen("in.txt", "r", stdin);
        while (~scanf("%s%s", a+1, s+1)) {
            int n = strlen(a+1);
            for (int i = 1; i <= n; ++i) {
                a[i]-='0'; s[i]-='0';
            }
            n+=2;
            memset(dp, -1, sizeof dp);
            dp[0][a[1]][a[2]] = 0;
            for (int i = 0; i <= n-2; ++i) {
                for (int j = 0; j <= 9; ++j) {
                    for (int k = 0; k <= 9; ++k) {
                        if (dp[i][j][k] < 0) continue;
                        for (int p = -4; p <= 5; ++p) {
                            for (int q = -4; q <= 5; ++q) {
                                int x = move(j, p+q);   //i+1
                                int y = move(k, p+q);   //i+2
                                int z = move(a[i+3], q);//i+3
                                int sp = step(x, s[i+1]);
                                mi(dp[i+1][y][z], dp[i][j][k] + sp + abs(p) + abs(q));
                            }
                        }
                    }
                }
            }
    
            int ans = INF;
            for (int i = 0; i <= 9; ++i) {
                for (int j = 0; j <= 9; ++j) {
                    if (dp[n-2][i][j] >= 0)
                    ans = min(ans, dp[n-2][i][j]);
                }
            }
    
            printf("%d
    ", ans);
        }
        return 0;
    }
    View Code

    这时就剩半个小时了,他们两个在讨论A,其实我也看了,不过也没相处什么清晰的写法,就挂机了。zr尝试着写,结果还是除了问题,没能在比赛结束前写完。

    我觉得我如果C题队友提醒我错了的时候,冷静下来好好想想,而不是硬拉着队友写,自己逃避,会减少很多浪费时间。只能说队友脾气都很好,没有生气,如果都像我这么情绪化……估计会打起来。。。。

    以后一定要学会克制自己的负面情绪。。。克制。。克制。。

    ----

    计划补题:E图论 F后缀自动机 Ksplay+线段树 //马丹 怎么都是我的

    任重而道远阿~~~

  • 相关阅读:
    Azureus 3.0.0.8
    KchmViewer 3.0
    GNOME 2.18.0 正式版颁发宣布
    Emacs 22.0.95
    gTwitter:Twitter 的 Linux 客户端
    KDE DVD Authoring Wizard-易用的 DVD 制造器材
    GIMP 2.3.15
    Monit-零碎看监工具
    Cobras-专注于 Qt 的 IDE
    K3b 1.0 正式版公布
  • 原文地址:https://www.cnblogs.com/wenruo/p/5819177.html
Copyright © 2011-2022 走看看