給定每個人的身高和它們已知一側身高比他高的人數,求合法的組合中字典序最小的一組
因為要字典序最小所以先按身高排序,然後再判斷有沒有合法的情況,有的話,優先填靠左邊的
樹狀陣列+二分判斷是否還可以填,這樣是o(n
log2
n)
o(nlog^2n)
o(nlog
2n)可以用權值線段樹或spl
ay
splay
spla
y達到o(n
logn
)o(nlogn)
o(nlog
n)
#include
#include
using
namespace std;
int c[
100010
],n,x,y,ans[
100010];
inline
intread()
inline
void
write
(register
int x)
inline
void
add(
register
int x)
inline
intask
(register
int x)
struct nodea[
100010];
inline
bool
cmp(node x,node y)
bool b[
100010];
inline
intbf
(register
int x)
//查詢位置
return b[l]?0
:l;}
signed
main()
;sort
(a+1
,a+1
+n,cmp)
;for
(register
int i=
1;i<=n;i++
)for
(register
int i=
1;i<=n;
putchar(32
),i++
)write
(ans[i]);
}
2023年10月29日提高組 T1 A
n nn個球,m mm個盤,盤子不能空,求本質上不相同的方案數 首先深搜 include using namespace std int n,m,ans inline void dfs register int dep,register int sy,register int last 分完了,統計...
2023年10月30日提高組 T1 A
求樹上聯通快中最大值與最小值之差為k kk的方案數 設最大值與最小值之差為xxx x xx正好為k kk的方案數 x k x leq k x k 的方案數 x x k的方案數 於是我們就可以樹形dpdp dp啦fi fs on 1 f i prod f 1 fi fson 1 include def...
2023年10月31日提高組 T1 A
求n nn的排列了交換為公升序的最小交換次數的期望 兩種思路 暴力打表找規律 動態規劃 第一種只需要打乙個bfs bfsbf s hash hash hash include include define p 10000007 using namespace std int n,ans struct...