社区讨论

蒟蒻求助(违规紫衫

灌水区参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@lzxs7z1n
此快照首次捕获于
2024/08/17 14:53
2 年前
此快照最后确认于
2024/08/17 15:00
2 年前
查看原帖
CPP
问题描述: 
学校想在广告板上贴不同的宣传单(宣传单长度不一定相同),宣传单与广告板
宽度相同,他想要在长度为n个单位的广告板上张贴至多n张宣传单,如果选择
第i张贴宣传单时需要满足: 
 第i张必须要覆盖掉广告板的第i个位置; 
 宣传单不能互相重叠,但是可以紧贴。 
小码想要知道按照要求,他至少需要贴几张宣传单才能将广告板贴满。请你用编
程的方式解决这个问题。 
输入描述: 
第一行输入测试组数t; 
每组测试数据的第一行输入一个整数n代表广告板的长度(同时也代表了宣传单
的张数),第二行输入n个整数表示每一张宣传单的长度。 
输出描述: 
输出t行数据,每行包含一个整数,代表小码至少需要贴的宣传单的数量;如果
无解,直接输出−1。 
输入样例13 
4 
1 2 2 3 
3 
2 2 2 
4 
5 6 1 3  
输出样例12 -1 -1 
解释:   
对于第一组测试数据,有两种合法的选择方式,都需要两张: 
 贴第一、四张宣传单; 
 贴第二、三张宣传单; 
对于第二组测试数据,无论怎么张贴都会有重叠部分,故输出-1。 
对于第三组测试数据,可以用13覆盖,但是1是第4个数,不能满足第i个
覆盖掉第i个位置,故输出-1。 
数据规模和约定: 
1<=t<=30;1<=ai<=n<=5000

回复

0 条回复,欢迎继续交流。

正在加载回复...