USACO 4.1.1 麦香牛块 Beef McNuggets
题目大意
给你\(n\)个数\(a_1, a_2 ... a_n\), 要你求最大的正整数\(m\)使得方程\(a_1 x_1 + a_2 x_2 + ... + a_n x_n = m\)无非负整数解. 题目数据满足\(a_x\)为正整数且不大于\(256\), \(n \le 10\).
Solution
先看一个定理: 对于正整数\(p\), \(q\)满足\(gcd(p, q) = 1\), 我们有\(px + qy = n\)无非负整数解的最大正整数\(n\)为\(pq - p - q\). 证明如下:
我们首先利用反证法, 证明\(px + qy \ne pq - p - q\): 我们假设存在正整数\(x\)和\(y\)使得\(px + qy = pq - p - q\), 则有
p(x + 1) + q(y + 1) = pq \\
\because gcd(p, q) = 1且p | q(y + 1) \\
\therefore p | y + 1 \\
同理, q | x + 1
\]
接着我们令\(y + 1 = pj\), \(x + 1 = qk\). 则有
pq(j + k) = pq
\]
注意到\(x, y \ge 0\), 我们有\(y + 1 \ge 1\)且\(x + 1 \ge 1\), 因而\(j \ge 1\)且\(k \ge 1\). 因而\(j + k \ge 2\), 因而假设不成立.
得证.
再证明当\(n \ge pq - p - q + 1\)时原方程总有非负整数解:
我们令\(n = pq - p - q + k\), 则根据扩展欧几里得定理, 方程\(pa + qb = k\)有整数解(其中\(a\)和\(b\)中必有一个为正, 一个为负). 我们假设\(a < 0 < b\), 调整\(a\)和\(b\)的值使得\(|a| < q\). 令此时的\(a\)和\(b\)分别为\(A\)和\(B\).
回到原方程
px + qy = pq - p - q + Ax + By \\
p(x + 1 - A) + q(y + 1 - B) = pq
\]
根据前面的结论, 我们又有
q | x + 1 - A
\]
因此我们令
k = \frac{y + 1 - B} p
\]
则有
i + j = 1
\]
不妨设\(i = 0\)且\(j = 1\), 则
y + 1 - B= 0 \\
x + 1 - A = q
\end{cases}
\]
因而
x = A + q - 1
\]
由于\(B > 0\), 因而\(B - 1 \ge 0\);
根据之前定义, 我们又有\(|A| < q\), 因而\(A + q - 1 \ge 0\)
因而原方程必有非负整数解.
好了, 现在考虑这道题怎么做233
注意到\(a\)值较小, 我们直接从0开始到\(256^2\)背包暴力即可.
我们注意到\(a\)之间并不一定互质, 但这并不影响我们枚举的范围.
#include <cstdio>
#include <cctype>
const int N = 10, LIM = 256;
int a[N], f[LIM * LIM << 2];
int main()
{
int n; scanf("%d", &n);
for(int i = 0; i < n; ++ i) scanf("%d", a + i);
f[0] = 1;
for(int i = 1; i < LIM * LIM << 2; ++ i) for(int j = 0; j < n; ++ j) if(i - a[j] >= 0 && f[i - a[j]]) f[i] = 1;
int ans = 0;
for(int i = 1; i < LIM * LIM << 2; ++ i) if(! f[i]) ans = i;
printf("%d\n", ans > LIM * LIM ? 0 : ans);
}
USACO 4.1.1 麦香牛块 Beef McNuggets的更多相关文章
- 洛谷P2737 [USACO4.1]麦香牛块Beef McNuggets
P2737 [USACO4.1]麦香牛块Beef McNuggets 13通过 21提交 题目提供者该用户不存在 标签USACO 难度普及+/提高 提交 讨论 题解 最新讨论 暂时没有讨论 题目描 ...
- 洛谷 P2737 [USACO4.1]麦香牛块Beef McNuggets Label:一点点数论 && 背包
题目描述 农夫布朗的奶牛们正在进行斗争,因为它们听说麦当劳正在考虑引进一种新产品:麦香牛块.奶牛们正在想尽一切办法让这种可怕的设想泡汤.奶牛们进行斗争的策略之一是“劣质的包装”.“看,”奶牛们说,“如 ...
- 洛谷——P2737 [USACO4.1]麦香牛块Beef McNuggets
https://www.luogu.org/problemnew/show/P2737 题目描述 农夫布朗的奶牛们正在进行斗争,因为它们听说麦当劳正在考虑引进一种新产品:麦香牛块.奶牛们正在想尽一切办 ...
- [Luogu2737] [USACO4.1]麦香牛块Beef McNuggets
题目描述 农夫布朗的奶牛们正在进行斗争,因为它们听说麦当劳正在考虑引进一种新产品:麦香牛块.奶牛们正在想尽一切办法让这种可怕的设想泡汤.奶牛们进行斗争的策略之一是“劣质的包装”.“看,”奶牛们说,“如 ...
- P2737 [USACO4.1]麦香牛块Beef McNuggets
题目描述 农夫布朗的奶牛们正在进行斗争,因为它们听说麦当劳正在考虑引进一种新产品:麦香牛块.奶牛们正在想尽一切办法让这种可怕的设想泡汤.奶牛们进行斗争的策略之一是“劣质的包装”.“看,”奶牛们说,“如 ...
- [USACO4.1]麦香牛块Beef McNuggets 题解报告
题目描述 农夫布朗的奶牛们正在进行斗争,因为它们听说麦当劳正在考虑引进一种新产品:麦香牛块.奶牛们正在想尽一切办法让这种可怕的设想泡汤.奶牛们进行斗争的策略之一是"劣质的包装".& ...
- P2737 [USACO4.1]麦香牛块Beef McNuggets(完全背包+数论确定上界)
题目链接:https://www.luogu.org/problem/show?pid=2737 题目大意:农夫布朗的奶牛们正在进行斗争,因为它们听说麦当劳正在考虑引进一种新产品:麦香牛块.奶牛们正在 ...
- [USACO4.1]麦香牛块Beef McNuggets By cellur925
题目描述 农夫布朗的奶牛们正在进行斗争,因为它们听说麦当劳正在考虑引进一种新产品:麦香牛块.奶牛们正在想尽一切办法让这种可怕的设想泡汤.奶牛们进行斗争的策略之一是“劣质的包装”.“看,”奶牛们说,“如 ...
- [USACO4.1]麦香牛块Beef McNuggets
https://www.luogu.org/problemnew/show/P2737 给出n个数ai,求这n个数不能累加出的最大的数 最大的数无限大或能凑出所有的自然数则输出0 n<=10,a ...
随机推荐
- IOS开发学习笔记027-UITableView 使用模型对象
1.模型对象 2.单组数据的显示 1.模型对象 继续优化上一个程序 上一次用到字典,但是坏处多多.这里将这些数据封装到类中. 这就是MVC中得模型,模型就是数据的显示结构 新建一个类,添加几个属性和一 ...
- 安恒月赛 image up
http://101.71.29.5:10007/index.php?page=login 仔细观察这个url的话会发现,存在文件包含. 而且并没有login.php而是login,猜测代码是 < ...
- Python学习-day13 SqlAlchemy
本节内容 ORM介绍 sqlalchemy安装 sqlalchemy基本使用 多外键关联 多对多关系 表结构设计作业 1. ORM介绍 orm英文全称object relational mapping ...
- Git 笔记 - section 1
1. 创建版本库 创建目录 git init git add <file> git commit -m "本次提交内容的说明" 2. 查看状态 git status g ...
- linux基础(基本命令)
Linux学习 1.Linux安装.配置 Linux的操作背景介绍 Linux操作系统 开源.自由且开发源代码的类Unix操作系统 厂商较多 著名的有R ...
- Windows下Git多账号ssh-key(复制自己用)
Windows下Git多账号配置,同一电脑多个ssh-key的管理 这一篇文章是对上一篇文章<Git-TortoiseGit完整配置流程>的拓展,所以需要对上一篇文章有所了解,当然直接往下 ...
- jquery的html、text、val的用法
.html()用为读取和修改元素的HTML标签 .text()用来读取或修改元素的纯文本内容 .val()用来读取或修改表单元素的value值. 这三个方法功能上的对比 .html(),.text() ...
- AngularJs之HelloWorld
<!DOCTYPE html> <html lang="en" ng-app> <head> <meta charset="UT ...
- Mail.Ru Cup 2018 Round 2 Problem C Lucky Days
设在第 $x$ 天二人都 lucky,则有 $\DeclareMathOperator{\lcm}{lcm}$ $ x = y_a t_a + R_a $ $ x= y_b t_ b + R_b$ 约 ...
- 用 Ipe 画图
如何画一个箭头 首先要了解一个概念:「path object」. Path objects are objects that are formed with lines or curves, exam ...