子列按字典序排序

2021-08-15 18:57:39 字數 2481 閱讀 6463

原題:subset sequence

題意

有數列1…n,求所有子列中按照字典序排列排在第m的子列

分析

如果用next_permutation乙個乙個來的話,n最大為20,肯定會t,所以這道題只能找規律了。

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

//#include

#include

#define d long long

#define f double

#define max 0x7fffffff

#define min -0x7fffffff

#define mmm(a,b) memset(a,b,sizeof(a))

#define pb push_back

#define mk make_pair

#define fi first

#define se second

#define pill pair

#define for1(i,a,b) for(int i=a;i<=b;i++)

#define for2(i,a,b) for(int i=a;i>=b;i--)

#define ini(n) scanf("%d",&n)

#define inll(n) scanf("%lld",&n)

#define outisp(n) printf("%d ",n)

#define outllsp(n) printf("%lld ",n)

#define outiel(n) printf("%d\n",n)

#define outllel(n) printf("%lld\n",n)

using namespace std;

#define n 500100

#define mod ((int)1e9+7)

#define random(a,b) (rand()%(b-a+1)+a)

#define stop sleep(2000)

#define cls system("cls")

const

string el="\n";

const

string elel="\n\n";

const

string sp=" ";

const

string spsp=" ";

const

string tab="\t";

int main()

tim+=n-ar+1;

next_permutation(b+1,b+1+n);

}int sub=tim-m;//多餘的位數

for1(i,1,n-sub)outisp(a[i]);

cout比如1,2,3,4,它的排列如下:

我們發現第1位(右邊)持續的個數(1234下乙個1243,第1位變了)為1,第2位2,第3位5,第4位16,發現a[i]=a[i-1]*(i-1)(a[4]==16),大體好了再處理細節就行了。

先上**

//include《略》

int main()

int n;d m;

while(scanf("%d%lld",&n,&m)!=eof)

if(m1])

if(m>=a[n-ar+1])

}//for1(i,1,10)outisp(choose[i]);cout

s;queue

ans;

for1(i,1,n)s.insert(i);

ar=1;//從左往右依次選剩下數裡面第choose[i]小的數

while(choose[ar]!=0)

for1(i,1,30)}}

}

choose[i]==3代表第i位選擇在剩下來的數中第3小的數流程就是從高位開始乙個乙個的補,流程**

(案例n==9,m==335,ans==2 1 3 5)

全排列(按字典序)

描述 給定乙個由不同的小寫字母組成的字串,輸出這個字串的所有全排列。我們假設對於小寫字母有 a b y z 而且給定的字串中的字母已經按照從小到大的順序排列。輸入輸入只有一行,是乙個由不同的小寫字母組成的字串,已知字串的長度在1到6之間。輸出輸出這個字串的所有排列方式,每行乙個排列。要求字母序比較小...

easyUI datagrid 按列排序

1.設定列屬性 設定列屬性sortable true 如 2.設定 屬性 設定 屬性remotesort true 如 table id datagrid 3.設定後台請求程式注 datagrid 向後台傳送請求的時候,缺省會攜帶兩個引數,分別是sort和order。其中sort字段 的值是排序的列...

巢狀字典按字典值排序

這裡有一組關於各省各市上市公司數量的巢狀字典資料,我想實現按各省上市公司數量排序?資料如下 lsd 甘肅 吉林 江蘇 北京 山西 湖北 河南 貴州 四川 重慶 內蒙古 浙江 福建 廣西 上海 河北 廣東 天津 湖南 遼寧 江西 陝西 黑龍江 雲南 海南 安徽 寧夏 新疆 青海 如下 匿名函式中,按照...