• 蓝桥杯 ALGO-108 最大体积 (动态规划)


    问题描述
      每个物品有一定的体积(废话),不同的物品组 合,装入背包会战用一定的总体积。假如每个物品有无限件可用,那么有些体积是永远也装不出来的。为了尽量装满背包,附中的OIER想要研究一下物品不能装 出的最大体积。题目保证有解,如果是有限解,保证不超过2,000,000,000
      如果是无限解,则输出0
    输入格式
      第一行一个整数n(n<=10),表示物品的件数
      第2行到N+1行: 每件物品的体积(1<= <=500)
    输出格式
      一个整数ans,表示不能用这些物品得到的最大体积。
    样例输入
    3
    3
    6
    10
    样例输出
    17
     
    个人觉得这道题的测评似乎有一点问题,我的测试只通过了90%,只有输入1 1的时候,我的程序自己调试时输出0没问题,但在他那里却报运行错误
     1 #include<iostream>
     2 #include<queue>
     3 #include<set>
     4 #include<algorithm>
     5 using namespace std;
     6 int gcd(int a,int b){
     7     if(b==0)return a;
     8     return gcd(b,a%b);
     9 }
    10 int N,a[20];
    11 bool isRight(){
    12     for(int i=1;i<N;i++){
    13         for(int j=i+1;j<=N;j++){
    14             int s=gcd(a[i],a[j]);
    15             if(s!=a[i]&&s!=a[j]) return 1;
    16         }
    17     }
    18     return 0;
    19 }
    20 set<long> dp;
    21 bool canFind(long n){
    22     for(int i=1;i<=N;i++){
    23         if(n>=a[i]&&!dp.count(n-a[i])) {
    24             return 0;
    25         }
    26     }
    27     return 1;
    28 }
    29 int main(){
    30     cin>>N;
    31     for(int i=1;i<=N;i++){
    32         cin>>a[i];
    33     }
    34     if(!isRight()){
    35         cout<<"0"<<endl;
    36         return 1;
    37     }
    38     sort(a+1,a+N+1);
    39     queue<long> q;
    40     
    41     for(int i=1;i<a[1];i++){
    42         dp.insert(i);q.push(i);
    43     }
    44     
    45     long ans=0;
    46     while(!q.empty()){
    47         long top=q.front();q.pop();
    48         ans=max(top,ans);
    49         for(int i=1;i<=N;i++){
    50             if(!dp.count(top+a[i])&&canFind(top+a[i])){
    51                 dp.insert(top+a[i]);
    52                 q.push(top+a[i]);
    53             }
    54         }
    55     }
    56     cout<<ans<<endl;
    57     return 0;
    58 } 
  • 相关阅读:
    进程管理 2
    进程管理 1
    Linux进程
    分配swap分区
    磁盘分区与挂载
    文件系统常用命令
    多线程
    系统hosts文件的作用
    sql 连接查询的区别 inner,left,right,full
    sql 游标
  • 原文地址:https://www.cnblogs.com/yifan2016/p/5269944.html
Copyright © 2020-2023  润新知