p4364 九省聯考2018 IIIDX

2022-04-30 06:57:06 字數 1539 閱讀 9074

傳送門

分析

我們先考慮如果所有數都不相同我們應該怎麼辦

我們可以直接貪心的在每個點放可行的最大權值

但是題目要求可以有相同的數

我們可以考慮每次讓當前節點可發且盡量大的同時給兄弟節點留的數盡量大

我們用線段樹維護每個點比它大的點還剩幾個

對於每個點要給它的子樹預留足夠的點即可

**

#include#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

int n,fa[500100],siz[500100],d[2001000],col[2001000

];int a[500100],ans[500100],cnt[500100

]; double

f;inline

bool cmp(const

int x,const

int y)

inline

void build(int le,int ri,int

wh)

int mid=(le+ri)>>1

; build(le,mid,wh

<<1

); build(mid+1,ri,wh<<1|1

); d[wh]=min(d[wh<<1],d[wh<<1|1

]);}

inline

void update(int le,int ri,int wh,int x,int y,int

k)

int mid=(le+ri)>>1

;

if(col[wh]!=0

)

if(mid>=x)update(le,mid,wh<<1

,x,y,k);

if(mid1,ri,wh<<1|1

,x,y,k);

d[wh]=min(d[wh<<1],d[wh<<1|1

]);}

inline

int q(int le,int ri,int wh,int

k)

if(d[wh<<1|1]>=k)return q(le,mid,wh<<1

,k);

else

return q(mid+1,ri,wh<<1|1

,k);

}int

main()

for(i=1;i<=n;i++)printf("

%d "

,a[ans[i]]);

return0;

}

洛谷4364 九省聯考2018 IIIDX

標籤 線段樹 題目傳送門 osu 聽過沒?那是konano 最喜歡的一款 遊戲,而他的夢想就是有一天自己也能做個獨特酷炫的 遊戲。現在,他在世界知名遊戲公司konmai 內工作,離他的夢想也越來越近了。這款 遊戲內一般都包含了許多歌曲,歌曲越多,玩家越不易玩膩。同時,為了使玩家在遊戲上氪更多的金錢花...

九省聯考 2018

發現狀態數很少,直接搜即可。不難發現這個偏序關係形成了一棵樹。本來以為直接貪心即可,即把 a 排序,然後 dfs bfs 一遍直接安排權值,類似於這樣 void dfs1 int u void dfs2 int u 不出我所料,這份簡單的 沒有過,被這組資料叉掉了 2 2.0 1 1 1 2發現這樣...

九省聯考2018遊記

day0 上午到學校,去tututu寢室,入坑荒野求生,真tm好玩 雖然只打了一把 下午坐高鐵去sh,發現sh非正式選手只有hez的。day1 開局看t1,沒意識到狀態數是個組合數,於是寫了個程式算狀態數,還寫掛了 include int n 10,m 10,f 15 15 i,j,k int ma...