poj 1063 找規律題目

2021-08-11 06:16:03 字數 1251 閱讀 8195

題意:在乙個橢圓軌道上放有黑、白兩種顏色的碟子,要求碟子總數最少為10個,最多為30個,通過flip和shift兩種轉換方式將黑、白兩種顏色的碟子完全分居開來。

思路:flip和shift兩種轉換方式一起使用可以理解為:將位置為i某個碟子與位置為i-2或i+2上的某個碟子交換。

這樣理解起來方便許多,若橢圓軌道上的凹槽個數n為奇數,則一定可以將兩種顏色的碟子完全分開(取一黑色的碟子,假如這個黑碟原來在偶數字置上,那麼當它沿某一固定方向與其他碟子交換一周後會位於奇數字置上。如:原來有11個凹槽,該黑碟原來在位置2上(凹槽起始位置為1),按i+2的方向交換,換到10號位置時,再交換一次便到1號位置上了。所以說,若n為奇數,則某個碟子可以位於任意位置,則一定可以分開。)

若橢圓軌道上的凹槽個數n為偶數,當奇數字置上的黑碟數與偶數字置上的黑碟數相差<=1時,一定可以完全分開(奇偶相嵌)。

多說一句:如果是盤子個數是偶數的話,在介面處不可以改變奇偶性,但是如果是奇數就可以改變奇偶性,所以有了上面的結論 

**:#include

using

namespace

std;

int

main()

delete

disk;

if(count%2

!=0)else

if(even

-odd

<2&&

even

-odd

>-

2)cout

<<

"yes"

<<

endl;

else

cout

<<

"no"

<<

endl;

}return0;}

另附一段較為精簡的**:

#include

#include

int

main()

printf("%s\n"

,(n&1) ||

abs(arr[0

]-arr[1])

<=1?

"yes"

:"no");

}return0;}

POJ 2229 Sumsets(遞推,找規律)

構造,遞推,因為劃分是合併的逆過程,考慮怎麼合併。先把n展開成全部為n個1 然後合併,因為和順序無關,所以只和出現次數有關 情況有點多並且為了避免重複,分類,c i 表示序列中最大的數為2 i時的方案數 樹形表示合併 uva 10562 undraw the trees的表示方法。7 2 0 7表示...

POJ 2229 Sumsets(找規律,預處理)

題目 參考了別人找的規律再理解 8 1 1 1 1 1 1 1 1 1 1 8 1 1 1 1 1 1 1 2 2 3 8 1 1 1 1 2 2 8 1 1 1 1 4 4 5 8 1 1 2 2 2 8 1 1 2 4 6 7 8 2 2 2 2 8 2 2 4 8 4 4 8 8 8 9 以下...

思維找規律題 CodeForces 603A

題目大意 給你乙個長為n的串,只包含0和1字元,求這個串的最長的交替子串行 不連續 例如010,1,1010等都是交替序列,1001,11等都不是。還可以對串的乙個連續子串做乙個操作,將子串中的0都反轉為1,或著,將子串中的1都反轉為0.求這個串的最長的交替子串行。解題思路 若是滿足進行反轉的情況,...