这两天贼烦,ccf炸了,还有一个烦心事。哎我都不知道自己能不能坚持下去了。马上期末考了。这段时间还是抓紧时间复习吧同时刷usaco的节奏要跟以前一样了,毕竟课少了。

题解:

只要你知道以下的数论结论,这道题就是水背包了:

有两个数p,q,且gcd(q,p)=1,则最大无法表示成px+qy(x>=0,y>=0)的数是pq-q-p(对于n>pq-q-p,都可以表示成px+qy;而pq-q-p,就无法表示成px+qy)。

而且数越多,这个值只会越小。

所以我们只需考虑小于pq-q-p的范围的最小值。对于一些无解的(全体最大公约数>1),或无数解的(有一个‘1’),应提前判断。 其实我们可以干脆全取上界为256*256-256*2

分析:第一步:判断这 n 个数的gcd,如果  gcd!= 1 则无解;     第二步:如果 gcd=1 则解小于最大的两个数的LCM。     第三步:背包,使用标记数组 d[],d[i]=d[i-a[j]];简单证明一下:第一步:     a1*x1+a2*x2+……+an*xn = p;     a1*y1+a2*y2+……+an*yn = p+1;所以:a1*(y1-x1)+a2*(y2-x2)+……+an*(yn-xn) = 1;所以:gcd(a1,a2,……,an)*[a1/gcd(a1,a2,……,an)*(y1-x1) + a2/gcd(a1,a2,……,an)*(y2-x2) +……+ an/gcd(a1,a2,……,an)*(yn-xn)]=1(a)所以:gcd(a1,a2,……,an)=1;第二步:……

以上证明就是证明红字部分要让大于这个数所有的数都可以表示明显p可以,则p+1肯定可以。得到a式。用反证法证明一下即可知gcd(a1-an)=1;

[a1/gcd(a1,a2,……,an)*(y1-x1) + a2/gcd(a1,a2,……,an)*(y2-x2) +……+ an/gcd(a1,a2,……,an)*(yn-xn)]=1/gcd(a1,a2,……,an);
因为等式左边是整数等式右边也是整数所以只能等于1;
然后就是dp找到所有状态。从大到小看那个状态不存在。
/*
ID:jinbo wu
LANG:C++
TASK: nuggets
*/
#include<bits/stdc++.h>
using namespace std;
int dp[256*256];
int a[15];
int gcd(int b,int c)
{if(c==0)return b;return gcd(c,b%c);
}
bool cmp(int a,int b)
{return a>b;
}
int main()
{freopen("nuggets.in","r",stdin);freopen("nuggets.out","w",stdout);int n;cin>>n;for(int i=0;i<n;i++)cin>>a[i];int g=a[0];if(n==1){cout<<"0"<<endl;return 0;}for(int i=1;i<n;i++){g=gcd(g,a[i]);if(g==1)break;}if(g!=1){cout<<"0"<<endl;return 0;}sort(a,a+n,cmp);dp[0]=1;int sum=a[0]*a[1]-a[0]-a[1];for(int i=0;i<n;i++){for(int j=a[i];j<=sum;j++){if(dp[j-a[i]])dp[j]=1;}}for(int i=sum;i>=0;i--){if(!dp[i]){cout<<i<<endl;return 0;}}
}
												

usaco Beef McNuggets相关推荐

  1. [USACO] Beef McNuggets

    [题目描述] 农夫布朗的奶牛们正在进行斗争,因为它们听说麦当劳正在考虑引进一种新产品:麦香牛块.奶牛们正在想尽一切办法让这种可怕的设想泡汤.奶牛们进行斗争的策略之一是"劣质的包装" ...

  2. P2737 [USACO4.1]麦香牛块Beef McNuggets 数学题 + 放缩思想

    https://www.luogu.org/problem/show?pid=2737#sub 先说一个结论:对于两个数p, q,且gcd(p, q) = 1(这个很重要,是条件来的).他们不能组合成 ...

  3. 【luogu2737】 [USACO4.1]麦香牛块Beef McNuggets [动态规划 完全背包][数学 扩展欧几里德]...

    证明应该是小凯的诱惑的升级版 应该可以用那个同余最短路来跑 1 #include<bits/stdc++.h> 2 using namespace std; 3 #define ll lo ...

  4. [USACO4.1]麦香牛块Beef McNuggets By cellur925

    题目描述 农夫布朗的奶牛们正在进行斗争,因为它们听说麦当劳正在考虑引进一种新产品:麦香牛块.奶牛们正在想尽一切办法让这种可怕的设想泡汤.奶牛们进行斗争的策略之一是"劣质的包装".& ...

  5. [USACO4.1]麦香牛块Beef McNuggets 题解报告

    题目描述 农夫布朗的奶牛们正在进行斗争,因为它们听说麦当劳正在考虑引进一种新产品:麦香牛块.奶牛们正在想尽一切办法让这种可怕的设想泡汤.奶牛们进行斗争的策略之一是"劣质的包装".& ...

  6. 【USACO题库】 动态规划 汇总(普及-/普及)

    数据结构提高是够用了=-=虽然树状数组没学 但是其他类问题只能打到普及 普及啊啊啊!!! 而且这边省选组都是什么仙人掌啊,什么系什么点对啊...感觉数据结构并没有什么用 (实际上很有用但我不会用就是了 ...

  7. USACO Section 4

    前言 好久没更新这个系列了,最近闲的无聊写一下.有两题搜索懒得写了. P2737 [USACO4.1]麦香牛块Beef McNuggets https://www.luogu.com.cn/probl ...

  8. hdu与poj题目分类

    POJ 初期: 一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. (4)递推. (5)构造法.(po ...

  9. 杭电oj题目题型分类(转)

    1001 整数求和 水题 1002 C语言实验题--两个数比较 水题 1003 1.2.3.4.5... 简单题 1004 渊子赛马 排序+贪心的方法归并 1005 Hero In Maze 广度搜索 ...

最新文章

  1. C++ Boost库初步使用 - 使用CFree
  2. 一个操作内表的函数’CTVB_COMPARE_TABLES’
  3. URL Collection
  4. ROS中配置主从机需注意的几点
  5. Android开发中的多线程编程技术
  6. CF980D Perfect Groups
  7. 【Java从0到架构师】MyBatis - 连接池、分页_PageHelper
  8. python系列教程_python基础学习系列教程2-进阶之路中绕不开的知识点。
  9. python使用lxml库对解析后的DOM树形成的xpath计算得到平均值、中位数、方差
  10. baidu搜索出现错误提示页面
  11. 数学分析:函数序列及其一致收敛性
  12. 计算机程序员带什么手表,程序员只爱格子衫?这些手表程序员也喜欢!
  13. 已解决:axios 发送post请求,报403错误
  14. 入职一年感言简短_如何在Windows任务栏中放入简短说明
  15. 高性价比的“小985”院校推荐!认可度超高
  16. PTA乙级 1068 万绿丛中一点红——20分
  17. 常见网络攻击原理及其防御
  18. linux命令查看服务器的型号、序列号、内存插槽数
  19. 洛谷p2655 2038年问题 普及/提高- 模拟
  20. XCode8新的功能

热门文章

  1. Python gRPC 安装
  2. mybatis ResultMap
  3. 【C#】集合_哈希表_字典_泛型_文件
  4. 什么是码元计算机通信
  5. pytorch nn.Embedding
  6. 全面理解Python中的类型提示(Type Hints)
  7. MindSpore后端运行类
  8. 目标检测中的anchor-based 和anchor free
  9. GIT上传服务器同步到web目录
  10. C++实现九九乘法表