軍團指揮官 許可權題

2022-04-30 09:54:10 字數 3460 閱讀 1189

orz zzd大神太強啦!

解:首先發現幾個性質:如果把區間還原到原序列上的話,可以發現這些區間要麼包含,要麼相離。不存在相交。

然後發現如果區間a包含區間b,那麼最後剩下來的人,a一定不小於b。又發現最優決策要麼是0,要麼是在某個極小的區間內。

然後我們發現這tm不就可以建出一棵樹來麼?列舉葉節點然後樹上倍增找到最多能勝場數,然後取max即可。

怎麼搞出原序列上的區間來呢?我先想到樹狀陣列(????),然後搞了乙個小時還不會定位區間,爆0了。

後來發現splay可以隨便水......

1 #include 2

3const

int n = 100010;4

5struct

edge edge[n << 1]; int

tp;8

9struct

node

15}node[n];

1617

inta[n], stk[n], top, root, n, m, k, e[n], pw[n], d[n], fa[n];

18int s[n][2], faa[n][20], siz[n], lc[n], rc[n], tot, st[n][20

];19

20 inline void add(int x, int

y) 27

28 inline void pushup(int

x) 33

34 inline void pushdown(int

x) 37

38 inline void rotate(int

x) 47 s[y][f] = s[x][!f];

48if(s[x][!f])

51 s[x][!f] =y;

52 fa[y] =x;

5354

pushup(y);

55return;56

}5758 inline void splay(int x, int g = 0

) 65

while

(top)

69 y =fa[x];

70int z =fa[y];

71while(y !=g)

76rotate(x);

77 y =fa[x];

78 z =fa[y];79}

80pushup(x);

81return;82

}8384 inline int np(int f, int l, int

r) 92

93 inline int getpbyr(int

k) 100

else

if(k == siz[s[p][0]] + 1

) 103

else

107}

108splay(p);

109return

p;110

}111

112int build(int f, int l, int

r) 116

int mid = (l + r) >> 1

;117

int x =np(f, mid, mid);

118if(l < mid) s[x][0] = build(x, l, mid - 1

);119

if(mid < r) s[x][1] = build(x, mid + 1

, r);

120pushup(x);

121return

x;122

}123

124 inline int getl(int p =root)

130return

p;131

}132

133 inline int getr(int p =root)

139return

p;140

}141

142 inline void merge(int x, int l, int

r) 149

150 inline void

prework()

154for(int i = 1; i < n; i++) st[i][0] =a[i];

155for(int j = 1; j <= pw[n]; j++)

159}

160return

;161

}162

163 inline void

prework2()

168}

169return

;170

}171

172 inline int getpos(int

x) 178 t--;

179}

180return

x;181

}182

183 inline int getmax(int x, int

y) 187

/*188

5 3 3

1891 0 2 4

1901 3

1910 1

1920 1

193*/

194int

main()

200for(int i = 1; i <= m; i++)

205///

input over

206207

prework();

208 root = build(0, 0, n + 1

);209

210for(int i = 1; i <= m; i++)

222223 std::sort(node + 1, node + m + 1

);224 top = 0

;225

for(int i = 1; i <= m; i++)

229if

(top)

233 stk[++top] =i;

234}

235236

prework2();

237for(int i = 1; i <= m; i++)

240241

int ans = 0, pos = 1

;242

for(int x = 1; x <= m; x++)

250else

if(t ==ans)

253}

254255 printf("

%d\n

", pos - 1

);256

return0;

257 }

ac**

票付通「旺季分流指揮官」坐鎮2019雲南旅交會

11 月 15 日至 17 日 2019 中國國際旅遊交易會在雲南昆明滇池國際會展中心隆重舉行。自 1998 年創辦以來,旅交會已成功舉辦20 屆,發展為亞洲地區最大 影響最為廣泛的專業旅遊展會。本屆交易會共設立 5 個展館,總面積 5 萬平方公尺,廣邀世界各地以及中國31 個省 自治區 直轄市 港...

大道至簡 企業需要的中颱是什麼?答案是 指揮官體系

直接講觀點,我認為 中臺 概念沒有反應這件事情的本質,我希望把它命名為 指揮官體系 企業需要的是指揮官體系,大家熱議的中颱的本質對於企業而言真正需要的其實是指揮官體系。從今天開始,忘記 中臺 記住 指揮官體系 這五個字。2019年在it圈裡對於中颱的討論絕對是最熱的話題之一。對於各個企業來說,看著別...

面試官都在問 Linux命令之許可權理解

0.概述 1.linux命令之切換使用者 su 全程 switch user 1.1 簡述 作業系統中,並不能讓乙個使用者可以為所欲為,這樣會使得系統的安全性無法得到保障,因此有了操作許可權的劃分,在linux系統中使用者共劃分為兩類 管理員使用者 root 以及 普通使用者 su命令可讓乙個普通使...