这题没有压行就成 \(\texttt{Hard Version}\) 最短代码解了(

要知道这题那么 \(sb\) 就不啃 \(D\) 和 \(E\) 了。

\(\texttt{Solution}\)

首先有一个非常简单但是错误的多重背包的想法:

让分拆出来的 \(k\) 个数中,每一个数在十进制下每一位都是 \(0, 3, 6\) 或 \(9\),于是对于第 \(x\) 位把 \(3k\) 个大小为 \(3 \times 10^x\), 价值为 \(F_x\) 的物品丢进多重背包里面,然后输出答案。

这样子显然是不对的,例如输入的数不是 \(3\) 的倍数就被卡掉了。因为还可能在某一位上价值是 \(0\)。然后考虑贪心,我们肯定要让这些位置上不是 \(0, 3, 6, 9\) 的位置越少越好。

有一个很显然的结论:一定可以让某一位上价不是 \(0, 3, 6, 9\) 的个数减少到 \(1\)。证明:如果有两个非 \(0, 3, 6, 9\) 的数 \(a\) 和 \(b\)。如果 \(a + b > 9\), 那么可以变成 \(9\) 和 \(a+b-9\); 否则可以变成 \(0\) 和 \(a+b\)。

那么我们只要对这不是 \(0, 3, 6, 9\) 的那些位置进行特殊处理即可。为了方便,我们把这些位放在同一个数上。可以对于这些数提前统计他们的价值。然后对于剩下 \(k-1\) 个数,按照前面所提到的错误做法,对于第 \(x\) 位把 \(3(k-1)\) 个大小为 \(3 \times 10^x\), 价值为 \(F_x\) 的物品丢进多重背包里面。但是这样子会 \(TLE\), 然后改成二进制优化多重背包即可。不会二进制优化背包?毙了吧

\(\texttt{Code}\)

#include<bits/stdc++.h>
using namespace std;
#define L(i, j, k) for(int i = (j); i <= (k); i++)
#define R(i, j, k) for(int i = (j); i >= (k); i--)
#define ll long long
const int N = 1e6 + 7;
int n, m, k, sz, t, q;
ll p[6], f[N];
void Push(int v, ll w) { R(i, 1e6, v) f[i] = max(f[i], w + f[i - v]); }
void gg(int v, int w) {
int now = min(k, (int)1e6 / v);
for(int i = 1; i < now; i <<= 1) now -= i, Push(v * i, 1ll * w * i);
Push(v * now, 1ll * w * now);
}
int main() {
scanf("%d", &k), sz = 1, k = 3 * (k - 1);
L(i, 0, 5) scanf("%d", &p[i]);
L(i, 0, 1e6) {
int now = 0, x = i, s = x % 10;
while(x) {
if(s % 3 == 0) f[i] += 1ll * p[now] * (s / 3);
x /= 10, ++now, s = x % 10;
}
}
L(i, 0, 5) gg(sz * 3, p[i]), sz *= 10;
scanf("%d", &q);
while(q--) scanf("%d", &t), printf("%lld\n", f[t]);
return 0;
}

题解 CF1428G Lucky Numbers (Easy Version and Hard Version)的更多相关文章

  1. ZCMU 2177 Lucky Numbers (easy)

    传送门: http://acm.zcmu.edu.cn/JudgeOnline/problem.php?id=2177 2177: Lucky Numbers (easy) 时间限制: 2 Sec   ...

  2. C - Lucky Numbers (easy)

    Problem description Petya loves lucky numbers. Everybody knows that positive integers are lucky if t ...

  3. HDU 5676 ztr loves lucky numbers (模拟)

    ztr loves lucky numbers 题目链接: http://acm.hust.edu.cn/vjudge/contest/121332#problem/I Description ztr ...

  4. codeforces 630C Lucky Numbers

    C. Lucky Numbers time limit per test 0.5 seconds memory limit per test 64 megabytes input standard i ...

  5. hdu 5676 ztr loves lucky numbers(dfs+离线)

    Problem Description ztr loves lucky numbers. Everybody knows that positive integers are lucky if the ...

  6. codeforces 630C - Lucky Numbers 递推思路

    630C - Lucky Numbers 题目大意: 给定数字位数,且这个数字只能由7和8组成,问有多少种组合的可能性 思路: 假设为1位,只有7和8:两位的时候,除了77,78,87,88之外还哇哦 ...

  7. hdu 5676 ztr loves lucky numbers 打表+二分

    ztr loves lucky numbers Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/ ...

  8. hdu-5676 ztr loves lucky numbers(乱搞题)

    题目链接: ztr loves lucky numbers  Time Limit: 2000/1000 MS (Java/Others)  Memory Limit: 65536/65536 K ( ...

  9. Codeforces Round #160 (Div. 2)---A. Roma and Lucky Numbers

    Roma and Lucky Numbers time limit per test 1 second memory limit per test 256 megabytes input standa ...

随机推荐

  1. nginx&http 第二章 ngx 事件event处理 数据结构

    ngx_event.c :这个文件主要放置Nginx事件event模块的核心代码. 包含:进程事件分发器(ngx_process_events_and_timers).事件模块的模块和配置.模块初始化 ...

  2. 多项目部署在同一个GitHub Pages

    由于GitHub 的约定,一个账户只能拥有一个GitHub Pages,那么,如果你有多个想部署的静态网站(博客和文档等),它们是互相隔离的,如何用同一个GitHub账户进行部署呢? 从之前如何搭建G ...

  3. Ceph对象主本损坏的修复方法

    前言 问题的触发是在进行一个目录的查询的时候,osd就会挂掉,开始以为是osd操作超时了,后来发现每次访问这个对象都有问题 log [WRN] : slow request 60.793196 sec ...

  4. FreeMark导出word文件

    1.编辑好word 2.将word模板另存为xml格式, 把需要动态生成的文字用${xxx}代替 eg: 张强 替换为:${name} 注意:图片是很长的一个base64的字符,同样替换就好 比如替换 ...

  5. RESTFul服务开发必备的一款IDEA插件!用了就离不开了

    我们经常谈 RESTful Web 服务开发,但是我发现很多人实际就根本不懂这个概念.只是听着大家都这么说,也就跟着一起说了,哈哈哈! 因此,在开始推荐这个IDEA插件之前,非常有必要花一小会时间简单 ...

  6. xpth定位元素

  7. sql bypass waf fuzz python

    从freebuf copy过来的,先保存,有空再改 #encoding=utf-8 import requests url = "http://127.0.0.1/index.php?id= ...

  8. [从源码学设计]蚂蚁金服SOFARegistry之网络封装和操作

    [从源码学设计]蚂蚁金服SOFARegistry之网络封装和操作 目录 [从源码学设计]蚂蚁金服SOFARegistry之网络封装和操作 0x00 摘要 0x01 业务领域 1.1 SOFARegis ...

  9. 记录一次tomcat问题排查记录:org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 19

    最近项目升级jdk,从jdk7 升级到 jdk8,本地已经自测完成了,需要部署到测试环境,测试环境已经装好 jdk8 了,但是tomcat 的版本还是 7.不过,据我之前了解,tomcat7是可以运行 ...

  10. Dapr DotNet5 HTTP 调用

    Dapr DotNet5 HTTP 调用 版本介绍 Dotnet 版本:5.0.100 Dapr dotnet 版本:0.12.0-preview01 注意: Asp.Net Core 项目中的 la ...