POJ 3210 Coins 解題報告

2021-08-25 15:54:28 字數 952 閱讀 3252

題意:

給定n個硬幣,進行x次翻轉,每次只能翻轉乙個硬幣,且每個硬幣可被翻轉多次。

問:對於所有初始情況下的硬幣(即正反面的硬幣數不一樣),直少需要翻轉幾次才能達到所有硬幣均處於同一面的狀態。

分析:1. n為偶數。

1)若所有硬幣均處於同一面,最小翻轉次數x一定是偶數。

2)若不是所有硬幣均處於同一面,則一定是以下兩種情況:

i. 正面數為奇,反面數也為奇。最小翻轉次數一定為奇。

ii.正面數為偶,反面數也為偶;最小翻轉次數一定為偶。

由以上分析,知不存在最小翻轉次數x,使得經過x次翻轉後,所有硬幣均處於同一面。

2. n為奇數。

1)若所有硬幣均處於同一面,最小翻轉次數x一定是偶數。

2)若不是所有硬幣均處於同一面,則一定是以下兩種情況:

i. 正面數為奇,反面數為偶。最小翻轉「偶」次數可以這樣達到:

先翻轉所有的反面硬幣(偶),接著便是翻轉所有處於同一面的硬幣(偶),可以達到偶次翻轉。

ii.正面數為偶,反面數為奇。最小翻轉「偶」次數可以這樣達到:

先翻轉所有的正面硬幣(偶),接著便是翻轉所有處於同一面的硬幣(偶),可以達到偶次翻轉。

對於i,ii這兩種的所有情況,都是先翻轉具有同一面具有偶數個的硬幣。這樣求出最小的x為:

x = n - 1

簡單說下上式為何成立。至少n-1次翻轉對應的是1個硬幣與n-1個硬幣不同面的情況,翻轉這n-1個硬幣便可達到目標;對於其他有2,3,4……,n-1個硬幣跟餘下硬幣不同面的情況,均可進行n-1次翻轉後達到目標。如有2個硬幣與餘下的n-2個硬幣一同面,則先翻轉該2個硬幣,接著所有硬幣便處於同一面,翻轉n-1-2便也達到目標。

**:

#include using namespace std; int main() return 0; }

poj 1033 Defragment 解題報告

距離從1000處子題,已經過了好些日子了,終於突破20題了,但是還沒有進入前1w 中國的人真多啊 一直在做動態規劃的題,實在是被動態規劃的強大折服。最近開始找些搜尋的題來做,剪那個sticks,一直剪不過tle,於是決定換道題,看網上的推薦說這是一道搜尋題,於是開始切!題意 磁碟整理,按照從第乙個檔...

poj1007 DNA Sorting解題報告

題目要求的是一條dna序列的逆序數,求逆序數可以考慮使用歸併演算法來進行求解。我們來設想這樣乙個場景 相鄰的a b兩塊進行公升序排序,各自都已經是排好序的了,且b排在a右邊。那麼當把b中的某數t放到已排序的數列中,那麼a序列中剩下的數就是比數t要大的,但我們要注意到 在原序列中,由於b序列在a序列右...

poj 1007DNA Sorting解題報告

默默的說真的是水題 題目大意 序列 未排序程度 的乙個計算方式是元素亂序的元素對個數。例如 在單詞序列 daabec 中,因為d大於右邊四個單詞,e大於c,所以計算結果為5。這種計算方法稱為序列的逆序數。序列 aacedgg 逆序數為1 e與d 近似排序,而序列 zwqm 逆序數為6 它是已排序序列...