2020 ICPC 濟南站 打鐵實錄

2021-10-13 07:33:33 字數 2573 閱讀 8649

2020.12.27 icpc 濟南站 回顧

開始直接衝a題,翻譯完一波,然後看看其他題目的情況,發現兩道簽到題,m題和g題,馬上轉戰m題,hx直接得出結論,提交一波,wa,共同討論一下馬上發現問題所在,ac

a題

#include

using

namespace std;

intmain()

return0;

}

然後接著去寫g題,hx琢磨一會兒得出了恆定一種方法的結論:x ^ (x ^ y) ,令z = x ^ y, 這樣只需要一次 x ^ y即可得到 y ,提交一次wa,返回仔細檢查發現 z 是有可能大於等於 x 的,所以需要分情況,大於 x 的情況怎麼處理呢,hx繼續琢磨,得出恆定兩種方法的結論 首先 x ^ [x]反 得到 x = 全1,然後再 x ^ [y]反 得到 y,所以結果是 兩次操作, 第一次操作的 a = (同x二進位制位數的全1 異或 x),第二次操作的 a = (同x二進位制位數的全1 異或 y),想法已經出來,馬上碼**,結果wa,後面陸陸續續提交了3,4次,於是 zyj 立馬轉戰c、d題,hx 和 我 繼續磕g題,在計算全1和反碼上 xqm 使用了字串寫法,結果還是錯誤,然後陸續提交了3次,最終發現 hx 修改了乙個強制轉換的位置,ac,賽後我仔細分析,發現我們原先計算全1的**:ll ans = (ll)(pow(2, cnt) - 1); cnt是 x 的二進位制位數,發現當pow計算的最多可達10^18,pow返回double值,由於double精度有限,10進製有效位大概在15~16位,所以在計算過程中可能會出現精度損失,導致結果出錯。ac時的**:ll ans = ((ll)pow(2, cnt) - 1); 仔細反思了一下,這個**其實也是可能出錯的,可能剛好測試點通過pow時是沒有出現精度損失的,下面放出賽後修改後的**

g題

#include

using

namespace std;

typedef

long

long ll;

intmain()

ans--

; cout <<

2<< endl;

cout <<

(ans ^ x)

<<

" "<<

(ans ^ y)

<< endl;

return0;

}

c題是在g題前面被 zyj 一次ac的,真好,大致思路是石頭數量為3的石堆是不用管,不需要花錢,然後石頭數量為1的堆和石頭數量為2的堆互相結合,花的錢為堆數較少者的堆數*2,然後有剩餘的堆再單獨分情況,目前我思路還不清除,等我理清楚了再補。

c題

#include

using

namespace std;

typedef

long

long ll;

intmain()

else

if(a == b) ans = b *2;

else

cout << ans << endl;

}

c題g題過了後轉戰d題,開始的時候是在糾結原計畫是啥,zyj 肯定原計畫是所有人都選擇最大值ri,後面仔細琢磨題意,確實是這樣,沒有疑問後我直接開做,大致思路是先按照r值公升序排序,然後如果相同r值的點取它們中最大l值,且保證

這個值不能小於等於左邊不是相同r值的點,這樣能保證現在每個人的分數不會小於原先的分數,因為我將分數保證了和之前是一樣的,而且能得到最小sum,結果一交,wa,後面 hx 也擼了個**,結果也wa了,後面琢磨了半天,wa了好幾次,然後讀了好幾次題目,發現其他每個人的分數其實是可以提高的,只要不小於即可,好了修改了乙個小細節後,ac,還是得吸取教訓,多讀題。

d題

#include

using

namespace std;

typedef

long

long ll;

const

int maxn =

1e5+10;

struct node st[maxn]

;bool

cmp(node a, node b)

intmain()

else st[i]

.s = st[i-1]

.s;}

ll sum =0;

for(

int i =

1; i <= n; i++

) sum +

= st[i]

.s; cout << sum << endl;

}

寫完d題,發現已經排到了400多,氣人,人均4題,按照我們隊伍的目前這個情況,只有再做一題才有可能拿獎,哎,繼續衝a題,這個點時間已經不多,磨了半天,發現沒啥思路,只能發現結果大概是2的多少次方,然後我們就根據測試樣例開始盲猜,特判,哎,沒辦法,是真滴cai。

其他題目這幾天補一補,看能不能再做出幾個。

第一次icpc分站賽到此結束,打鐵了還是挺可惜的,不過潛力還是蠻大的,差不多是第一次正式接觸icpc分站賽,大概訓練了不到乙個月吧,之前沒怎麼打過這種思維題目,不太習慣,發現前面幾道題基本上都不涉及什麼演算法,純思維,想到了就出來了,以後還是得多做這種題目吧,衝,明年icpc見,希望明年能拿個銅,哎

2020 icpc 上海 雲遊記

雖然打得很臭,但是畢竟是第一場icp cicpc icpc 還是記錄一下。坑了隊友真是萬分抱歉,建議加訓qaq。為啥打上海站呢,因為期末有點小忙,想早點打完早完事兒,感覺都差不多 不能公費旅遊 所以和隊友一起選了上海站打。熱身賽直接爆0 00了是我沒想到的。當時a aa的規律我花了一會兒時間找到了,...

2020ICPC上海站補題題解

這場4題銅,5 6題銀 去年比賽的時候還沒用過git,被題意整懵了硬是看了巨久。然後場上的思路是模擬,結果碼力太差沒寫出來,tcl。題意 gitignore,上傳檔案,n個路徑是要刪的,m個路徑是不能刪的,問最小刪幾個檔案。思路 對於m個不能刪的,把他所有的父目錄都標註為1保護起來。然後再去遍歷n個...

2020ICPC模擬賽E(區間dp)

eeat walnuts 每次只能選乙個數字 下標為 j,i為它前乙個數字下標,k為下乙個數字的下標 而且這個數字不能是開頭或者結尾數字,把它消耗掉的代價是 a i a j a k 2,問最後剩兩個數字的時候的最小總花費是多少。區間dp,其實挺簡單,當時憨批了,其實一直是。pragma gcc op...