題意:在乙個橢圓軌道上放有黑、白兩種顏色的碟子,要求碟子總數最少為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.求這個串的最長的交替子串行。解題思路 若是滿足進行反轉的情況,...