暑假訓練第一周第六天

2021-10-08 00:13:32 字數 1827 閱讀 8371

題意:

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中並生成各種圖示 柱形圖 圓餅圖等等 然後在演算法方面,自己學習的主要的知識是揹包九講問題,對相關揹包進行...