《百度之星初賽三 補》

2022-06-19 20:15:08 字數 1134 閱讀 1470

思路:可以發現,如果出現了重複的情況,那麼就會導致時間變化。

那麼,當出現了重複情況時,我們就讓左邊的往上走到上面那層,這樣對於第乙個的時間,沒有變化。

因為停在原地的話,和往上走一次都+1.所以時間一樣。

但是向上走之後,對於下面的都可以向上1步,所以當發現碰撞時,都保持向上走,那麼對於碰撞的這個,它的時間到達+1。

這裡清理乙個誤區,可以發現左右是一直保持著不斷運動的,因為碰撞時左邊向上走,右邊也會向右走,所以不存在改變相對位置的情況。

所以可以直接統計重複即可。

code:

#includeusing

namespace

std;

typedef

long

long

ll;typedef

long

double

ld;typedef pair

pii;

const

int n = 20

;const

int m = 1e3+5

;const ll mod = 2505

;#define pi acos(-1)

#define inf 1e8

#define inm int_min

#define dbg(ax) cout << "now this num is " << ax << endl;inline

intread()

while(c >= '

0' && c <= '9')

return x*f;

}unordered_map

mp1,mp2;

vector

g[3

];int

main()

int ans = -1

;

for(auto v : g[1]) ans = max(ans,v+mp2[v]);

for(auto v : g[2]) ans = max(ans,v+mp1[v]);

printf(

"%d\n

",ans);

}system(

"pause");

return0;

}

view code

百度之星 初賽B

a 傳送門 點我 求聯通塊個數,對於簡單圖而言,就是c v e,其中c就是聯通塊個數,v是頂點數,e是邊數 include include include include using namespace std const int max n 2e5 10 int n,m,k vectorg max...

2020百度之星初賽三Discount C 解法

problem description 學皇來到了乙個餐館吃飯。他覺得這家餐館很好吃,於是就想辦個會員。一共有 n 種會員充值卡 假設學皇這餐飯的消費為 a 元,選擇第 i 種 需要充值 b i a 的錢,這次吃飯可以打c i 10 折,由充值的錢支付 即這次吃飯只需要從充值金額中扣除 a c i ...

百度之星2017初賽題解(A)

t1 簡單數論,問滿足 a0 a1 b an b n a0 a1 an mod p 的p的個數 即滿足p b 1 a1 b 2 1 a2 b 3 1 a3 即p b 1的p的個數 sqrt b 1 暴力列舉b 1約數即可 t2 現在給若干個條件,xi xj或xi xj,要你將它們劃分成若干組,滿足每...