首页 技术 正文
技术 2022年11月21日
0 收藏 741 点赞 3,233 浏览 2788 个字

问题 A: Assembly Required

时间限制: 1 Sec  内存限制: 128 MB

提交: 49  解决: 25

[提交] [状态] [命题人:admin]

题目描述

Princess Lucy broke her old reading lamp, and needs a new one. The castle orders a shipment of parts from the Slick Lamp Parts Company, which produces interchangable lamp pieces.

There are m types of lamp pieces, and the shipment contained multiple pieces of each type. Making a lamp requires exactly one piece of each type. The princess likes each piece with some value, and she likes a lamp as much as the sum of how much she likes each of the pieces.

You are part of the castle staff, which has gotten fed up with the princess lately. The staff needs to propose k distinct lamp combinations to the princess (two lamp combinations are considered distinct if they differ in at least one piece). They decide to propose the k combinations she will like the least. How much will the princess like the k combinations that the staff proposes?

输入

The first line of input contains a single integer T (1 ≤ T ≤ 10), the number of test cases. The first line of each test case contains two integers m (1 ≤ m ≤ 100), the number of lamp piece types and k (1 ≤ k ≤ 100), the number of lamps combinations to propose. The next m lines each describe the lamp parts of a type;

they begin with ni (2 ≤ ni ≤ 100), the number of pieces of this type, followed by ni integers vi,1 ,… , vi,ni(1 ≤ vi,j ≤ 10,000) which represent how much the princess likes each piece. It is guaranteed that k is no greater than the product of all ni ’s.

输出

For each test case, output a single line containing k integers that represent how much the princess will like the proposed lamp combinations, in nondecreasing order.

样例输入

复制样例数据

22 22 1 22 1 33 104 1 5 3 103 2 3 35 1 3 4 6 6

样例输出

2 34 5 5 6 6 7 7 7 7 7

提示

In the first case, there are four lamp pieces, two of each type. The worst possible lamp has value 1 + 1 = 2,

while the second worst possible lamp has value 2 + 1 = 3.

题意:

第一行一个样例数T

第二行 m 和 k

接下来是m行 第一个数字n 表示这行有n个数

要求从每行选一个数 组成一个数

求前k个最小的数

思路 :如果一行选一个再比较这样肯定不行啦

既然我们只要前k个最小的

那么只需要把一行的每个数字去加上上一行求出的前k个最小的数,

因为最小值肯定是从这些数里产生

这样每次遍历复杂度最大也才 m <= 100 * n <= 100 * k <= 100   1e6? (瞎算一通

#include<bits/stdc++.h>using namespace std;#define pb push_back#define mp make_pair#define rep(i,a,n) for(int i=a;i<n;++i)#define readc(x) scanf("%c",&x)#define read(x) scanf("%d",&x)#define sca(x) scanf("%d",&x)#define read2(x,y) scanf("%d%d",&x,&y)#define read3(x,y,z) scanf("%d%d%d",&x,&y,&z)#define print(x) printf("%d\n",x)#define mst(a,b) memset(a,b,sizeof(a))#define lowbit(x) x&-x#define lson(x) x<<1#define rson(x) x<<1|1#define pb push_back#define mp make_pairtypedef pair<int,int> P;typedef long long ll;const int INF =0x3f3f3f3f;const int inf =0x3f3f3f3f;const int mod = 1e9+7;const int MAXN = 105;const int maxn = 10005;int n,m,k;int x;int cnt,tot,flag;int ans[maxn];int pre[maxn];int main() {    int t;    read(t);    while(t--){      memset(ans,0,sizeof ans); //初始化      memset(pre,0,sizeof pre);      cnt = 1;      read2(m,k);      for(int i = 0; i < m; i++){        for(int j = 0; j < k ; j++){           pre[j] = ans[j] ;   //pre[] 记录上一行加完后的前k个数        }        read(n);        tot = 0;        for(int j = 0; j < n; j++){          read(x);          for(int u = 0; u < cnt ; u++){              ans[tot++] = x + pre[u];   // 输入的数加上上一行的前k个数          }        }        sort(ans,ans + tot); //从小到大排序        cnt = min(k,tot);  //如果cnt 超过了k 那就按k 来算了      }      for(int i = 0; i < k; i++){ //取前k个输出        printf("%d%c", ans[i], i == k - 1 ? '\n' : ' ');      }    }}
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,917
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,442
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,255
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,068
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,700
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,741