hdu 4841 圓桌問題(STL vector)

2022-05-03 06:03:09 字數 1410 閱讀 2611

problem description

圓桌上圍坐著2n個人。其中n個人是好人,另外n個人是壞人。如果從第乙個人開始數數,數到第m個人,則立即處死該人;然後從被處死的人之後開始數數,再將數到的第m個人處死……依此方法不斷處死圍坐在圓桌上的人。試問預先應如何安排這些好人與壞人的座位,能使得在處死n個人之後,圓桌上圍坐的剩餘的n個人全是好人。

input

多組資料,每組資料輸入:好人和壞人的人數n(<=32767)、步長m(<=32767);

output

對於每一組資料,輸出2n個大寫字母,『g』表示好人,『b』表示壞人,50個字母為一行,不允許出現空白字元。相鄰資料間留有一空行。

sample input

2 32 4

sample output

gbbg

bggb

source

ahoi1999

題意:中文題就不用了

思路:首先需要乙個vector

儲存每個人,然後是乙個

vis陣列來標記。

找n個人,所以迴圈

n次。定義乙個

cnt=0

,每一次

cnt+=m-1,

。如果cnt<=

當前的總人數,則將

v.erase

(v.begin

()+cnt

),vis【v.

【cnt

】】=1

,當前人數-1;

如果cnt>=

當前人數,

cnt%=

(當前的總人數),

v.erase

(v.begin

()+cnt

),vis【v.

【cnt

】】=1

,當前人數-1;

vis【i】

=1 為b,

vis【i】

=0為g

1 #include2 #include3 #include4 #include5 #include6 #include7

using namespace std;

8 #define n 100000

9int

n,m;

10 vectorv;

11int

vis[n];

12int

main()13

32else

3338 now--;39}

4041

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

4250 printf("\n");

51 printf("\n");

5253

5455}56

return 0;

57 }

view code

HDU 4841 圓桌問題

acm模版 這個題簡單的來就是暴力列舉約瑟夫環,當然,太暴力也不好,適當的用資料結構優化一下也是有必要的,這裡用向量維護,成功水過。include include include include include using namespace std const int maxn 4e4 const...

hdu4841 圓桌問題

圓桌上圍坐著2n個人。其中n個人是好人,另外n個人是壞人。如果從第乙個人開始數數,數到第m個人,則立即處死該人 然後從被處死的人之後開始數數,再將數到的第m個人處死 依此方法不斷處死圍坐在圓桌上的人。試問預先應如何安排這些好人與壞人的座位,能使得在處死n個人之後,圓桌上圍坐的剩餘的n個人全是好人。多...

HDU 4841 圓桌問題

圓桌上圍坐著2n個人。其中n個人是好人,另外n個人是壞人。如果從第乙個人開始數數,數到第m個人,則立即處死該人 然後從被處死的人之後開始數數,再將數到的第m個人處死 依此方法不斷處死圍坐在圓桌上的人。試問預先應如何安排這些好人與壞人的座位,能使得在處死n個人之後,圓桌上圍坐的剩餘的n個人全是好人。i...