HDU1276士兵队列训练问题

简介: HDU1276士兵队列训练问题

Problem Description

某部队进行新兵队列训练,将新兵从一开始按顺序依次编号,并排成一行横队,训练的规则如下:从头开始一至二报数,凡报到二的出列,剩下的向小序号方向靠拢,再从头开始进行一至三报数,凡报到三的出列,剩下的向小序号方向靠拢,继续从头开始进行一至二报数。。。,以后从头开始轮流进行一至二报数、一至三报数直到剩下的人数不超过三人为止。

Input

本题有多个测试数据组,第一行为组数N,接着为N行新兵人数,新兵人数不超过5000。

Output

共有N行,分别对应输入的新兵人数,每行输出剩下的新兵最初的编号,编号之间有一个空格。

Sample Input

2
20
40

分析:主要考察list的使用.

参考代码

#include<iostream>
#include<list>
using namespace std;
int main() {
  int n,m;
  cin>>n;
  while(n--) {
    cin>>m;
    list<int> line;
    list<int>::iterator it;
    for(int i = 1; i <= m; i++) {
      line.push_back(i);
    }
    int k = 2;
    while(line.size() > 3) { //模拟
      int num = 1;
      for(it=line.begin(); it != line.end(); ) {
        if(num++%k==0) {
          //line.erase(it);
          it=line.erase(it);
        } else {
          it++;//如果该位置不满足,it才往后移动.
        }
      }
      k==2?k=3:k=2;
    }
    //cout<<line.size()<<endl;
    for(it=line.begin(); it != line.end(); it++) {
      if(it==line.begin()) {
        cout<<*it;
      } else {
        cout<<" "<<*it;
      }
    }
    cout<<endl;
  }
  return 0;
}

注意点:

集合中迭代器是 const类型的,只能读不能进行修改,所以不能使用 it+常数

it=line.erase(it); 删除元素之后必须重新初始化迭代器it,因为所有容器做erase操作时都有可能使迭代器失效

相关文章
|
监控
zabbix关于Utilization of trapper processes over报警的处理及优化
zabbix关于Utilization of trapper processes over报警的处理及优化
1686 0
zabbix关于Utilization of trapper processes over报警的处理及优化
|
机器学习/深度学习 搜索推荐 算法
“会员营销API:自动化积分与优惠券,增强用户粘性”
会员营销API集积分管理、优惠券发放、用户行为追踪等功能于一体,助力企业自动化运营,降低成本并提升体验。其核心功能涵盖自动化积分系统、优惠券策略优化、数据整合与用户画像分析、跨平台体验管理,以及安全风控机制。通过实时同步积分、动态调整优惠力度和多终端数据整合,增强用户参与感与忠诚度。同时,提供效果评估工具和A/B测试接口,结合机器学习算法优化营销策略,实现精准化、高效化的会员管理与留存提升。
104 0
|
9月前
|
云安全 人工智能 安全
企业安全用云指南:如何构建云端防线?
企业安全用云指南:如何构建云端防线?
|
前端开发 JavaScript API
前端的全栈之路Meteor篇(完):关于前后端分离及与各框架的对比,浅析分离之下的潜在耦合
本文探讨了Meteor.js这一全栈JavaScript框架的特点与优势,特别是在前后端分离架构中的应用。Meteor通过共享数据结构和简化全栈开发流程,实现了前后端的紧密协作。文章还对比了其他全栈框架,如Next.js、Nuxt.js等,分析了各自的优势与适用场景,最后讨论了通过定义文档归属者和用户专有数据集简化后端构建及端云数据同步的方法。
855 0
|
消息中间件 中间件 测试技术
软件体系结构 - 遗留系统演化策略
【4月更文挑战第11天】软件体系结构 - 遗留系统演化策略
536 4
|
编解码 资源调度 算法
技术心得记录:小波变化与小波降噪
技术心得记录:小波变化与小波降噪
|
JavaScript Java 测试技术
Java项目基于ssm+vue.js的农家乐内部管理系统附带文章和源代码设计说明文档ppt
Java项目基于ssm+vue.js的农家乐内部管理系统附带文章和源代码设计说明文档ppt
89 0
|
算法 C++
【牛客-算法】NC61 两数之和(哈希表的运用,C++)
前言 🔥 该专栏作为算法题笔记,记录算法的思路、遇到的问题,以及能跑的代码,持续更新中! 🔥 推荐一款面试、刷题神器牛客网:👉开始刷题学习👈
499 1
|
Arthas NoSQL Java
一次访问Redis延时高问题排查与总结(2)
本文是一次访问Redis延时高问题排查与总结的续篇,主要讲述了当时没有发现的一些问题和解决方案。
47950 22
锁、C#中Monitor和Lock以及区别
1.Monitor.Enter(object)方法是获取锁,Monitor.Exit(object)方法是释放锁,这就是Monitor最常用的两个方法,当然在使用过程中为了避免获取锁之后因为异常,致锁无法释放,所以需要在try{} catch(){}之后的finally{}结构体中释放锁(Monitor.Exit())。
2714 0