当前位置:网站首页>3559. 围圈报数
3559. 围圈报数
2022-08-03 05:16:00 【NEFU AB-IN】
Powered by:NEFU AB-IN
文章目录
3559. 围圈报数
题意
N 个人围成一圈顺序编号,从 1 号开始按 1、2、3 顺序报数,报 3 者退出圈外,其余的人再从 1、2、3 开始报数,报 3 的人再退出圈外,依次类推。
请按退出顺序输出每个退出人的原序号。
要求使用环行链表编程。思路
n比较小,所以可以用数组模拟链表,可以直接模拟来做
next数组存下一个数的下标,初始化就是环形链表,存前一个人的,也就是存第n个人,要往后报两格,所以两次next操作,到要弹出的点的父亲,然后输出弹出的点,最后再连上链表即可
代码
循环链表做法
#include <iostream> #include <cstring> #include <algorithm> using namespace std; void solve(){ int n; cin >> n; vector <int> ne(n + 1); for(int i = 1; i < n; ++ i){ ne[i] = i + 1; } ne[n] = 1; int p = n; for(int i = 1; i <= n; ++ i){ p = ne[ne[p]]; // p = 2 cout << ne[p] << ' '; // ne[p] = 3 ne[p] = ne[ne[p]]; // ne[p] = 4 } cout << '\n'; return; } int main() { int T; cin >> T; while(T--){ solve(); } return 0; }正常队列做法
/* * @Author: NEFU AB-IN * @Date: 2022-07-29 22:54:45 * @FilePath: \Acwing\3559\3559.1.cpp * @LastEditTime: 2022-07-29 22:57:34 */ #include <bits/stdc++.h> using namespace std; #define int long long #define SZ(X) ((int)(X).size()) #define IOS \ ios::sync_with_stdio(false); \ cin.tie(0); \ cout.tie(0); #define DEBUG(X) cout << #X << ": " << X << endl; typedef pair<int, int> PII; const int INF = INT_MAX; const int N = 1e6 + 10; void solve() { int n; cin >> n; queue<int> q; for (int i = 1; i <= n; ++i) { q.push(i); } int cnt = 0; while (SZ(q)) { auto t = q.front(); q.pop(); cnt++; if (cnt == 3) { cnt = 0; cout << t << " "; continue; } q.push(t); } cout << '\n'; return; } signed main() { IOS; int T; cin >> T; while (T--) { solve(); } return 0; }
边栏推荐
猜你喜欢
随机推荐
pta a.1030的dijkstra+DFS方法
运行 npm run xxx 如何触发构建命令以及启动Node服务等功能?
-飞机大战-
亲身分享一次 字节跳动 真实面试经历和面试题
浏览器多线程离屏渲染压缩打包方案
用C语言来实现扫雷小游戏
【函数与递归】7.19
Newifi路由器第三方固件玩机教程,这个路由比你想的更强大以及智能_Newifi y1刷机_smzdm
对页码的使用总结
Response 重写设置返回值
传说中可“免费白拿”的无线路由器 - 斐讯 K2 最简单刷 breed 与第三方固件教程
【DC-5靶场渗透】
图的最短路径的核心——松弛技术
breed Web刷机升级详细教材修正编译器固件说明_itkeji.top
陆运信息系统——班列项目总结(一)
web安全-SSTI模板注入漏洞
自定义封装组件-国际化-下拉搜索
D-PHY
【编程学习新起点】记录写博客的第一天
MySQL 一些函数









