洛谷P1338 末日的傳說

2021-08-16 01:16:16 字數 488 閱讀 5323

qaq本來不是多難的題,然鵝我折騰了半天。看到乙個挺不錯的想法;

我們知道,對於乙個長度為n的序列而言,其最大的逆序對的個數為n*(n-1)/2,題目是要求乙個逆序數為m的字典序最小的序列。那我們不妨從1開始考慮每乙個數的排列,這樣每次考慮的都是當前最小的數

如果把這個數放在最前面,而剩下的數的排列的逆序數仍然可以達到m的話,那麼一定要把當前考慮的這個最小的數放在最前面,這一定是最優解。即(n-i)*(n-i-1)/2。如果不行的話,為了接下來要解決的逆序數最小,應該把當前數放在最後,這樣m減少的才能最多。

#include

#include

#include

using

namespace

std;

int n,m;

int main()

for(int i=1;icout

<' ';

cout

0;}

洛谷P1338(末日的傳說)

只要是參加jsoi活動的同學一定都聽說過hanoi塔的傳說 三根柱子上的金片每天被移動一次,當所有的金片都被移完之後,世界末日也就隨之降臨了。在古老東方的幻想鄉,人們都採用一種奇特的方式記錄日期 他們用一些特殊的符號來表示從1開始的連續整數,1表示最小而n表示最大。創世紀的第一天,日曆就被賦予了生命...

洛谷P1338 末日的傳說

只要是參加jsoi活動的同學一定都聽說過hanoi塔的傳說 三根柱子上的金片每天被移動一次,當所有的金片都被移完之後,世界末日也就隨之降臨了。在古老東方的幻想鄉,人們都採用一種奇特的方式記錄日期 他們用一些特殊的符號來表示從1開始的連續整數,1表示最小而n表示最大。創世紀的第一天,日曆就被賦予了生命...

洛谷 P1338 末日的傳說

大概題意 就是求 1 1 到n n 的排列中字典序最小的乙個滿足逆序對個數為m m的排列。1 n m 分析 首先我們要知道乙個排列能有的最多逆序對 n n 1 2 即當他為嚴格遞增序列時 而我們又知道逆序對越多該數列的字典序越大 因此可對題意這樣分析,很明顯從最小的數 i 開始考慮 如果除去該數 剩...