题意:

给你一个n,x,y。你需要找出来一个长度为n的序列,使得这个序列满足最长上升子序列长度为x,最长下降子序列长度为y。且这个序列中每个数字只能出现一次

且要保证最后输出的序列的字典序最小

题解:

因为要保证字典序最小,那么肯定是使用前n个数,即[1,n]

我们可以首先让下降子序列用最大的值,且把它们放在序列最后,例如n=10,x=5,y=5

那么我们就让下降子序列使用6,7,8,9,10.而且把这5个数反转一下变成10,9,8,7,6追加到序列尾部

那么剩下的n-y个数去构建出来一个最长上升子序列为x-1的序列就行

为什么是x-1?因为最后y个数比前的任意一个数都要大,所以最长上升子序列部分这里也要占用1个位置

然后我们挑选出来x-1个数组成上升序列,挑选出来的数用wi表示(还是用的上面10,5,5的例子)

1 w1 2 w2 3 w3 4 w4

这个序列的1,2,3,4这些位置可以用长度为y-1的下降序列来插入其中

因为题目要求输出字典序最小,那么我们就把w4尽可能使用y-1个数,然后w3尽可能使用y-1个数,依次类推

假设w1部分使用了h个数,那么1 w1这1+h个位置使用前h+1个数来构造序列

这样构造就是最小的

题目要特判x*y>=n&&x+y<=n+1输出NO,我的x+y<=n+1是找出来的,但是x*y>=n这个我也不清楚。。。。

代码:

#include<stack>
#include<queue>
#include<map>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define fi first
#define se second
using namespace std;
typedef long long ll;
const int maxn=1e5+10;
const int mod=1e9+7;
typedef long long ll;
ll n,x,y,ans[maxn];
ll pre[maxn],len[maxn];
int main()
{
ll t;
scanf("%lld",&t);
while(t--)
{
scanf("%lld%lld%lld",&n,&x,&y);
if(1ll*x*y>=n&&x+y<=n+1)
{
printf("YES\n");
ll res=n-y;
for(ll i=1; i<=x-1; i++) //枚举这是第几个空隙
{
len[i]=res-1ll*(x-1-i)*y; //应该向第i个空隙内插入多少数
if(len[i]<=0) //x-1-i表示这个空隙之前有多少个空隙
{ //至于为什么要乘于y,是因为下降序列y-1个数,上升序列的一部分占1个位置
len[i]=1;
}
res=res-len[i];
pre[i]=pre[i-1]+len[i];
}
for(ll i=1; i<=x-1; i++)
{
for(ll j=pre[i-1]+1; j<=pre[i]; j++)
{
ans[i]=pre[i]-j+pre[i-1]+1; //这个就相当于用【1,n】这n个数,来构造长度为n的序列
printf("%lld ",ans[i]);
}
}
for(ll i=n; i>=n-y+1; i--)
{
printf("%lld%c",i,i==n-y+1?'\n':' ');
}
}
else
{
printf("NO\n");
}
}
return 0;
}

HDU 6852 Increasing and Decreasing 构造的更多相关文章

  1. BNUOJ 52325 Increasing or Decreasing 数位dp

    传送门:BNUOJ 52325 Increasing or Decreasing题意:求[l,r]非递增和非递减序列的个数思路:数位dp,dp[pos][pre][status] pos:处理到第几位 ...

  2. Problem I. Increasing or Decreasing MIPT-2016 Pre-Finals Workshop, Taiwan NTU Contest, Sunday, March 27, 2016

    题面: Problem I. Increasing or DecreasingInput file: standard inputOutput file: standard outputTime li ...

  3. HDU - 6313 Hack It(构造)

    http://acm.hdu.edu.cn/showproblem.php?pid=6313 题意 让你构造一个矩阵使得里面不存在四个顶点都为1的矩形,并且矩阵里面1的个数要>=85000 分析 ...

  4. HDU 5573 Binary Tree【构造】

    几天前模拟区域赛的一道题,今天发现在草稿箱里直接补个博客. 感觉这还是一道很有意思的构造题. 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5573 ...

  5. 2020杭电多校 10C / HDU 6879 - Mine Sweeper (构造)

    HDU 6879 - Mine Sweeper 题意 定义<扫雷>游戏的地图中每个空白格子的值为其周围八个格子内地雷的数量(即游戏内临近地雷数量的提示) 则一张地图的值\(S\)为所有空白 ...

  6. hdu 2256 Problem of Precision 构造整数 + 矩阵快速幂

    http://acm.hdu.edu.cn/showproblem.php?pid=2256 题意:给定 n    求解   ? 思路: , 令  , 那么 , 得: 得转移矩阵: 但是上面求出来的并 ...

  7. HDU 3030 - Increasing Speed Limits

    Problem Description You were driving along a highway when you got caught by the road police for spee ...

  8. HDU 5741 Helter Skelter(构造法)

    [题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=5741 [题目大意] 一个01相间的串,以0开头,给出的序列每个数字表示连续的0的个数或者1的个数, ...

  9. HDU 5573 Binary Tree(构造题)

    http://acm.hdu.edu.cn/showproblem.php?pid=5573 题意:给出一个满二叉树,根节点权值为1,左儿子为2*val,右儿子为2*val+1.现在有只青蛙从根节点出 ...

随机推荐

  1. Educational Codeforces Round 102 (Rated for Div. 2)

    比赛地址 A(水题) 题目链接 题目: 给出一个数组\(a\)并能进行一个操作使得数组元素更改为数组任意其他两元素之和,问是否可以让数组元素全部小于等于\(d\) 解析: 排序后判断最大值是否小于等于 ...

  2. Centos7安装RabbitMQ详细教程

    MQ引言 什么是MQ MQ:message Queue翻译为消息队列,通过典型的生产者和消费者模型不断向消息队列中生产消息,消费者不断从队列中获取消息.因为消息的生产和消费都是一部的,而且只关心消息的 ...

  3. python中列表的insert和append的效率对比

    python中insert和append方法都可以向列表中插入数据只不过append默认插入列表的末尾,insert可以指定位置插入元素. 我们来测试一下他俩插入数据的效率: 测试同时对一个列表进行插 ...

  4. selenium自动化 | 通过获取cookies登录

    >>>登录百度<<<#获取登录成功后的cookies def get_cookies(): driver.get(bd_url) driver.implicitly ...

  5. alter column和modify column

    5.6中,发现其实alter column 和更改modify column 步骤是一样的 mysql> create table xs(name varchar(12),age int def ...

  6. zabbix 监控的数据

    /usr/local/zabbix/bin/zabbix_sender --zabbix-server 192.168.1.10 --port 10051 --input-file /var/log/ ...

  7. utraedit不小心把打开文件列表弄得不显示的处理办法

    视图->视图/列表->打开文件标签

  8. Golang应用性能问题排查分析

    背景 公司有一个使用golang开发的采集模块,负责调用多个外部系统采集数据:最近做了一次架构上的调整,将采集模块分成api.job两个子模块,并部署到容器中,拆分前部署在虚机上. 现象 部分采集任务 ...

  9. vue+element-ui:table表格中的slot 、formatter属性

    slot 插槽,table中表示该行内容以自定义方式展示 :formatter 方法,用来格式化内容 Function(row, column, cellValue, index) html < ...

  10. Spring Security 实战干货:分布式对象SharedObject

    1. 前言 在上一篇我们对AuthenticationManager的初始化的细节进行了分析,其中里面有一段代码引起了不少同学的注意: ApplicationContext context = htt ...