280 UTR 2 題目難度提公升

2022-04-30 12:27:12 字數 2217 閱讀 9774

最終吉公尺多出題斯基沒有找到優質的題目,於是高產的吉公尺多出題斯基決定自己出一道。

首先,吉公尺多出題斯基腦洞了一道難度為 h1 的題目,然而吉公尺多出題斯基覺得太水了,於是把這題稍微改了改變成了一道難度為 h2 的。然而吉公尺多出題斯基還是覺得太水了,又稍微改了改變成了難度為 h3 的。如此進行下去吉公尺多出題斯基腦洞出了 n 個版本的題目,難度分別為 h1,…,hn。

由於吉公尺多出題斯基在腦洞的時候只是隨便改了改題目條件,所以每次改題並不一定會變難。但神奇的是,每次產生乙個新版本的題目後,吉公尺多出題斯基手上所有版本的題目難度的中位數不會降低。

很快吉公尺多出題斯基出好了題,造好了 uoi,選手們紛紛陣亡。多年後吉公尺多出題斯基再看到自己曾經出的這道題時感嘆道:「都是回憶啊……」

可是吉公尺多出題斯基突然發現自己只記得腦洞過程產生的 n 個版本難度是 a1,…,an,卻不記得每個 ai 對應的是第幾個版本了。

吉公尺多出題斯基日理萬機沒有時間再細想了,於是他找到了你 —— 風璃殤做不出題耶維奇,請你幫助吉公尺多出題斯基把 a1,…,an 排列順序,給出一組滿足條件且字典序最大的 h1,…,hn 吧!

對於乙個數列 v1,…,vm,若 m 為奇數則定義中位數為從小到大第 ⌈m/2⌉ 的數;若 m 為偶數則定義中位數為從小到大第 m/2 和第 m/2+1 的數的平均值。

第一行乙個正整數 n。

接下來一行 n 個整數 a1,…,an。

一行,n 個整數表示你找到的字典序最大的 h1,…,hn。

如果無解,輸出賣萌表情 "qwq"。

51 2 3 4 5

1 3 2 5 4

中位數依次為:。

81 2 2 3 3 3 4 4

3 3 4 3 4 2 2 1

子任務 分值 n 其他約定

1 10 1≤n≤10 無

2 10 1≤n≤100 無

3 20 1≤n≤2000 無

4 30 1≤n≤105 ai 互不相同

5 30 1≤n≤105 無

對於所有資料,滿足 1≤ai≤109。

時間限制:1s

空間限制:256mb

這是乙個大型分類討論現場。。。

講a 從小到大排序

a[mid] = a[mid+1]

那麼左乙個右乙個直接選完,即可得到最優解。

否則往左掃,直到掃到有挨著相同的。

也是左乙個右乙個,但是肯定有剩餘。

把已經選了的放入(對頂)堆裡,維護中位數

沒選的放入multiset中。

分類討論即可。。。

#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;

typedef long long ll;

const int n = 1e5+10;

inline int read()

int n;

int a[n] , vis[n];

priority_queuea , b;

multisets;

void push(int x)

void solve()

cout << '\n'; return ;

} while(mid > 1 && a[mid] != a[mid - 1]) mid--;

vis[mid] = 1; cout << a[mid] << ' '; int p = mid - 1 , q = n;

while(p && q > mid) cout << a[p] << ' ' , vis[p--] = 1 , cout << a[q] << ' ' , vis[q--] = 1;

for(int i = 1 ; i <= n ; ++i) if(!vis[i]) s.insert(a[i]); else push(a[i]);

while(!s.empty()) // 滿足堆裡的中位數 <= 沒選的的最小值

else

cout << q << ' '; s.erase(s.find(q)); push(q); // s.erase(find(q)) 是只刪乙個

} return ;

}int main()

/*10

1 2 2 3 3 3 4 4 5 6

*/

UTR 2 題目排列順序

又要出題了。宇宙出題中心主任 吉公尺多出題斯基,坐在辦公桌前策劃即將到來的 uoi。這場比賽有 n 道題,吉公尺多出題斯基需要決定這些題目的難度,然後再在汪洋大海中尋找符合該難度的題目。題目的難度可以用乙個 1 到 n 的排列 a 1,dots,a n 表示,其中 a i 表示第 i 道題目在這 n...

uoj278 UTR 2 題目排列順序

題目 讀進來 f 之後,把權值作為第一關鍵字從小到大排序,位置作為第二關鍵字從大到小排序,這樣排序後的第 i 個位對應的位置就應該填數字 i 權值作為第一關鍵字,保證了出現在其之前的數權值必它小的填的數也比它小,權值必它大的填的數也比它大 權值相同時按照位置從大到小排序,這樣權值相同的一組就是遞減的...

UOJ278 UTR 2 題目排列順序

作者部落格 正解 排序.解題報告 考場上我是make了幾組資料,然後用暴力跑跑才發現的結論.比如說 顯然2只能由1轉移過來,3只能由2轉移過來,並且,相同權值的話,最後乙個顯然是最小的,不然就可以再加一了呀.所以按權值為第一關鍵字 從小到大 下標為第二關鍵字 從大到小 排序,依次編號即可。我在考場上...