题目描述

给定$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模拟测试]:序列(构造)的更多相关文章

  1. [CSP-S模拟测试]:序列(二分答案+树状数组)

    题目传送门(内部题98) 输入格式 第一行一个整数$n$,第二行$n$个整数$a_1\sim a_n$,第三行$n$个整数$b_1\sim b_n$. 输出格式 一行一个整数表示$\max(r-l+1 ...

  2. [CSP-S模拟测试]:序列(主席树)

    题目描述 小$A$把自己之前得到的序列展示给了小$B$,不过这一次,他并不要求小$B$模仿他之前的行为.他给了小$B$一些询问,每个询问都是$l\ r\ x$的形式,要求小$B$数出在序列的第$l$个 ...

  3. Mockito:一个强大的用于Java开发的模拟测试框架

    https://blog.csdn.net/zhoudaxia/article/details/33056093 介绍 本文将介绍模拟测试框架Mockito的一些基础概念, 介绍该框架的优点,讲解应用 ...

  4. Mock 模拟测试简介及 Mockito 使用入门

    Mock 是什么mock 测试就是在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法.这个虚拟的对象就是mock对象.mock对象就是真实对象在调试期间的代 ...

  5. noi2019模拟测试赛(四十七)

    noi2019模拟测试赛(四十七) T1与运算(and) 题意: ​ 给你一个序列\(a_i\),定义\(f_i=a_1\&a_2\&\cdots\&a_i\),求这个序列的所 ...

  6. springboot2.0入门(四)----mock模拟测试+单元测试

    一.本节主要记录模拟测试.单元测试: 二.mock 测试 1.1什么是Mock? 在面向对象程序设计中,模拟对象(英语:mock object,也译作模仿对象)是以可控的方式模拟真实对象行为的假的对象 ...

  7. csp-s模拟测试97

    csp-s模拟测试97 猿型毕露.水题一眼秒,火题切不动,还是太菜了. $T1$看了一会儿感觉$woc$期望题$T1??$假的吧??. $T2$秒. $T3$什么玩意儿. 40 01:24:46 00 ...

  8. csp-s模拟测试93

    csp-s模拟测试93 自闭场. $T1$想到$CDQ$,因为复杂度少看见一个$0$打了半年还用了$sort$直接废掉,$T2$,$T3$直接自闭暴力分都没有.考场太慌了,心态不好. 02:07:34 ...

  9. csp-s模拟测试91

    csp-s模拟测试91 倒悬吃屎的一套题. $T1$认真(?)分析题意发现复杂度不能带$n$(?),计划直接维护答案,考虑操作对答案的影响,未果.突然发现可以动态开点权值线段树打部分分,后来$Tm$一 ...

随机推荐

  1. 关于MySQL的安装使用心得

    MySQL浅浅地学习了几天,当然还是转到正轨Java上来了,昨天打了一串代码,测试注解来着,结果MySQL挂了~~~ 如何干净卸载MySQL帖子有很多,不再赘述,注册表是个好东西~~ 卸载了Mysql ...

  2. 【WPS/Visio】WPS word无法复制或编辑Visio对象

    前言 Win10,WPS2019,Visio2016. 好像是有一次设置 .vsdx 的默认打开方式为Visio,之后每次在WPS里复制Visio对象,或双击编辑WPS word中以前的Visio对象 ...

  3. linux-memcache安装及memcached memcache扩展

    linux memcached安装yum -y install libevent libevent-deve yum list memcached yum -y install memcached m ...

  4. Python 里面如何生成随机数?

    在 Python 中用于生成随机数的模块是 random,在使用前需要 import. 如下例子可以酌情列举: random.random():生成一个 0-1 之间的随机浮点数: random.un ...

  5. AXI总线协议

    AXI总线协议 (一).概述 AXI (高性能扩展总线接口,Advanced eXtensible Interface)是ARM AMBA 单片机总线系列中的一个协议,是计划用于高性能.高主频的系统设 ...

  6. win 10 自带 Ubuntu 系统的文件位置

    win 10 自带 Ubuntu 系统的文件位置 Ubuntu 作为最为流行 Linux 系统中的一种,是用来学习 Linux 相关知识是最好不过的选择.专门搞一个 Ubuntu 系统的电脑不太现实, ...

  7. MVCC/分布式事务简介

    之前我们学习了RocksDB,但这还只是一个最基础的存储引擎.如果想把它在生产环境中用起来,还需要解决很多问题: 如何从单机扩展到分布式? 如何实现事务,并对事务进行并发控制? 用户接口能不能高级一点 ...

  8. vue项目1-pizza点餐系统6-路由精讲之复用router-view

    1.在主组件展示二级路由的组件内容,在App.vue中添加 <br> <div class="container"> <!-- row 行排列 --& ...

  9. python生成图片验证码

    import PIL from PIL import Image from PIL import ImageDraw,ImageFont import random def get_random_co ...

  10. Linux学习--第四天--find、locate、帮助命令、grep、who、w、压缩命令、网络命令、mount

    find 命令格式:find 搜索范围 匹配条件find 搜索范围 匹配条件(搜索范围一定要填写,不写默认为当前文件夹,不包括子文件夹.) find /etc -name init #搜索文件和文件夹 ...