題意:
a(codeforces - 1249 c1&c2):找乙個最小的大於n的數,要求是3的冪次和且每個次數最多出現一次。
b(codeforces - 1249a )一組數,如果有兩數之差為一,把他們放在兩個不同的組裡。
c(codeforces - 1249 d1&d2):給多組線段,每乙個點的覆蓋次數不超過k,每次可去除乙個線段,問最少去多少線段以及線段的位置。
d(codeforces - 1249 b1&b2):陣列a[n],每過一天書會從i轉到a[i],問多少天回到最開始的人手裡。
題解:a&e codeforces - 1249 c1&c2 good numbers
思路:1、通過判斷n%3=2,2=3的0次方+3的0次方所以只要n%3=2就不符合要求
2、利用三進製所以,對於位為0、1的情況不處理,只對位為2的處理,處理成「3」,也就是本位記0,然後進製給下一位。所以每次獲取的新本位是由原本位和進製決定的。這樣處理完之後,得到的結果是可能偏大的,因為可能高位就已經保證了整個數是大於等於n的,所以多餘的低位會讓結果更大,所以要比較每乙個的新位與原位,如果它們相等,那麼這一位就是必須的,最後轉換回十進位制。
**:1、
#include
int q,sum,m,n;
using
namespace std;
intmain()
n = n /3;
}if(f ==
true
)else}}
}
2、
#include
using
namespace std;
const
int n =
1e5+5;
const
int m =60;
int bit[m]
, abit[m]
, cnt;
long
long pow3[m]
;int
main()
if(carry)
cnt--
; ans =0;
while
(cnt >=0)
else
if(abit[cnt]
== bit[cnt]
) ans +
= abit[cnt]
* pow3[cnt]
; cnt--;}
cout << ans << endl;
}return0;
}
g codeforces - 1249 b2 books exchange (hard version)(佇列)
思路:用佇列來儲存變換的
**:
#include
using
namespace std;
int t,n;
int a[
220000
],b[
220000];
intmain()
while
(m!=i)
;int ans=q.
size()
;while
(!q.
empty()
)}for(
int i=
1;i) cout<<<
' ';
cout<<}return0;
}
感想:感覺狀態多多少少回來一點了。a想打表來著,wa之後發現要打兩次,想想還是算了,就換了種思路。d題就毫無思路,b2的話是真的沒往佇列上靠,知識點的應用能力還是差太多,明天把學過的都列出來,弄個思維導圖。 暑假訓練第一周第四天
題意 a codeforces 1257e 三組數,按順序最多分成三組,求數字移動的最小次數。b codeforces 1257c 找乙個陣列的子陣列,要求除頭尾兩數相同外,中間包含的數互不相同。c codeforces 1257a 讓兩個位置的數,在指定步數內距離盡可能的大。d codeforce...
演算法訓練第一周
leetcode 283 移動零 基礎寫法 class solution 設定指標i j 遍歷nums i 當nums i 0 即當值不為0時 nums j nums i j int j 0 for int i 0 i i 可以使i j指標同時向右移 只有當nums i 0 j才移動 造成j指標是慢...
20年暑假第一周周總結
所涉及到的內容是爬蟲 演算法 python基礎學習。其中對於python的爬蟲學習比較深入,實戰了4 5個專案,涉及到了網頁爬取的時候關於靜態動態的處理,然後就是篩選資料 將資料存放到excel中並生成各種圖示 柱形圖 圓餅圖等等 然後在演算法方面,自己學習的主要的知識是揹包九講問題,對相關揹包進行...