洛谷P2409 Y的积木
P2409 Y的积木
- 77通过
- 491提交
- 题目提供者zhouyonglong
- 标签云端评测
- 难度普及+/提高
提交 讨论 题解
最新讨论
- 这组数据几乎可以卡掉所有程…
- 第一个题解有点问题
- 求教大神 90分代码
- 就是算的分组背包时间不够,…
- 求解为何编译超时?
- 有BUG
题目背景
Y是个大建筑师,他总能用最简单的积木拼出最有创意的造型。
题目描述
Y手上有n盒积木,每个积木有个重量。现在他想从每盒积木中拿一块积木,放在一起,这一堆积木的重量为每块积木的重量和。现在他想知道重量和最小的k种取法的重量分别是多少。(只要任意更换一块积木,就视为一种不同的取法。如果多种取法重量总和一样,我们需要输出多次。)
输入输出格式
输入格式:
第一行输入两个整数,n,k,意义如题目所描述。
每组数据接下来的n行,第一个整数为mi,表示第i盒积木的数量,在同一行有mi个整数,分别表示每个积木的重量。
输出格式:
一行,重量最小的k种取法的重量,要求对于每个数据,从小到大输出
输入输出样例
3 10
4 1 3 4 5
3 1 7 9
4 1 2 3 5
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。本题不卡常。
分析:显然搜索对于本题的数据而言是不行的,然后想到了一道题目,给你两个序列,从每个中选一个数相加,求和最小的k个,显然可以利用优先队列(小根堆)维护,但是对于本题而言较难维护,考虑dp.
一开始想的是根据题目给的数据来定状态,设f[i][j]为前i盒积木中第j小的方案,但是不知道怎么继续转移,换一种表示状态的方法.一般而言,计算的结果是不能充当状态的,例如j(可能表示不好),那么我们可以设f[i][j]为前i盒积木中重量为j的方案数,这样就避免了算第j小,那么f[i][j] = Σf[i-1][j-w[i][k]],w[i][k]为第i盒积木中第k个积木的重量,如果直接枚举的话不能过,还需要优化一下枚举的范围.计算出n盒积木中的最大和和最小和再枚举即可.
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm> using namespace std; int n, k, w[][], f[][], sizee[], minnum,maxnum, sum; int main()
{
scanf("%d%d", &n, &k);
for (int i = ; i <= n; i++)
{
int m;
scanf("%d", &m);
int minn = ,maxx = ;
for (int j = ; j <= m; j++)
{
scanf("%d", &w[i][j]);
minn = min(w[i][j], minn);
maxx = max(w[i][j], maxx);
sum += w[i][j];
}
minnum += minn;
maxnum += maxx;
sizee[i] = m;
}
f[][] = ;
for (int i = ; i <= n; i++)
for (int j = ; j <= sizee[i]; j++)
for (int kk = w[i][j]; kk <= maxnum; kk++)
if (f[i][kk] <= k && f[i - ][kk - w[i][j]] <= k)
f[i][kk] += f[i - ][kk - w[i][j]];
else
f[i][kk] = k; int kk = ;
for (int i = minnum; i <= sum; i++)
if (f[n][i])
for (int j = ; j <= f[n][i]; j++)
{
kk++;
if (kk > k)
return ;
printf("%d ", i);
} return ;
}
洛谷P2409 Y的积木的更多相关文章
- 洛谷P5162 WD与积木 [DP,NTT]
传送门 思路 真是非常套路的一道题-- 考虑\(DP\):设\(f_n\)为\(n\)个积木能搭出的方案数,\(g_n\)为所有方案的高度之和. 容易得到转移方程: \[ \begin{align*} ...
- 洛谷 P5162 WD与积木【多项式求逆】
设f[i]为i个积木能堆出来的种类,g[i]为i个积木能堆出来的种类和 \[ f[n]=\sum_{i=1}^{n}C_{n}^{i}g[n-i] \] \[ g[n]=\sum_{i=1}^{n}C ...
- 洛谷 P5162 WD与积木 解题报告
P5162 WD与积木 题目背景 WD整日沉浸在积木中,无法自拔-- 题目描述 WD想买\(n\)块积木,商场中每块积木的高度都是\(1\),俯视图为正方形(边长不一定相同).由于一些特殊原因,商家会 ...
- P2409 Y的积木
luogu月赛 暴力dfs,估计过不了几个点,大概也就得30分左右? #include <bits/stdc++.h> using namespace std; const int max ...
- 洛谷10月月赛Round.3
Rank11:260=60+100+100 P2409 Y的积木 题目背景 Y是个大建筑师,他总能用最简单的积木拼出最有创意的造型. 题目描述 Y手上有n盒积木,每个积木有个重量.现在他想从每盒积木中 ...
- 洛谷P2342-叠积木
Problem 洛谷P2342-叠积木 Accept: 373 Submit: 1.1k Time Limit: 1000 mSec Memory Limit : 128MB Problem ...
- 【洛谷4005】小Y和地铁(搜索)
[洛谷4005]小Y和地铁(搜索) 题面 洛谷 有点长. 题解 首先对于需要被链接的两个点,样例中间基本上把所有的情况都给出来了. 但是还缺了一种从下面绕道左边在从整个上面跨过去在从右边绕到下面来的情 ...
- BZOJ 4385 洛谷3594 POI2015 WIL-Wilcze doły
[题解] 手残写错调了好久QAQ...... 洛谷的数据似乎比较水.. n个正整数!!这很重要 这道题是个类似two pointer的思想,外加一个单调队列维护当前区间内长度为d的子序列中元素之和的最 ...
- 洛谷OJ P1196 银河英雄传说(带权并查集)
题目描述 公元五八○一年,地球居民迁移至金牛座α第二行星,在那里发表银河联邦 创立宣言,同年改元为宇宙历元年,并开始向银河系深处拓展. 宇宙历七九九年,银河系的两大军事集团在巴米利恩星域爆发战争.泰山 ...
随机推荐
- JAVA的单例模式与延时加载
延迟加载(lazy load)是(也称为懒加载),也叫延迟实例化,延迟初始化等,主要表达的思想就是:把对象的创建延迟到使用的时候创建,而不是对象实例化的时候创建.延迟加载机制是为了避免一些无谓的性能开 ...
- get------引用接口
关于引用接口 1. 通过get方式 2. String poiUrl="http://接口地址?接口ID=接口给你的ID&参数1=?&参数2=?&参数 ...
- iOS、swift、React Native学习常用的社区、论坛
<!----iOS> <!----Swift>*IOS开发常用社区:http://code4app.com/ *IOS开发常用社区:http://www.cocoachina. ...
- PetaPoco 批量插入数据
网上找的代码,还没经过验证 /// <summary> /// Bulk inserts multiple rows to SQL /// </summary> /// < ...
- java代码
io的使用 package com.tan.io; import java.io.*; import java.util.*; class Employee{ private String name; ...
- Quant的笑话
Q) Why was the FX quant so unlucky with the ladies?A) Because he always kept his dates short. Q) Why ...
- html框架
1.框架的概念 框架:将一个浏览器窗口划分成若干个小窗口 2.框架集合框架页 框架集<frameset>:主要用来划分窗口的. 框架页<frame>:主要用来指定窗口默认显示的 ...
- Python之路,day5-Python基础
for#列表生成式 data = [1,2,3,4,5,6,7] #####列表生成式 #data = [i+1 for i in data] data = [i*2 if i>5 else i ...
- Arrays数组的常用方法
下面代码主要说明了Arrays数组的几个常用方法(红色字体) import java.util.Scanner;import java.util.Arrays; public class T ...
- Django+uwsgi+Nginx安装部署
安装 安装Nginx Nginx是最流行的高性能HTTP服务器. 安装pcre: wget https://sourceforge.net/projects/pcre/files/pcre/8.37/ ...