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;
}
算法竞赛之路 文章被收录于专栏

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

注意!此信息未认证,请谨慎判断信息的真实性!

全部评论
空

相关内容推荐

头像
点赞 评论 收藏
转发
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
01-12 12:42
点赞 评论 收藏
转发
点赞 评论 收藏
转发
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
点赞 评论 收藏
转发
头像
2022-12-14 18:10
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
2022-12-22 16:33
重庆工商大学_2024
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
2022-12-23 17:45
武汉商学院_2023
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
点赞 收藏 评论
分享

全站热榜

正在热议