序列(seq)

序列(seq)

题目描述

 

 

给定 N,A,BN,A,B,构造一个长度为 NN 的排列,使得:

排列长度为 N;

最长上升子序列长度为 A;

最长下降子序列长度为 B。

我们有 SPJ,有解任意给出一组,否则说明无解。

 

输入

 

 

第一行一个整数 TT (1≤T≤101≤T≤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 4No

提示

 

 

数据范围和子任务

对于全部的测试数据,保证 T≤10,N≤105,∑N≤2×105T≤10,N≤105,∑N≤2×105

子任务 1(20 分):N≤5N≤5 .

子任务 2(30 分):每组数据均满足 N=A×BN=A×B .

子任务 3(20 分):B≤2B≤2 .

子任务 4(30 分):无特殊限制

 


solution

先考虑a*b=n的情况怎么做:连续构造a段下降的b

比如 n=6 a=3 b=2

->      2 1 4 3 6 5

那么如果a>n/b 呢

就把某些段改成升序的

由于每一段之间互不影响,所以这不会改变b的答案

那么n!=a*b 也只是多了一段小段的而已

#include<cstdio>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<cmath>
#define maxn 100005
using namespace std;
int T,n,a,b,ans[maxn],num[maxn];
void init(){for(int i=1;i<=n;i++)ans[i]=num[i]=0;
}
int main()
{freopen("seq.in","r",stdin);freopen("seq.out","w",stdout);cin>>T;while(T--){scanf("%d%d%d",&n,&a,&b);init();if(a+b>n+1){puts("No");continue;}for(int i=1;i<=n;i+=b){int top=i+b-1;top=min(top,n);num[i]=top-i+1;for(int j=top,x=0;j>=i;j--,x++)ans[j]=i+x;}int tmp=n/b;if(n%b)tmp++;if(tmp>a){puts("No");continue;}int tp=a-tmp,i=b+1;while(tp){if(tp>=num[i]-1){for(int j=i;j<=i+num[i]-1;j++)ans[j]=j;tp-=num[i]-1;i=i+b;}else {for(int j=i;j<=i+tp-1;j++)ans[j]=j;for(int j=i+num[i]-1,x=tp;j>=i+tp;j--,x++)ans[j]=i+x;tp=0;}}puts("Yes");for(int i=1;i<=n;i++)cout<<ans[i]<<' ';cout<<endl;}return 0;
}

 

转载于:https://www.cnblogs.com/liankewei/p/10358821.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/265719.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构——二叉树先序、中序、后序及层次四种遍历(C语言版)

摘自&#xff1a;数据结构——二叉树先序、中序、后序及层次四种遍历&#xff08;C语言版&#xff09; 作者&#xff1a;正弦定理 发布时间&#xff1a;2020-12-09 17:08:48 网址&#xff1a;https://blog.csdn.net/chinesekobe/article/details/110874773?ops_request_misc%2…

js 获取td高度_JS或jQuery获取宽高度

javascript//网页可见区域宽&#xff1a; document.body.clientWidth //网页可见区域高&#xff1a; document.body.clientHeight //网页可见区域宽&#xff1a; document.body.offsetWidth (包括边线的宽) //网页可见区域高&#xff1a; document.body.offsetHeight (包括…

不重新编译DLL,让FCKEditor支持附件上传

最近在忙着做一个小项目&#xff0c;就是一个企业内部的论坛&#xff0c;其中最基本的一点就是富文本编辑帖子和回帖。目前市面上用的比较多的富文本编辑器有&#xff1a;FreeTextBox 一个有很多年历史的富文本编辑器了&#xff0c;使用简单&#xff0c;而且一般的使用是免费的…

一些比较少用但比较有用的linux命令备忘

网络相关 ssh 反向代理 ssh -fCNR 10000:localhost:22 userBB.B.B.B B.B.B.B是一个外网机器B的IP ssh -p 10000 userAlocalhost 在机器B&#xff0c;ssh到机器A 防火墙 查看防火墙服务状态 systemctl status firewalld查询端口是否开放 firewall-cmd --query-port8080/tcp…

安卓网络编程(Socket、WebView控件)

目录JavaSocket服务端开发JavaSocket客户端开发安卓Socket客户端开发接收消息显示到控件上(解决安卓线程无法修改控件问题)Android网络接收数据并刷新界面显示安卓webView智能家居你APP页面开发JavaSocket服务端开发 import java.io.IOException; import java.io.InputStream; …

(转)iOS Wow体验 - 第五章 - 利用iOS技术特性打造最佳体验

本文是《iOS Wow Factor:Apps and UX Design Techniques for iPhone and iPad》第五章译文精选&#xff0c;其余章节将陆续放出。上一篇&#xff1a;Wow体验 - 第四章 - 为应用的上下文环境而设计 关于本套译文分享的详情及目录结构&#xff0c;请参考iOS Wow体验 - 译文分享说…

fetch 自动加cookie_WEBUI自动化开发(第五章)

Requests是Python的非常常用的HTTP的库&#xff0c;主要用于网络爬虫和接口自动化测试。下面使用Requests最新版本&#xff0c;通过pip install requests安装。pip install requestsCollecting requests Downloading requests-2.25.0-py2.py3-none-any.whl (61 kB) |███…

结构体对齐计算方式

目录法则一&#xff1a;结构体成员的偏移量必须是成员大小的整数倍(数组除外)法则二&#xff1a;结构体大小必须是所有成员大小的整数倍(数组、结构体除外)带数组的结构体大小计算带结构体的结构体大小计算带联合体的结构体大小计算pragma pack(4)向4对齐对齐方式确实很浪费空间…

【计算机算法设计与分析】——5.4最优二分检索树

&#xff08;n为结点个数&#xff09; 为成本差额 转载于:https://www.cnblogs.com/chihaoyuIsnotHere/p/9815498.html

2013-8-14大一大二暑期组队训练赛

1001 Time Limit : 5000/2000ms (Java/Other) Memory Limit : 65535/65535K (Java/Other) Total Submission(s) : 11 Accepted Submission(s) : 2 Font: Times New Roman | Verdana | Georgia Font Size: ← → Problem Description You are to write a module that will c…

dataframe常用操作_Pandas | Dataframe的merge操作,像数据库一样尽情join

点击上方蓝字&#xff0c;关注并星标&#xff0c;和我一起学技术。今天是pandas数据处理第8篇文章&#xff0c;我们一起来聊聊dataframe的合并。常见的数据合并操作主要有两种&#xff0c;第一种是我们新生成了新的特征&#xff0c;想要把它和旧的特征合并在一起。第二种是我们…

2.空间配置器

SGI 特殊的空间配置器 std::alloc 一般而言&#xff0c;我们习惯的C内存配置操作和释放操作是这样的 class Foo{…..} Foo* pf new Foo; delete pf; new包含两阶段操作 &#xff08;1&#xff09;调用 ::operator new 配置内存 &#xff08;2&#xff09;调用 Foo::Foo() …

Github的简单使用(网页版)

目录Git和GithubGithub基础概念注册Github账号创建仓库及文件新建仓库新建文件文件的编辑和删除编辑或修改文件删除文件文件的上传文件的查找及下载文件的查找文件的下载IssuesFork开源项目贡献流程Git和Github 什么是Git Git是一个免费、开源的版本控制软件 什么是版本控制…

常用到的正则表达式

2019独角兽企业重金招聘Python工程师标准>>> 常用的正则表达式 1、匹配只含有英文字母和阿拉伯数字 ^[a-zA-Z0-9-]$ 2、匹配电子邮件地址 ^[_a-z0-9-](\.[_a-z0-9-])*[a-z0-9-](\.[a-z0-9-])*$ 3、匹配中文字符 [\u4e00-\u9fa5] 4、匹配国内座机电话号码 (\d{3}-|\d…

docker多个容器一起打包_docker如何将容器打包成镜像

可以使用docker commit命令来完成&#xff0c;docker commit可以从容器创建一个新的镜像。语法格式&#xff1a;docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]参数说明&#xff1b;-a :提交的镜像作者&#xff1b;-c :使用Dockerfile指令来创建镜像&#xff1b;-m :提…

CSDN绑定GitHub账号

目录1.点击自己头像进入个人中心2.点击账号设置&#xff0c;选择绑定三方账号3.选择GitHub绑定绑定成功&#xff0c;主页获取勋章1.点击自己头像进入个人中心 2.点击账号设置&#xff0c;选择绑定三方账号 3.选择GitHub绑定 绑定成功&#xff0c;主页获取勋章

My97DatePicker在asp.net项目中的使用

1、去官网下载 My97DatePicker 包 http://www.my97.net/ 2、比如实现如下图所示功能 2.1 先把下载来的包添加到解决方案 2.2 然后在页面引用css文件和js文件 <link href"My97DatePicker/skin/WdatePicker.css" rel"stylesheet" type"text/css"…

机械秒表的使用方法_让console.log()不再是你的唯一选项js日志输出6种方法

几乎所有的javascript开发者最常使用的日志打印调试api都是console.log(),其实还有很多的选项供我们选择&#xff0c;笔者下面就为大家一一介绍.一、console.table()console.table()是我非常建议大家去使用的方法&#xff0c;它可以接受JSON或数组并以表格格式打印&#xff0c;…

Git的安装(附安装包)

更多干货推荐可以去牛客网看看&#xff0c;他们现在的IT题库内容很丰富&#xff0c;属于国内做的很好的了&#xff0c;而且是课程刷题面经求职讨论区分享&#xff0c;一站式求职学习网站&#xff0c;最最最重要的里面的资源全部免费&#xff01;&#xff01;&#xff01;点击进…

【10.20校内测试】【小模拟】【无向图建树判奇偶环】【树上差分】

Solution 和后面两道题难度差距太大了吧&#xff01;&#xff01; 显然就只是个小模拟&#xff0c;注意判0就行了。 Code #include<bits/stdc.h> using namespace std;char s[100005];int main() {freopen("expression.in", "r", stdin);freopen(&qu…