标签:
2 3
2 4
GBBGBGGB
模拟一下就可以了,删除队列中的元素用vector。
先出来的p个人都是B.
1 #include<stdio.h>
2 #include<algorithm>
3 #include<iostream>
4 #include<string.h>
5 #include<math.h>
6 #include<vector>
7 #include<queue>
8 #include<stack>
9 using namespace std;
10 vector<int>my;
11 int a[80000];
12 char paidui[80000];
13 int main(void)
14 {
15 int n,i,j,k,p,q;
16 int cnt;
17 int id;
18 int ans;
19 int uu;
20 while(scanf("%d %d",&p,&q)!=EOF)
21 {
22 cnt=0;
23 ans=1;
24 memset(paidui,0,sizeof(paidui));
25 my.clear();
26 int countt=2*p;
27 for(i=1; i<=2*p; i++)
28 {
29 my.push_back(i);
30 }
31 int biao=q%(2*p);//biao表示删除的下标
32 uu=1;//表示在某次操作前要删除的元素,
33 while(cnt<p)
34 {
35 if(biao==0)
36 {
37 biao=countt;
38 countt-=uu;
39 uu=0;
40 a[cnt++]=my[biao-1];
41 my.erase(my.end()-1);
42 biao=q%countt;
43 uu++;
44 }
45 else
46 {
47 if(biao+q>countt)
48 {
49 int vc=q;
50 vc-=(countt-biao);
51 a[cnt++]=my[biao-uu];
52 my.erase(my.begin()+biao-uu);
53 countt-=uu;
54 biao=vc%countt;
55 uu=0;
56 uu++;
57
58 }
59 else
60 {
61 a[cnt++]=my[biao-uu];
62 my.erase(my.begin()+biao-uu);
63 biao=(biao+q)%countt;
64 uu++;
65 }
66 }
67
68 }
69 for(i=0; i<cnt; i++)
70 {
71 paidui[a[i]]=‘B‘;
72 }
73 for(i=1; i<=2*p; i++)
74 {
75 if(!paidui[i])
76 {
77 paidui[i]=‘G‘;
78 }
79 }
80 for(i=1; i<=2*p; i++)
81 {
82 printf("%c",paidui[i]);
83 if(i%50==0)
84 printf("\n");
85 }
86 printf("\n");printf("\n");
87 }
88 return 0;
89 }
标签:
原文地址:http://www.cnblogs.com/zzuli2sjy/p/5184162.html