USACO4.1.1 Beef McNuggets (nuggets)
来源:互联网 发布:0 1背包分支界限算法 编辑:程序博客网 时间:2024/06/06 23:52
计算所有读入的最大公约数,如果最大公约数不为1,则输出0,即无法满足任何数量的答案
接着用dp求解(1~65536),状态转移方程为:dp[ i ] = dp[ i ] | dp[ i - num[ j ] ]
从65536开始倒序扫描dp[ ]数组,第一个为0的dp[ i ]对应的 i 即为答案
/*ID:xsy97051LANG:C++TASK:nuggets*/#include <iostream>#include <cstdio>#include <cstring>using namespace std;int n,num[11],k;bool dp[100000];int gcd(int x,int y){if(x==0) return y;return gcd(y%x,x);}int main(){freopen("nuggets.in","r",stdin);freopen("nuggets.out","w",stdout);cin>>n;for(int i=1;i<=n;i++)cin>>num[i];k=num[1];for(int i=2;i<=n;i++)k=gcd(k,num[i]);if(k!=1){cout<<0<<endl;return 0;}memset(dp,0,sizeof(dp));dp[0]=1;for(int i=1;i<=65536;i++)for(int j=1;j<=n;j++)if(i>=num[j])dp[i]=dp[i] | dp[i-num[j]];int res=0;for(int i=65536;i>=1;i--)if(!dp[i]){res=i;break;}cout<<res<<endl;return 0;}
0 0
- USACO4.1.1 Beef McNuggets (nuggets)
- USACO4.1.1 Beef McNuggets (nuggets)
- usaco4.1.1Beef McNuggets
- [USACO4.1.1]Beef McNuggets
- USACO 4.1 Beef McNuggets (nuggets)
- P2737 [USACO4.1]麦香牛块Beef McNuggets
- [USACO4.1]麦香牛块Beef McNuggets 题解报告
- Beef McNuggets
- Section 4.1 Beef McNuggets
- usaco Beef McNuggets
- USACO 4.1 Beef McNuggets
- usaco Beef McNuggets
- usaco 4.1 Beef McNuggets 搜索
- USACO Beef McNuggets 解题报告
- USACO section 4.1 Beef McNuggets(数论+背包)
- USACO 4.1 Beef McNuggets麦香牛块 DP-数论
- USACO-Section 4.1-PROB Beef McNuggets
- USACO-Section 4.1 Beef McNuggets (DP)
- 多线程之Runnable,Callable,Future,FutureTask
- Java异常处理,SimpleDateFormat中的parse函数操作
- maven的profile设置
- LeetCode[Tree]: Path Sum
- IOS学习笔记 第2篇 OC面向对象(二)
- USACO4.1.1 Beef McNuggets (nuggets)
- MTK_SDK 相关问题整理
- POJ 3237 Tree (树链剖分+线段树)
- (5086)HDU
- 【hibernate框架】关系映射之一对一单项外键关联(Annotation实现)
- Palindrome Partitioning II
- LeetCode Longest Substring Without Repeating Characters
- 伸展树BZOJ1493
- C#中静态与非静态方法比较