傳送門
分析
我們先考慮如果所有數都不相同我們應該怎麼辦
我們可以直接貪心的在每個點放可行的最大權值
但是題目要求可以有相同的數
我們可以考慮每次讓當前節點可發且盡量大的同時給兄弟節點留的數盡量大
我們用線段樹維護每個點比它大的點還剩幾個
對於每個點要給它的子樹預留足夠的點即可
**
#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...