HDU1276 士兵队列训练问题【模拟+array+vector+list】
士兵队列训练问题
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 11849 Accepted Submission(s): 5194
问题链接:HDU1276 士兵队列训练问题
问题描述:(略)
问题分析:
这个问题用模拟法来解决。
数据结构可以采用3种,分别是数组、STL的vector和list。
程序说明:(略)
参考链接:(略)
题记:想不到好办法,要么枚举,要么模拟。
AC的C++语言程序(array)如下:
/* HDU1276 士兵队列训练问题 */#include <iostream>
#include <stdio.h>using namespace std;const int N = 5000;
int a[N + 1];int main()
{int n, k, cnt;scanf("%d", &n);while(n--) {scanf("%d", &k);for(int i = 1; i <= k; i++)a[i] = i;cnt = k;while(cnt > 3) {int cnt2 = 0;for(int i = 1; i <= k; i++)if(a[i]) {if(++cnt2 == 2) {a[i] = 0;cnt2 = 0;cnt--;}}if(cnt <= 3)break;cnt2 = 0;for(int i = 1; i <= k; i++)if(a[i])if(++cnt2 == 3) {a[i] = 0;cnt2 = 0;cnt--;}}int cnt2 = 0;for(int i = 1; i <= k; i++) {if(a[i] > 0) {if(i != 1)printf(" ");printf("%d", a[i]);if(++cnt2 == cnt) {printf("\n");break;}}}}return 0;
}
AC的C++语言程序(vector)如下:
/* HDU1276 士兵队列训练问题 */#include <iostream>
#include <vector>
#include <stdio.h>using namespace std;int main()
{int n, k;scanf("%d", &n);while(n--) {scanf("%d", &k);vector<int> v;for(int i = 1; i <= k; i++)v.push_back(i);while(v.size() > 3) {for(int i = (v.size() / 2) * 2 - 1; i >= 1; i -= 2)v.erase(v.begin() + i);if(v.size() <= 3)break;for(int i = (v.size() / 3) * 3 - 1; i >= 2; i -= 3)v.erase(v.begin() + i);}for(int i = 0; i < (int)v.size(); i++) {if(i != 0)printf(" ");printf("%d", v[i]);}printf("\n");}return 0;
}
AC的C++语言程序(list)如下:
/* HDU1276 士兵队列训练问题 */#include <iostream>
#include <list>
#include <stdio.h>using namespace std;int main()
{int n, k;scanf("%d", &n);while(n--) {scanf("%d", &k);list<int> l;list<int>::iterator it;int i;for(i = 1; i <= k; i++)l.push_back(i);while(l.size() > 3) {for(i =1, it = l.begin(); it != l.end();) {if(i % 2 == 0) {it = l.erase(it);i = 1;} elseit++, i++;}if(l.size() <= 3)break;for(i =1, it = l.begin(); it != l.end();) {if(i % 3 == 0) {it = l.erase(it);i = 1;} elseit++, i++;}}for(list<int>::iterator it = l.begin(); it != l.end(); it++) {if(it != l.begin())printf(" ");printf("%d", *it);}printf("\n");}return 0;
}
HDU1276 士兵队列训练问题【模拟+array+vector+list】相关推荐
- hdoj 1276 士兵队列训练问题 模拟队列
士兵队列训练问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total S ...
- HDU1276士兵队列训练问题 循环队列
**Problem Description 某部队进行新兵队列训练,将新兵从一开始按顺序依次编号,并排成一行横队,训练的规则如下:从头开始一至二报数,凡报到二的出列,剩下的向小序号方向靠拢,再从头开始 ...
- HDU-1276 士兵队列训练问题
题目描述 某部队进行新兵队列训练,将新兵从一开始按顺序依次编号,并排成一行横队,训练的规则如下:从头开始一至二报数,凡报到二的出列,剩下的向小序号方向靠拢,再从头开始进行一至三报数,凡报到三的出列,剩 ...
- hdu1276 士兵队列训练问题-list容器
Problem Description 某部队进行新兵队列训练,将新兵从一开始按顺序依次编号,并排成一行横队,训练的规则如下:从头开始一至二报数,凡报到二的出列,剩下的向小序号方向靠拢,再从头开始进行 ...
- HDU1276:士兵队列训练问题
Problem Description 某部队进行新兵队列训练,将新兵从一开始按顺序依次编号,并排成一行横队,训练的规则如下:从头开始一至二报数,凡报到二的出列,剩下的向小序号方向靠拢,再从头开始进行 ...
- 1276 士兵队列训练问题【队列模拟】
士兵队列训练问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total S ...
- 杭电1276:士兵队列训练问题
士兵队列训练问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Subm ...
- 士兵队列训练问题 HDU - 1276
题目 士兵队列训练问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tota ...
- c++实现简单的数据结构(1.链表合并 2.士兵队列训练问题 3.Rails 4.Josephus Problem 5.Tree Recovery 6.四则运算 7.愚人节的礼物 8.Web)
系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮 ...
最新文章
- LSM Tree 学习笔记——MemTable通常用 SkipList 来实现
- SQL语句对于NUll的筛选
- ResizeObserver - 元素resize监听API
- 优化器,SGD+Momentum;Adagrad;RMSProp;Adam
- 上海交通大学出版社python教材答案学生信息管理系统_学生信息管理系统任务书...
- pdf转换成word转换器免费下载
- sit是什么环境_DEV SIT UAT PET SIM PRD PROD常见环境英文缩写含义
- 网络爬虫技术是什么,网络爬虫的基本工作流程是什么?
- CentOS7里ping命令详解
- linux磁盘空间df-h出不出来,linux 故障:df -h统计磁盘空间占用太多,但又du -h找不到大的文件...
- 3626 三元一次方程(枚举)
- 青龙面板运行·小米改步
- NEXTCHIP概述-2
- phantompdf 下载_英雄联盟手游详细下载方法,附中文翻译!
- 第979期机器学习日报(2017-05-24)
- 微软认证70-541,70-542等考试试题(80%以上的题目是一样的)
- linux升级补丁包,linux 升级补丁
- 瞬变电磁数据读取显示,正演计算,及基础处理DLL文件调用
- 这200道java大厂面试题全部掌握,“面试”想去哪就去哪
- 在将公司“一拆六”后,阿里巴巴未来将释放出哪些投资价值?
热门文章
- mysql 逗号 join_mysql – sql join表,其中1列有逗号
- 《深入理解TypeScript》读后感一篇【基础篇】
- Kubernetes中的nodePort,targetPort,port的区别和意义(转)
- C#反射取得方法、属性、变量
- Starling实现的硬皮翻书效果
- C# 多个图片叠加,图片透明.
- mach内核和linux对比,海思Hi3511/Hi3512 Linux内核与标准内核差异说明
- git 分支merge主分支 解决冲突
- python classmethod 与 staticmethod
- mysql navicat授权_Mysql授权允许远程访问解决Navicat for MySQL连接mysql提示客户端不支持服务器请求的身份验证协议;考虑升级MySQL客户端...