ZCMU—1853
来源:互联网 发布:手机写作软件排行 编辑:程序博客网 时间:2024/06/06 07:49
1853: zbj的游戏
Time Limit: 1 Sec Memory Limit: 128 MB[Submit][Status][Web Board]
Description
这天zbj跟小伙伴们玩了一个游戏,他们总共有n个人,有一条长凳,上面最多能坐m个人。
zbj和他的小伙伴们按照1-n编号,然后按顺序坐上长凳,然后每次长凳上的第k个那个人会被out当一个人被out之后,下一个人就可以坐上长凳,而每个人有自己喜欢的数字ai,他就会坐在第ai个位置。重复步骤直到长凳上的人数小于k
现在zbj想知道,他们这群人的out顺序是怎么样的?
Input
多组输入数据。对于每组输入数据,第一行是两个整数n,m,k(1<=n<m<=10000 1<=k<=m)。接下来一行有n-m个整数ai(1<=ai<=m),按顺序代表站着的人喜爱的数字。
Output
输出out的顺序,输出为一行,每两个数字之间用空格隔开,行末无空格。
Sample Input
5 2 2
1 2 2
Sample Output
2 1 4 5
HINT
比如5个人玩游戏,长凳上只能坐2个人,k=2,那么1号2号先坐在了凳子上,第一轮,2号被out,3号坐下,3号喜欢的数字是1,那么3号坐在了第一个位置上,当前长凳上的顺序变成了3号 1号;第二轮,1号被out,4号坐下,4号喜欢的数字是2,那么4号坐在第二个位置上,当前长凳上的顺序变成了3号 4号;第三轮,4号被out,5号坐下,5号喜欢的数字是2,当前长凳上的顺序变成了3号 5号;第四轮,5号被out,无人坐下;第五轮,当前长凳上只有1个人<k,所以无人能被out,所以游戏结束。
out顺序为2 1 4 5
【分析】
约瑟夫的变化版...每次出局之后会新增人的约瑟夫...vector的基本应用了..插入就插入..删除就删除..删除之前输出一下删除的是谁就可以了..
【代码】
#include <cstdio>#include <iostream>#include <vector>using namespace std;vector <int> a; int main(){ int n,m,x,k; while (~scanf("%d%d%d",&n,&m,&k)) { a.clear(); int t=0; for (int i=1;i<=m;i++) a.push_back(i); for (int i=m+1;i<=n;i++) { scanf("%d",&x); if (t) printf(" ");else t=1; printf("%d",*(a.begin()+k-1)); a.erase(a.begin()+k-1); a.insert(a.begin()+x-1,i); } while(a.size()>=k) { if (t) printf(" ");else t=1; printf("%d",*(a.begin()+k-1)); a.erase(a.begin()+k-1); } printf("\n"); } return 0;}
0 0
- ZCMU—1853
- ZCMU—1678
- ZCMU—1605
- ZCMU—1067
- ZCMU—1607
- ZCMU—1069
- ZCMU—1611
- ZCMU—1606
- ZCMU—1774
- ZCMU—1766
- ZCMU—1752
- ZCMU—1724
- ZCMU—1623
- ZCMU—1689
- ZCMU—1667
- ZCMU—1639
- ZCMU—1668
- ZCMU—1540
- 自动饮料售货机
- 第四十讲项目七-找数字
- 1.26.7
- Oracle 12c CC安装部署攻略 (下)
- sklearn基本用法----knn
- ZCMU—1853
- [LeetCode]322. Coin Change
- Uva 540 Team Queue
- ios 年底版本遇到的坑一 Switch语句
- 浮动、定位和层级
- springMVC访问不到控制器解决方案
- 通往奥格瑞玛的道路_洛谷1462_二分+spfa
- 24点小游戏算法
- HttpInvoker运作原理