HDU 1034 傳遞糖果 模擬

2022-05-09 18:35:40 字數 653 閱讀 3263

題意是一群孩子圍成乙個圈,每個人把手中的糖果分一半給右邊的人,若分過之後手中的糖果數是奇數,則由老師提供一顆糖果給他,問這樣傳遞多少圈所有人的糖果數都能相等,最終每人手裡的糖果數是多少。

由於題中已經解釋了結果是有限的數,那麼就直接模擬,要注意分的時候是從前面的人往後面傳遞。

**如下:

1 #include 2

using

namespace

std;

3int n,ans,tmp,t,a[10009],pre[10009];4

bool

judge()511

intmain()

1229

for(int i = 0; i < n; ++i)

3034

for(int i = 0; i < n; ++i)

3539 ++ans;

40if(judge()) break;41

}42 printf("

%d %d\n

",ans,a[0

]);43}44

return0;

45 }

view code

(自己注釋掉的部分沒發現問題在哪,頭好痛......希望知道的大神賜教orz )

hdu1034 簡單模擬

這裡開乙個二維陣列,num 105 2 我也不知道n有多少,隨便開的,那麼這裡num i 0 表示當前 第 i 個人擁有的糖果數,num i 1 表示他上面乙個人分給他的糖果數,具體實現見 注釋 這裡要注意的就是 先給糖果,然後如果有人糖果數為奇數,就加1 然後再判斷是不是相等 上馬 include...

hdu1034(簡單模擬)

模擬的水題 題目是說,n個人坐一圈,開始每個人都有偶數個糖果,如果不相等,老師吹一次哨,每個人就把一半的糖果給右邊的人,如果手裡有奇數個糖果,老師會再給乙個補成偶數,直到所有人糖果數相同。題目知,最後一定能達到相同狀態。多開了乙個陣列,每次全部換完糖果後判斷一次,用了sort從小到大,如果最小的和最...

hdu5961傳遞(bitset亂搞)

hdu5961 題意 中文題題解 1 判斷傳遞的條件為 若g中有 一條邊從a到b且有一條邊從b到c 則g中同樣有一條邊從a到c。2 我們去列舉b,我們假設集合sb 表示有一條 x 指向 b的邊。我們假設集合tb 表示有有一條 b 指向 x的邊。3 我們再去列舉sb 中的元素,假設我們當前列舉的是 x...