zoukankan      html  css  js  c++  java
  • 暑期训练1 Gym-102623L Lottery Tickets 模拟 贪心构造

    a[i] 表示可以选择数i的个数。

    对于每一组询问a,求出能够组合出的被4整除的最大的数。

    显然是贪心构造,被4整除就等价于末尾两位被4整除。

    需要注意的点有: 前导0,单个数字

    这里通过string自带的比较性质写了一个cmp函数。

    void solve() {
        memset(val, 0, sizeof val);
        vector<string> v;
        for (int i = 0; i < 10; i++) {
            int x = readint();
            val[i] += x;
        }
        int sum = 0;
        for (int i = 1; i < 10; i++) sum += val[i];
        if (!sum) {
            puts("0");
            return;
        }
        int f1, f2;
        for (int i = 0; i < 100; i += 4) {
            if (i < 10) f1 = 0;
            else f1 = get1(i);
            f2 = get2(i);
            if (!f1 && val[f2]) {
                string xx;
                xx.push_back(f2 + '0');
                v.push_back(xx);
            }
            if (val[f1] && val[f2]) {
                val[f1]--;
                val[f2]--;
                if (f1 == f2 && val[f1] < 0) {
                    val[f1]++;
                    val[f2]++;
                    continue;
                }
                string tmp;
                for (int i = 9; i >= 0; i--) for (int j = 0; j < val[i]; j++) tmp.push_back(i + '0');
                tmp.push_back(f1 + '0');
                tmp.push_back(f2 + '0');
                val[f1]++, val[f2]++;
                int head = 0;
                while (tmp[head] == '0') head++;
                tmp = tmp.substr(head);
                v.push_back(tmp);
            }
        }
        if (!v.empty()) {
            sort(v.begin(), v.end(), cmp);
            cout << v.back() << "
    ";
            return;
        }
        puts("-1");
    }
    
    int main() {
        int T = readint();
        while (T--) solve();
    }
  • 相关阅读:
    koa2环境搭建
    单例模式
    nodejs fs path
    path node
    webpack code splitting
    babel 插件编写
    C#验证码类
    C#身份证识别相关技术
    C# Socket服务端与客户端通信(包含大文件的断点传输)
    动态抓取网页信息
  • 原文地址:https://www.cnblogs.com/hznumqf/p/13531495.html
Copyright © 2011-2022 走看看