这道题如果你的思维很局限,可以使用queue,先创建一个队列,正常输入,在queue中进行运算,代码如下:
#include<bits/stdc++.h> using namespace std; queue<int> q; int a,n,cnt;//cnt代表位置 int main(){ freopen("ysf.in","r",stdin); freopen("ysf.out","w",stdout); cin>>a>>n; for(int i=1;i<=a;i++) q.push(i);//q.push()输入 while(!q.empty()){//如果为空退出循环 cnt++; if(cnt==n){//如果到了出圈的人 cout<<q.front()<<" ";//q.front()出圈 q.pop();//删除出圈的人,q.pop()删除 cnt=0;//重新计数 } else { //如果这人不用出圈,重新刷新一下 int x = q.front(); q.pop(); q.push(x); } } return 0; }
题目3888 约瑟夫问题
2
评论
2024-01-08 21:30:02
|
|
对于学过排序的来说是一道比较简单的题。思路:题目让给出时长最短的方法,参加之后增加的值都是1,所以先将所有活动时长从小到大排列一遍,再逐个参加, 直到满足条件为止,一下展示的是sort排序方法 #include<bits/stdc++.h>//万能头文件 using namespace std; int a[100001],b[100001],m,n,ans;//ans的值自动会为0 int main(){ freopen("bird.in","r",stdin);//freopen文件读写 freopen("bird.out","w",stdout); cin>>n>>m;//读入 for(int i=1;i<=n;i++) cin>>a[i]; sort(a,a+n);//将时长从小到大排列 for(int i=1;i<=m;i++) ans+=a[i];//加上所需时间 cout<<ans;//输出结果 return 0; }
题目3900 [桐柏邀请赛S14]bird
AAAAAAAAAA
4
评论
2023-10-19 21:12:42
|