zoukankan      html  css  js  c++  java
  • 动态规划入门 洛谷P2409 Y的积木

     P2409 Y的积木

    题目背景

    Y是个大建筑师,他总能用最简单的积木拼出最有创意的造型。

    题目描述

    Y手上有n盒积木,每个积木有个重量。现在他想从每盒积木中拿一块积木,放在一起,这一堆积木的重量为每块积木的重量和。现在他想知道重量和最小的k种取法的重量分别是多少。(只要任意更换一块积木,就视为一种不同的取法。如果多种取法重量总和一样,我们需要输出多次。)

    输入输出格式

    输入格式:

    第一行输入两个整数,n,k,意义如题目所描述。

    每组数据接下来的n行,第一个整数为mi,表示第i盒积木的数量,在同一行有mi个整数,分别表示每个积木的重量。

    输出格式:

    一行,重量最小的k种取法的重量,要求对于每个数据,从小到大输出

    输入输出样例

    输入样例#1:
    3 10
    4 1 3 4 5
    3 1 7 9
    4 1 2 3 5
    
    输出样例#1:
    3 4 5 5 6 6 7 7 7 7
    

    说明

    对于30%的数据:2<=mi<=10,1<=n<=10

    对于50%的数据:2<=mi<=50,1<=n<=50

    对于100%的数据:2<=mi<=100,1<=n<=100,1<=k<=10000,每个积木的重量为不超过100的正整数,所有mi的积大于等于k。本题不卡常。

    分组背包

    真水题......我真菜......

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 using namespace std;
     6 int n,k,sum;
     7 int mi[110],in[110][110],f[110][10010];
     8 //f[i][j] 前i个盒子质量为j的方案数 
     9 int main(){
    10     scanf("%d%d",&n,&k);
    11     for(int i=1;i<=n;i++){
    12         int maxx=0;
    13         scanf("%d",&mi[i]);
    14         for(int j=1;j<=mi[i];j++){
    15             scanf("%d",&in[i][j]);
    16             maxx=(maxx,in[i][j]);
    17         }
    18         sum+=maxx;
    19     }
    20     f[0][0]=1;
    21     for(int i=1;i<=n;i++)
    22         for(int j=1;j<=mi[i];j++)
    23             for(int p=sum;p>=in[i][j];p--)
    24                 if(f[i-1][p-in[i][j]]) f[i][p]+=f[i-1][p-in[i][j]];
    25     for(int i=1;i<=sum;i++)
    26         for(int j=1;j<=f[n][i];j++)
    27             if(k) printf("%d ",i),k--;
    28             else return 0;
    29     return 0;
    30 }
  • 相关阅读:
    如何在Ubuntu Server 18.04上安装Microsoft的Procmon
    如何在Ubuntu 20.04上安装Wine 5.0
    如何在Kali Linux 2020中启用SSH服务
    如何在Ubuntu 20.04 LTS Focal Fossa上安装Apache Groovy
    如何使用命令在Ubuntu 20.04 Linux上安装Vmware Tools
    在Ubuntu 20.04 LTS Focal Fossa上安装Zabbix Agent
    hdu 2089 不要62
    hdu 2093 成绩排名
    hdu 2104 hide handkerchief
    leetcode147对链表进行插入排序
  • 原文地址:https://www.cnblogs.com/zwube/p/6892119.html
Copyright © 2011-2022 走看看