题目地址

hdu1276

题干

代码和解释

本题使用了STL中的list,STL的list是双向链表。它的内存空间不必连续,通过指针来进行数据的访问,高效率地在任意地方删除和插入,插入和删除操作时常数时间。list和vector的优缺点正好相反,它们的应用场景不同:

(1)vector:插入和删除操作少,随机访问元素频繁

(2)list:插入和删除频繁,随机访问较少。

使用链表list时,我们需要用到迭代器。比如本题的代码中,list的类型是int,所以我们定义迭代器的方式是list<int>::iterator it;。这个it相当于一个指针,辅助我们对链表的处理。比如,对于链表a中的第一个元素的值,我们不能直接使用a[0]来表示,而是应该用*it,此处的it指向a的开始,it=a.begin();

当然,使用STL list时要注意头文件#include<list>

下面是本题的c++代码

#include<iostream>
#include<list>
using namespace std;
int main()
{
int N;
int x;
int i;
list<int> a;
list<int>::iterator it;
int k;
scanf("%d",&N);
while(N--){
scanf("%d",&x);
a.clear();
for(i=0;i<x;i++){
a.push_back(i+1);//存每个士兵的编号(索引加1)
}
k=2;//第一次删喊“2”的
while(a.size()>3){
i=0;
for(it=a.begin();it!=a.end();){
if((i+1)%k==0){//删除喊“k”的士兵
it=a.erase(it);//it指到下一位的地址
}
else{
it++;//it指到下一位的地址
}
i++;
}
if(k==2) k = 3;
else k = 2;
}
for(it=a.begin();it!=a.end();){
printf("%d",*it);
it++;
if(it!=a.end()) printf(" ");
else printf("\n");
}
}
return 0;
}

hdu1276士兵队列训练问题[简单STL list]的更多相关文章

  1. 解题报告:hdu 1276 士兵队列训练问题 - 简单题

    Problem Description 某部队进行新兵队列训练,将新兵从一开始按顺序依次编号,并排成一行横队,训练的规则如下:从头开始一至二报数,凡报到二的出列,剩下的向小序号方向靠拢,再从头开始进行 ...

  2. (hdu step 8.1.6)士兵队列训练问题(数据结构,简单模拟——第一次每2个去掉1个,第二次每3个去掉1个.知道队伍中的人数&lt;=3,输出剩下的人 )

    题目: 士兵队列训练问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...

  3. HDU 1276 士兵队列训练问题(模拟)

    原题代号:HDU 1276 原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1276 题目原题: 士兵队列训练问题 Time Limit: 2000/10 ...

  4. hdoj 1276 士兵队列训练问题【模拟】

    士兵队列训练问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Su ...

  5. A - 士兵队列训练问题

    A - 士兵队列训练问题 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit ...

  6. 【ACM】hdu_1276_士兵队列训练问题_201308131032

    士兵队列训练问题Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Sub ...

  7. HDU 1276 士兵队列训练问题(队列)

    题目网址:http://acm.hdu.edu.cn/showproblem.php?pid=1276 题目: 士兵队列训练问题 Time Limit: 2000/1000 MS (Java/Othe ...

  8. HDU1276(士兵队列训练模拟与链表)

    HDU1276 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u   Descripti ...

  9. 暑假集训(1)第一弹 -----士兵队列训练问题(Hdu1276)

    Description 某部队进行新兵队列训练,将新兵从一开始按顺序依次编号,并排成一行横队,训练的规则如下:从头开始一至二报数,凡报到二的出列,剩下的向小序号方向靠拢,再从头开始进行一至三报数,凡报 ...

随机推荐

  1. Content-Type属性的取值和作用

    1.Content-Type 的值类型: 1.1 application/json:消息主体是序列化后的 JSON 字符串 1.2 application/x-www-form-urlencoded: ...

  2. vue项目的一个package.json

    {   "name": "projectName",   "version": "1.0.1",   "des ...

  3. 纯css无js实现点击事件

    <input id="A" type="checkbox"><label for="A"> <span cla ...

  4. java web的转发与重定向

    java web的转发与重定向 原创 2012年12月15日 11:51:39 19312 转发和重定向的区别 一.使用方法 转发:request.getRequestDispatcher(" ...

  5. VS code key shortcuts for windows

    mac上的快捷键,尽量是选择像我用vs studio上靠近. ctrl+K+S: 显示快捷键列 ctrl+shift+p: 系统配置命令行 ctrl+p:项目中文件列表,选择文件 Alt+M:当前文件 ...

  6. python语言的堆栈与队列类的实现

    基于python语言的数据结构之堆栈与队列的实现 # 堆栈的实现 # -*- coding: utf-8 -*- """ 栈(stack), 是一种容器,可以存入数据元素 ...

  7. Linux运维技术之端口转发

  8. SaltStack--数据系统

    saltstack数据系统 数据系统Grains 1.Grains是SaltStack收集的有关底层管理系统的静态信息.包括操作系统版本.域名.IP地址.内存.内核.CPU.操作系统类型以及许多其他系 ...

  9. 使用java spring开发ckeditor的文件上传功能(转)

    说明:原帖提供的代码无法直接运行.本人在原帖基础上做了一些修改,修复了一些bug. 关于CKEditor的使用,网络上有无数的文章,这里不再赘述.而关于java支持的文件上传功能,网络上同样有千千万万 ...

  10. nodejs中判断请求来自PC端还是移动端

    获取req.headers["user-agent"]: var deviceAgent = req.headers["user-agent"].toLower ...