原创 F: Pond Skater(BFS)

F: Pond Skater(BFS) 傳送門 思路:四個方向BFSBFSBFS,開一個二維數組保存到達該位置的最小步數。 遇到不是最優的情況就進行剪枝,不斷更新最值。 #include<bits/stdc++.h> using

原创 P1895 數字序列

P1895 數字序列 傳送門 思路:模擬。 先要找到是在那一個子序列 ep:sub1=1,sub2=12,sub3=123,sub4=1234ep:sub_1=1,sub_2=12,sub_3=123,sub_4=1234ep:s

原创 異或的常見問題

異或的常見問題 一.給定數組的異或和xxx與求和yyy,構造最短非負整數數組。 思路: 1.顯然當x>yx>yx>y無解,就拿兩個數來說,兩個數異或和不可能大於兩數和。 且兩者取等情況當且僅當,兩數取1的位不同。 在考慮奇偶性的情

原创 Min Value(二分)

Min Value(二分) 傳送門 思路:排序後二分,注意下細節+特判。 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N

原创 Educational Codeforces Round 89 (A-D)

Educational Codeforces Round 89 (A-D) 比賽沒打,來補題辣。 A. Shovels and Swords 思路:數學,高中線性規劃搞一下,由於a,ba,ba,b對稱性,可以默認a≤ba\leq

原创 關於浮點數的四捨五入方法。

關於浮點數的四捨五入方法。 思路:先確定四捨五入到哪一位,然後先將該數的那一位前面的數變成整數(乘以10的倍數),然後加上0.50.50.5,就可以實現四捨五入,然後再進行還原(除以10的倍數)。又學到了許多 #include<c

原创 關於二分的具體類型及實現方法。

關於二分的具體類型及實現方法。 1.將最大值最小化 while(l<r){ //最大值最小化 int mid=(l+r)>>1; //總是檢查區間靠左部分 if(check(mid)) r=mid;//答案

原创 暴力出奇跡(貪心&暴力)

暴力出奇跡(貪心&暴力) 傳送門 思路:貪心+枚舉,可以知道答案肯定是一段區間的某一位全部爲1.這樣肯定是最優的。所以我們考慮枚舉這個爲1的位。然後遇到某個數該位0就更新區間繼續枚舉。 #include<bits/stdc++.h

原创 跳石頭(二分)

跳石頭(二分) 思路:二分中:最小值最大化問題。 傳送門 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N=1e5+5;

原创 樹上求和(DFS)

樹上求和(DFS) 傳送門 思路:計算每條邊的貢獻次數,然後排序即可。 每條邊貢獻次數公式:cnt=size[u]×(n−size[u])cnt=size[u]\times (n-size[u])cnt=size[u]×(n−si

原创 P4933 大師(DP)

P4933 大師(DP) 題意:給定序列求所有子序列中爲等差數列的個數。(序列長度爲1,2被認爲是等差序列,空序列不是等差序列)。 思路:很巧妙的dpdpdp,因爲a[i]≤2e4a[i]\leq 2e4a[i]≤2e4,數字較小

原创 扔硬幣(組合數學)

扔硬幣(組合數學) 傳送門 思路:用古典概型的公式,分子爲C(n,k)C(n,k)C(n,k),分母爲 2n−∑i=0m−1C(n,i)2^n-\sum\limits_{i=0}^{m-1}C(n,i)2n−i=0∑m−1​C(n

原创 漢諾塔專題講解。

漢諾塔000 題意:三根柱子,每次移動距離無限制,一次移動一個圓盤,問將所有圓盤從AAA按大小順序移動到CCC最少需要多少步。 思路:因爲這裏不需要小圓盤始終在大圓盤上面,所以 設移動nnn個圓盤的方案爲f(n)f(n)f(n),

原创 關於逆序對的題目練習

P1908 逆序對 傳送門 用線段樹寫。快讀+O2O_2O2​優化才能卡過去。 #include<bits/stdc++.h> using namespace std; typedef long long ll; const in

原创 Codeforces Round #648 (Div. 2)(A-F)簡要題解

Codeforces Round #648 (Div. 2)(A-F)簡要題解 A. Matrix Game 奇偶性博弈。 顯然每次選一個格子,可用的行和列都會減1,所以只需看最初可用的行和列的最小值的奇偶性即可。 B. Trou