[CSP-S模拟测试]:序列(构造)
题目描述
给定$N,A,B$,构造一个长度为$N$的排列,使得:
$\bullet$排列长度为$N$;
$\bullet$最长上升子序列长度为$A$;
$\bullet$最长下降子序列长度为$B$。
我们有$SPJ$,有解任意给出一组,否则说明无解。
输入格式
第一行一个整数$T(1\leqslant T\leqslant 10)$,表示数据组数。
接下来$T$行,每行三个正整数$N$、$A$、$B$。
输出格式
对每组数据:
如果有解,输出两行,第一行一个字符串$Yes$,接下来一行$N$个整数,表示排列。
否则,输出一行一个字符串$No$。
样例
样例输入:
3
4 2 2
4 4 1
4 3 3
样例输出:
Yes
3 4 1 2
Yes
1 2 3 4
No
数据范围与提示
对于全部的测试数据,保证$T\leqslant 10,N\leqslant 10^5,\sum N\leqslant 2\times 10^5
$\bullet$子任务$1$($20$分):$N\leqslant 5$。
$\bullet$子任务$2$($30$分):每组数据均满足$N=A\times B$。
$\bullet$子任务$3$($20$分):$B\leqslant 2$。
$\bullet$子任务$4$($30$分):无特殊限制。
题解
一看就是一个构造题,先从$N=A\times B$入手,我们可以将序列分成$B$块,让这$B$块内部构成长度为$A$的上升序列,$B$块相互之间呈下降序列即可。
举个栗子,当$N=10,A=2,B=5$,我们可以将其构造成:$(9,10),(7,8),(5,6),(3,4),(1,2)$;可以发现,每一个小括号内呈上升,而小括号之间是下降序列。
如果不满足$N=A\times B$,我们还可以接着用这样的思想。
最后来考虑$No$的情况,如果$A+B<N-1$,那么显然不行;如果$A\times B<N$也是不行的。
于是这到题就被解决了。
时间复杂度:$\Theta(N)$。
期望得分:$100$分。
实际得分:$100$分。
代码时刻
#include<bits/stdc++.h>
using namespace std;
int main()
{
int T;scanf("%d",&T);
while(T--)
{
int N,A,B;scanf("%d%d%d",&N,&A,&B);
if(N<A+B-1||N>1LL*A*B){puts("No");continue;}
int len=N-B;puts("Yes");
for(int i=1;i<=B;i++)
{
int now=1;
while(now<A&&len){len--;now++;}
for(int j=N-now+1;j<=N;j++)printf("%d ",j);
N-=now;
}puts("");
}
return 0;
}
rp++
[CSP-S模拟测试]:序列(构造)的更多相关文章
- [CSP-S模拟测试]:序列(二分答案+树状数组)
题目传送门(内部题98) 输入格式 第一行一个整数$n$,第二行$n$个整数$a_1\sim a_n$,第三行$n$个整数$b_1\sim b_n$. 输出格式 一行一个整数表示$\max(r-l+1 ...
- [CSP-S模拟测试]:序列(主席树)
题目描述 小$A$把自己之前得到的序列展示给了小$B$,不过这一次,他并不要求小$B$模仿他之前的行为.他给了小$B$一些询问,每个询问都是$l\ r\ x$的形式,要求小$B$数出在序列的第$l$个 ...
- Mockito:一个强大的用于Java开发的模拟测试框架
https://blog.csdn.net/zhoudaxia/article/details/33056093 介绍 本文将介绍模拟测试框架Mockito的一些基础概念, 介绍该框架的优点,讲解应用 ...
- Mock 模拟测试简介及 Mockito 使用入门
Mock 是什么mock 测试就是在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法.这个虚拟的对象就是mock对象.mock对象就是真实对象在调试期间的代 ...
- noi2019模拟测试赛(四十七)
noi2019模拟测试赛(四十七) T1与运算(and) 题意: 给你一个序列\(a_i\),定义\(f_i=a_1\&a_2\&\cdots\&a_i\),求这个序列的所 ...
- springboot2.0入门(四)----mock模拟测试+单元测试
一.本节主要记录模拟测试.单元测试: 二.mock 测试 1.1什么是Mock? 在面向对象程序设计中,模拟对象(英语:mock object,也译作模仿对象)是以可控的方式模拟真实对象行为的假的对象 ...
- csp-s模拟测试97
csp-s模拟测试97 猿型毕露.水题一眼秒,火题切不动,还是太菜了. $T1$看了一会儿感觉$woc$期望题$T1??$假的吧??. $T2$秒. $T3$什么玩意儿. 40 01:24:46 00 ...
- csp-s模拟测试93
csp-s模拟测试93 自闭场. $T1$想到$CDQ$,因为复杂度少看见一个$0$打了半年还用了$sort$直接废掉,$T2$,$T3$直接自闭暴力分都没有.考场太慌了,心态不好. 02:07:34 ...
- csp-s模拟测试91
csp-s模拟测试91 倒悬吃屎的一套题. $T1$认真(?)分析题意发现复杂度不能带$n$(?),计划直接维护答案,考虑操作对答案的影响,未果.突然发现可以动态开点权值线段树打部分分,后来$Tm$一 ...
随机推荐
- 循环结构 :for
循环结构 :for 循环四要素: 1.初始化条件 2.循环条件 3.循环体 4.迭代条件 格式: for(初始化条件;循环条件;迭代条件){ 循环体; } 执行顺序 :1 -> 2 -> ...
- c++多线程并发学习笔记(2)
等待一个时间或其他条件 在一个线程等待完成任务时,会有很多选择: 1. 它可以持续的检查共享数据标志(用于做保护工作的互斥量),直到另一个线程完成工作时对这个标志进行重设.缺点:资源浪费,开销大 2. ...
- 管道(Pipe)----计算机进程间通信
参至他人博客:https://blog.csdn.net/u011583316/article/details/83419805
- C++关于erase的复杂度(转载)
被这个问题困扰了很多次,有必要整理一下. 当然最好的参考资料就是http://www.cplusplus.com/reference/set/set/erase/ 里的Complexcity部分了,但 ...
- P4050 [JSOI2007]麻将
传送门 怎么好像没什么人写 $dp$ ...? 设 $f[i][j][k][0/1]$ 表示当前处理完前 $1$ 到 $i$ 的数,上一位开始的顺子有 $j$ 个,当前位开始的顺子有 $k$ 个,是否 ...
- CentOS7部署CDH6.0.1大数据平台
Cloudera’s Distribution Including Apache Hadoop,简称“CDH”,基于Web的用户界面,支持大多数Hadoop组件,包括HDFS.MapReduce.Hi ...
- Postgresql重安装报错The database cluster initialisation failed.
之前安装过PostgreSQL-9.6.5,卸载后,重装PostgreSQL-9.1.3版本,报错. 清除注册表,删除postgres账户,清除垃圾后,再次安装仍然报错. 最后改变默认安装路径,神奇的 ...
- 内存分析工具MAT(Memory Analyzer Tool)从安装到使用
一.安装 首先,你得有一个Eclipse(因为MAT是Eclipse的插件) 然后,你要在Eclipse上安装MAT,步骤如下: 1.点击Help,Install New Soft,就出现了以下Ins ...
- 2019-10-31-VisualStudio-2019-新特性
title author date CreateTime categories VisualStudio 2019 新特性 lindexi 2019-10-31 08:48:27 +0800 2019 ...
- windows_vs编译过程
visual studio 2010 编译程序时,首先是cpp经过预处理,处理掉#define,#include等等.#include部分,将头文件部分替换到cpp中.之后进行优化过程,到.s.之后进 ...