過4,rk40,Ag。
Au線在5題,除非罰時爆炸,否則Au
-
-
通過的題目
-
C
兩個硬幣,由兩名玩家各自選擇正面或者反面朝上。當硬幣同為正,玩家一獲得A元,同為反,玩家一獲得B元,否則玩家二獲得C元。問足夠多輪數的情況下,誰能勝出。保證A+B=2*C
簡單題,若A==B,則永遠平局。
若A!=B,則玩家一每次選擇較大的一邊,玩家二不得不來回變換硬幣的正反進行博弈,但最終還是玩家一勝出。嗯,就是這樣一道簡單題,貢獻了3發罰時,嘔了。
陷阱:多組數據
-
F
n個男生n個女生,進行m次配對,每次配對,每個男生必然會和一個女生湊成一對,如果他們是第一次湊成一對,則對於每個男生,會產生bi的權值,問期望獲得的權值是多少?
n<=10^5 m<=10^18簡單期望,而且每個bi對答案的貢獻是相同的。
考慮到,產生貢獻的概率=1-不產生貢獻的概率,不產生很好計算,就是((n-1)/n)^m,快速冪求逆元即可。嗯,一發過,短暫的rk1
-
K
n本書,每次選擇兩堆,交錯排成新的一堆,求最終的那一堆的形態
n<=3*10^5簡單題,直接暴力合並復雜度可能被卡到O(n^2),但是小的合並到大的,復雜度會變成O(nlogn)。
嗯,一發過。
-
M
一個人在數軸零點上,正方向出發,在時間段[li,ri]必須沿某一方向一直行走,行走范圍不能超過[0,m],問對n段時間[li,ri]能否有滿足的方案。行走速度為1單位長度每秒。在兩段時間的空隙,可以選擇行走,轉向,或者原地不動,轉向消耗1秒。
n<=10000 m<=100簡單動態規划,設f[i][j][0/1]表示完成前i段時間,當前所在位置為j,方向為正方向或者負方向是否可行。
轉移時采用前綴和,討論一下,就可以做到O(nm)
-
-
-
賽后過的題目
-
A
n塊積木,長度最長為m,每塊用兩個長度為m的數組描述上方和下方突起的長度,兩塊積木可以鉚合,當且僅當:
1.上方積木長度小於等於下方積木
2.上方積木的下邊緣和下方積木的上邊緣對應位置的和都相等
問每塊積木使用一次的情況下,最多能搭起多少塊積木?最下方的積木可以任意選擇
n,m<=500KMP+BFS
判斷鉚合,可以用差分+KMP,判斷兩兩之間鉚合,可以在O(mn^2)時間內做到。
接下來就是找最長鏈,O(n^2)的bfs可以解決由於是最后1h才想到讀了題目,所以無力回天。
-
H
一棵n個節點的數,每個點上有個權值wi,如果確定了數字P,且點Z是點對(u,v)最短路徑上的一點,且wu-wz<=p,wv-wz<=p,wu,wv>wz,那么z可以稱作p條件下點對(u,v)的中間站。
現在給定數m,要求一個最小的p,滿足所有點在p條件下有不超過m對點對將之作為中間站。
n<=10^5 m<=n*(n-1)/2二分+dfs序+滑動窗口
先對所有點按權值從大到小排序,二分p,再將點依次加入樹中,第i次加入的點,我們假設為qi,則前i-1個加入的點權值都比qi大,再記錄最早加入的還在樹中的點,如果超過了p的限制,則刪掉。
統計點對數量,用一個數據結構維護dfs序,再p限制下,以點qi作為中間站的點對數量=qi的各個兒子子樹以及樹上除qi的子樹部分中包含的已加入的點的數量的乘積。寫起來很簡單,但是考場上腦子裂了,作為數據結構手,這波背大鍋。
-
J
給定n個數,有一種操作和一種詢問。
操作:給定數k,將所有數和k寫成二進制形式,對於每一個數,從高到低位找到第一位與k不相同的一位,並將這位之后的所有位取反。
詢問:給出l,r,詢問有多少個數介於[l,r]
n<=10^5 操作<=10^5 詢問<=10^5 數值<=2^30trie
每次操作,在節點上打個tag表示之后所有的數都取反。
詢問的話,在tag上分別找到l和r所在的位置,或者它們的前驅所在的位置,相減即可也很好寫,但考場上腦子裂了,作為數據結構手,再來一鍋。
-