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...