思路:可以發現,如果出現了重複的情況,那麼就會導致時間變化。
那麼,當出現了重複情況時,我們就讓左邊的往上走到上面那層,這樣對於第乙個的時間,沒有變化。
因為停在原地的話,和往上走一次都+1.所以時間一樣。
但是向上走之後,對於下面的都可以向上1步,所以當發現碰撞時,都保持向上走,那麼對於碰撞的這個,它的時間到達+1。
這裡清理乙個誤區,可以發現左右是一直保持著不斷運動的,因為碰撞時左邊向上走,右邊也會向右走,所以不存在改變相對位置的情況。
所以可以直接統計重複即可。
code:
#includeusingview codenamespace
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;
}
百度之星 初賽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,要你將它們劃分成若干組,滿足每...