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

    大概是第四五次组队训练了。

    四题。

    第一次进铜牌线了= =(苦笑

    A题,水题,队友看一会就敲了,1A。

    J题,我看的,没看懂,叫队友和我一起看,三个人在没有讨论的情况下,全都理解错题意,凑不出样例,后来zr说,before和after应该是空间的,恍然大悟……

    因为当RYB都>=2的时候有公式,我就直接分类讨论其他情况。写的……shi一样……wa了好几次,和zr一起找了半天,7A……

    #include <bits/stdc++.h>
    
    using namespace std;
    typedef long long ll;
    #define CLR(x, v) memset(x, v, sizeof x);
    #define PI(x) printf("%lld
    ", (ll)(x))
    const int N = 100005;
    
    void sort(ll &a, ll &b, ll &c) {
        ll x = min(a, min(b,c));
        ll y = max(a, max(b,c));
        ll z = (a+b+c)-x-y;
        a = x; b = z; c = y;
    }
    
    int main() {
        //freopen("in.txt", "r", stdin);
        ll a, b, c;
        while (~scanf("%lld%lld%lld", &a, &b, &c)) {
            sort(a, b, c);
            ll tot = a+b+c;
            if (a >= 2 && b >= 2 && c >= 2) {
                PI(15+(tot-6)*6);
            } else if (c == 0) {
                // zero color
                PI(0);
            } else if (b == 0) {
                // one color
                if(c == 1)
                PI(0);
                else
                PI((tot-2)*2+1);
            } else if (a == 0) {
                // two colors
                if (b == 1 && c == 1) PI(1);
                else if (b == 1 && c == 2) PI(3);
                else if (b == 1) PI(3+(c-2)*3);
                else PI(6+(tot-4)*4);
            } else {
                if (b == 1 && c == 1) PI(3);
                else if (b == 1) PI(6+(c-2)*4);
                else if (b >= 2) PI(10+(b+c-4)*5);
                else while (1);
            }
        }
        return 0;
    }
    View Code

    I题,搞完J就开始看I题,队友说是不是什么数据结构,我想了下dp觉得没什么思路,便想到对每一位进行运算O(N^2*b) b是数据二进制位数,题面并没有说数据范围,我有点怕超时,和队友说了下想法,还是建议我写一发,因为也比较好写,抱着wa也不能空着的心态写了一下,调了下过了样例就交了,忘记写回车PE一次,2A。很惊喜。

    #include <bits/stdc++.h>
    
    using namespace std;
    typedef long long ll;
    #define CLR(x, v) memset(x, v, sizeof x);
    #define PI(x) printf("%lld
    ", (ll)(x))
    const int N = 1005;
    
    int a[N];
    int bit[50], ans[50];
    int midx;
    int c[N][N];
    const int MOD = 1000003;
    int n;
    
    void up(int &x, int y) { if(y>x)x=y; }
    void add(int &x, int y) { x+=y; if(x>=MOD) x-=MOD; }
    
    void calc() {
        c[0][0] = 1;
        for (int i = 1; i < N; ++i) {
            c[i][0] = c[i][i] = 1;
            for (int j = 1; j < i; ++j) {
                c[i][j] = (c[i-1][j] + c[i-1][j-1]) % MOD;
            }
        }
    }
    
    void init(int v) {
        int idx = 0;
        while (v) {
            if (v&1) bit[idx]++;
            v >>= 1;
            idx++;
        }
        up(midx, idx);
    }
    
    void cal(int x) {
        for (int i = 0; i < midx; ++i) {
            for (int j = 1; j <= x && j <= bit[i]; j+=2) {
                add(ans[i], (ll)c[bit[i]][j] * c[n-bit[i]][x-j] % MOD);
            }
        }
    }
    
    int main() {
        //freopen("in.txt", "r", stdin);
        calc();
        while (~scanf("%d", &n)) {
            CLR(bit, 0); midx = 0;
            for (int i = 1; i <= n; ++i) {
                scanf("%d",&a[i]);
                init(a[i]);
            }
    
            //for (int i = 0; i < midx; ++i) printf("%d ", bit[i]);printf("
    ");
    
            for (int i = 1; i <= n; ++i) {
                CLR(ans, 0); cal(i);
                int res = 0;
                for (int j = 0; j < midx; ++j) {
                    add(res, ((1LL<<j)%MOD*ans[j])%MOD);
                }
                //for (int j = 0; j < midx; ++j) printf("%d ", ans[j]);printf("
    ");
                printf("%d", res);
                if (i != n) printf(" ");
            }
            printf("
    ");
        }
        return 0;
    }
    View Code

    B题,ys看的,他在那里算了好久,问他看的怎么样,说差不多了,结果敲了好久,终于过了样例,提交,1A

    我鼓掌,ys开心的跳起来,仿佛我们真的拿到了牌。

    虽然路还有很远,但是还是惊喜于每一次AC,于是无论结果怎样,都…不会后悔。

    之后zr在写C,写完了一直过不了样例,我不是很懂,也没办法帮他看,一直再看K题,事实证明那么少过的题,我是真的不行- -

    计划明天补完K题。树分治。太弱,竟然没学过。。。

    继续努力……

  • 相关阅读:
    Linux脚本中使用特定JDK
    redis 模糊匹配批量清理 keys
    git push 本地项目推送到远程分支
    extentreports报告插件之extentX之服务搭建(三)
    extentreports报告插件与testng集成(二)
    extentreports报告插件与testng集成(一)
    初识ios自动化(一)
    css 选择器
    appium移动端测试之滑动(二)
    使用appium进行ios测试,启动inspector时遇到的问题(一)
  • 原文地址:https://www.cnblogs.com/wenruo/p/5811544.html
Copyright © 2011-2022 走看看