1 条题解
-
0
算是学习 bfs 前对
queue
的应用吧。由于男、女都是周而复始地入队,就可以把它看作一个队列,每次取出队头,接着删除队头,把队头插入队尾。
想通之后,代码就很容易实现了:
#include <bits/stdc++.h> using namespace std; #define int long long #define rep(i,x,y) for(int i=x;i<=y;i++) #define rrep(i,x,y) for(int i=x;i>=y;i--) #define sc scanf #define pr printf #define max(a,b) a>b?a:b #define endline pr("\n") inline int read(){int s=0,w=1;char c=getchar();while(!isdigit(c)){if(c=='-') w=-1;c=getchar();}while(isdigit(c)){s=(s<<1)+(s<<3)+(c^48);c=getchar();}return s*w;} int b,g,k; queue <int> boy,girl; signed main(){ b=read();g=read(); k=read(); rep(i,1,b) boy.push(i); rep(i,1,g) girl.push(i); rep(i,1,k){ int t_boy=boy.front(),t_girl=girl.front(); pr("%3lld%3lld\n",t_boy,t_girl);//注意场宽为 3,但是不能输出 2 个空格(被坑了 N 次)。 boy.push(t_boy);//入队(先入队还是出队无所谓)。 girl.push(t_girl); boy.pop();girl.pop();//出队。 } return 0; }
- 1
信息
- ID
- 69
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 5
- 标签
- (无)
- 递交数
- 161
- 已通过
- 57
- 上传者