日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

序列(seq)

發(fā)布時(shí)間:2023/12/10 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 序列(seq) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

序列(seq)

題目描述

?

?

給定?N,A,BN,A,B,構(gòu)造一個(gè)長(zhǎng)度為?NN?的排列,使得:

排列長(zhǎng)度為?N;

最長(zhǎng)上升子序列長(zhǎng)度為?A;

最長(zhǎng)下降子序列長(zhǎng)度為?B。

我們有?SPJ,有解任意給出一組,否則說(shuō)明無(wú)解。

?

輸入

?

?

第一行一個(gè)整數(shù)?TT?(1≤T≤101≤T≤10),?表示數(shù)據(jù)組數(shù).

接下來(lái)?T?行,每行三個(gè)正整數(shù)?N、A、B。

?

?

輸出

?

對(duì)每組數(shù)據(jù):

如果有解,輸出兩行,第一行一個(gè)字符串?Yes,接下來(lái)一行?N?個(gè)整數(shù),表示排列。

否則, 輸出一行一個(gè)字符串?No。

?

樣例輸入

3 4 2 2 4 4 1 4 3 3

樣例輸出

Yes 3 4 1 2 Yes 1 2 3 4No

提示

?

?

數(shù)據(jù)范圍和子任務(wù)

對(duì)于全部的測(cè)試數(shù)據(jù),保證?T≤10,N≤105,∑N≤2×105T≤10,N≤105,∑N≤2×105

子任務(wù)?1(20?分):N≤5N≤5?.

子任務(wù)?2(30?分):每組數(shù)據(jù)均滿足?N=A×BN=A×B?.

子任務(wù)?3(20?分):B≤2B≤2?.

子任務(wù)?4(30?分):無(wú)特殊限制

?


solution

先考慮a*b=n的情況怎么做:連續(xù)構(gòu)造a段下降的b

比如 n=6 a=3 b=2

-> ? ? ?2 1 4 3 6 5

那么如果a>n/b 呢

就把某些段改成升序的

由于每一段之間互不影響,所以這不會(huì)改變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; }

?

轉(zhuǎn)載于:https://www.cnblogs.com/liankewei/p/10358821.html

總結(jié)

以上是生活随笔為你收集整理的序列(seq)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。