CCPC 2020 吉林

A

#include <bits/stdc++.h>
using namespace std;
int a[] = {1, 6, 28, 88, 198, 328, 648};
map<int, int> fr;
bool chk(int sta, int n) {
    int cost = 0;
    for (int i = 0; i < 7; ++i) {
        if ((sta >> i) & 1) {
            cost += a[i];
        }
    }
    return cost <= n;
}
pair<int, int> solve(int sta, int n) {
    int ans = 0;
    for (int i = 0; i < 7; ++i) {
        if ((sta >> i) & 1) {
            ans += fr[a[i]], n -= a[i];
        }
    }
    return make_pair(ans, n);
}
int main() {
    fr[1] = 8;
    fr[6] = 18;
    fr[28] = 28;
    fr[88] = 58;
    fr[198] = 128;
    fr[328] = 198;
    fr[648] = 388;
    int n;
    // cout << solve(31, 328).first + solve(31, 328).second * 10 << endl;
    while (cin >> n) {
        pair<int, int> ans = make_pair(0, n);
        int sta = 0, maxsta = 1 << 7;
        for (int i = 0; i < maxsta; ++i) {
            if (chk(i, n)) {
                pair<int, int> now = solve(i, n);
                if (ans.first <= now.first) ans = now;
            }
        }
        printf("%d\n", ans.first + n * 10);
    }
    return 0;
}
算法竞赛之路 文章被收录于专栏

整理、记录算法竞赛的好题

全部评论

相关推荐

10-10 01:10
已编辑
深圳大学 测试开发
面了100年面试不知...:六月到九月,四个项目一个实习,是魔丸吗
投了多少份简历才上岸
点赞 评论 收藏
分享
牛客83265014...:完了,连现在都没开始面,13号投的是不是晚了
秋招的第一个offer,...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务