題解 2019西安邀請賽

2022-06-29 19:39:11 字數 2873 閱讀 2246

實況

一開始非常居然想dp(反動思想),然後隊友說拍個序就好了.

題解從小到大排序,貪心選小的,直到不能選為止.

實況一開始輸出6位小數,居然wa了,非要輸出4位才行.

題解如果終點在直線x=rx-r的左邊,那就從底部一直走到(rx-r,ry).然後走直線直接去終點.

如果終點在直線x=rx-r的右邊,那就從底部一直走到(rx+r,ry).然後走直線直接去終點.

如果終點在以上兩個直線的中間,那就找到終點和圓的切線,從底部走到切點,然後走直線去終點.

距離是\[d = \sqrt\\

實況我把給的點簡化成了若干個pair,隊友寫了乙個dp.

因為存pair的vector沒有清空,re一發.

題解先把數字/100,方便使用.

把互相關聯的數字連線起來,然後塗色,每個聯通塊可以得到兩個數字,

分別代表這個聯通塊的第乙個點給a時,a獲得的值和b獲得的值.

如果有cnt個聯通塊,我們就有cnt對這樣的數字(自由的數字就是).

然後dp

dp[i][j]表示只考慮前i對數字,是否可以形成差是j的分配方案

一開始dp[1...cnt][-1e6..1e6]都賦值成0;

dp[0][0]賦值成1,表示不考慮任何數字時,可以使差是0.

然後對於每一對數字for i = 0 to cnt

對於每一種差for j = -1e6 to 1e6

如果考慮前i對數字時,可以使差是j,即f[i][j] == 1

那麼如果把這一對數字的前乙個分配給a,差就會變成j+i.first-i.second,所以f[i+1][j+i.first-i.second]=1,

那麼如果把這一對數字的前乙個分配給b,差就會變成j-i.first+i.second,所以f[i+1][j-i.first+i.second]=1,

找到最小的差,較大的乙個的數值是(所有數字的和-差)/2+差

實況蛐蛐樹剖,我起了,一槍秒了

題解樹鏈剖分,用一顆線段樹來存鏈上的數字.

線段樹的每個節點是乙個32的陣列,陣列的值val[rt][i]代表:

在這個節點代表的區間裡,有多少個數字x符合x&(1第三種操作,我們求乙個陣列tmp[1..32],其中tmp[i]為他給的區間的所有節點的val[rt][i]的和.

然後根據nim博弈,遍歷每一位for i = 0 to 30,

int p = (t&(1如果某一位tmp[i] + p不是偶數,那麼輸出yes.

否則輸出no.

實況只會求一條直鏈的,

然後就開始瞎想:啟發式合併?樹剖?點剖???

和ac的距離

完全忘了樹上dp....

題解以1為根

對於一條路徑(u,v),如果他的異或和是0, 那麼他的貢獻應該是u那一端的節點數量*v那一端的節點數量.

先第乙個dfs,算出每乙個點的:

siz[u],代表u的子樹大小;

sum[u],代表每乙個點到根節點的路徑和異或和.

如下

void dfs1(ll u)

}

第二個dfs,統計答案

可以知道如果兩個節點u和v滿足sum[u] == sum[v],那麼他們之間的路徑異或和是0;

那麼他的貢獻應該是u那一端的節點數量*v那一端的節點數量.

用乙個map[x,y],y表示當前已經經過的節點裡面,每乙個符合sum[v]==x的節點v的另一端的節點數量的和.

所以每當遍歷到乙個結點map[sum[u]]就表示所有v那一端的節點數量的和.ans += map[sum[u]]*siz[u]

如下

void dfs2(int u)

m[sum[u]] = (m[sum[u]] + siz[u]) % mod;

}

實況

通過一種神秘力量(打表),發現了規律

題解輪流執行操作一和操作二就可以產生所有結果,

然後看數量找規律

if n==1 : 1

else if n==2 : 2

else if n==3 : 6

else if (n-1)%4 == 0 : n*2

else if (n%2) != 0 : 12

else if n%4 == 0 : 4

else if n%2 == 0 : n

實況dijkstra,上來就wa一發,回頭一看輸入:額,c是幹什麼的

題解就是dijkstra,要注意這裡dis[x]要存兩個數字,lv和剩餘次數.

lv小的更優,如果lv相同,剩餘次數多的更優.

每次找下一步要注意公升級和減少剩餘次數.

2019西安邀請賽總結

打鐵了 上來a題我寫的時候過於緊張 以至於慢了好幾分鐘 然後開m 我覺得m就是二分加判斷 出賽場之後一交流確實沒錯,但是我判斷寫的dijistra也不知道 寫錯了 隊友一直在開l zc推錯了規律 最後cly重新按照題目寫了好幾個樣例最後a掉,其實就應該用雜湊儲存集合狀態然後打個表就可以,其實規律題也...

2023年西安邀請賽

這是我到大學來第一次去校外參加比賽,還是蠻興奮的。路上火車轉地鐵,地鐵轉大巴,暈暈暈。到了西北工業大學後,先領服裝 隊員牌,然後照相。在大廳裡,能看到很多人,穿著一樣的橙色的衣服,當時就感覺acm這條道路上是不缺同道人的,熱身賽以及正式賽的時候這種感覺更加強烈。領完東西後就回酒店了,午飯是在西工大食...

2019西安邀請賽心得

emmmm.第一次參加icpc比賽,成功打鐵qaq。太多遺憾了。西安離得近,我們5月17上午坐高鐵3小時到達西安北,然後找地方吃午飯,去小寨找了好久,最後終於選擇了一家烤肉店,本打算下午能逛逛西安,但吃完午飯之後已經5點了,我們只去了附近的大雁塔看了一眼就坐地鐵去了韋曲南站 有個隊隊名叫韋曲南讓人委...