hdu4841圆桌问题(STL)

hdu 4841 圆桌问题(用vector模拟约瑟夫环) 阅读详情
圆桌上围坐着2n个人。其中n个人是好人,另外n个人是坏人。如果从第一个人开始数数,数到第m个人,则立即处死该人;然后从被处死的人之后开始数数,再将数到的第m个人处死……依此方法不断处死围坐在圆桌上的人。试问预先应如何安排这些好人与坏人的座位,能使得在处死n个人之后,圆桌上围坐的剩余的n个人全是好人。
Input
多组数据,每组数据输入:好人和坏人的人数n(<=32767)、步长m(<=32767);
Output
对于每一组数据,输出2n个大写字母,‘G’表示好人,‘B’表示坏人,50个字母为一行,不允许出现空白字符。相邻数据间留有一空行。
Sample Input
2 3
2 4
Sample Output
GBBG

BGGB


用vector模拟圆桌,初始化时将每个人进行编号,然后取出坏人时进行标记,最后按照标记输出结果

AC代码

#include <iostream>
#include <cstring>
#include <vector>
using namespace std;
int vis[80000];              //用于标记的数组
int main()
{
    int n,m,temp,h;
    while(cin>>n>>m)
    {
        vector<int>g;
         for(int i=1;i<=2*n;i++)
            g.insert(g.end(),i);        //输入对应的编号
        memset(vis,0,sizeof vis);
        temp=0;
        for(int i=0;i<n;i++)
        {
            int f=g.size();
//取出编号
            if(temp+m<f)
               h=*(g.begin()+temp+m-1);
            else if(temp+m>f&&(temp+m)%f!=0)
               h=*(g.begin()+(temp+m)%f-1);
            else
               h=*(g.begin()+f-1);
//标记
            vis[h]=1;

            if(temp+m<f)
               {
                   g.erase(g.begin()+temp+m-1);
                   temp=temp+m-1;
               }
            else if(temp+m>f&&(temp+m)%f!=0)
               {
                   g.erase(g.begin()+(temp+m)%f-1);
                   temp=(temp+m)%f-1;
               }
            else
               {
                   g.erase(g.begin()+f-1);
                   temp=0;
               }
        }
//输出结果
        for(int i=1;i<=2*n;i++)
         {
            if(vis[i])
            cout<<'B';
            else
            cout<<'G';
            if(i%50==0&&i!=2*n)
                cout<<endl;
         }
         cout<<endl<<endl;   //最后的换行
    }
    return 0;
}


HDU 4841:圆桌问题(vector应用) 圆桌上围坐着2n个人。其中n个人是好人,另外n个人是坏人。如果从第一个人开始数数,数到第m个人,则立即处死该人;然后从被处死的人之后开始数数,再将数到的第m个人处死……依此方法不断处死围坐在圆桌上的人。试问预先应如何安排这些好人与坏人的座位,能使得在处死n个人之后,圆桌上围坐的剩余的n个人全是好人。 阅读详情

相关推荐

HDU 4841 圆桌问题 【STL】

圆桌问题 1000 MS & 32768 K Problem Description 圆桌上围坐着2n个人。其中n个人是好人,另外n个人是坏人。如果从第一个人开始数数,数到第m个人,则立即处死该人;然后从被处死的人之后开始数数,再将数到的第m个人处死……依此方法不断处死围坐在圆桌上的人。试问预先应如何安排这些好人与坏人的座位,能使得在处死n个人之后,圆桌上围坐的剩余的n个人全是好人。 ...

zhmeng 507

HDU 4841 圆桌问题

Problem Description 圆桌上围坐着2n个人。其中n个人是好人,另外n个人是坏人。如果从第一个人开始数数,数到第m个人,则立即处死该人;然后从被处死的人之后开始数数,再将数到的第m个人处死……依此方法不断处死围坐在圆桌上的人。试问预先应如何安排这些好人与坏人的座位,能使得在处死n个人之后,圆桌上围坐的剩余的n个人全是好人。 Input 多组数据,每组数据输入:好人和坏人的人数n(&...

moyangxian 1283

STL——圆桌问题

圆桌上围坐着2n个人。其中n个人是好人,另外n个人是坏人。如果从第一个人开始数数,数到第m个人,则立即处死该人;然后从被处死的人之后开始数数,再将数到的第m个人处死……依此方法不断处死围坐在圆桌上的人。试问预先应如何安排这些好人与坏人的座位,能使得在处死n个人之后,圆桌上围坐的剩余的n个人全是好人。 Input 多组数据,每组数据输入:好人和坏人的人数n(&lt;=32767)、步长m(&lt...

SuQia的博客 1536

寒假集训周总结1-栈,堆,全排列(南昌理工学院ACM集训队)

数据结构练习 圆桌问题 圆桌上围坐着2n个人。其中n个人是好人,另外n个人是坏人。如果从第一个人开始数数,数到第m个人,则立即处死该人;然后从被处死的人之后开始数数,再将数到的第m个人处死……依此方法不断处死围坐在圆桌上的人。试问预先应如何安排这些好人与坏人的座位,能使得在处死n个人之后,圆桌上围坐的剩余的n个人全是好人。 Input 多组数据,每组数据输入:好人和坏人的人数n(<=32767)、步长m(<=32767); Output 对于每一组数据,输出2n个大写字母,‘G’表示好人,‘B

weixin_51577613的博客 551

【网络】Ikuai中如何添加/更换虚拟机(图文)

Ikuai 添加虚拟机教程

qq_20623849的博客 6536

一文详解心电图(ECG)监测原理

介绍心电图的监测原理,从心电信号产生、获取到心电图的基本组成

m0_50146396的博客 3288

圆桌问题

圆桌问题 acm训练 认识实习题目 Problem Description 圆桌上围坐着2n个人。其中n个人是好人,另外n个人是坏人。如果从第一个人开始数数,数到第m个人,则立即处死该人;然后从被处死的人之后开始数数,再将数到的第m个人处死……依此方法不断处死围坐在圆桌上的人。试问预先应如何安排这些好人与坏人的座位,能使得在处死n个人之后,圆桌上围坐的剩余的n个人全是好人。 Input 多组数据,每组数据输入:好人和坏人的人数n(<=32767)、步长m(<=32767); Output 对于每

GreenBeryl的博客 480

ubuntu20.04运行VINS-Mono(跑EuRoC数据集)

在VINS-Mono主工程目录下的config子目录中找到euroc文件夹,并打开其中的euroc_config.yaml文件,将其中结果输出保存路径修改为本地的绝对路径或相对路径。应该是这个功能包路径没有成功得到,直接注释了这一行,改成你电脑中安装的vins_mono的pose_graph这个功能包路径,备注:直接下可能因为包太大下不下来,我是下载的zip,再解压,将VINS-Mono-master重命名为VINS-Mono。,当时参考了几篇不同的文章,感觉我的这个配置应该也可以编译,就先尝试了一下。

2301_80311277的博客 2981

hdu4841 圆桌问题[STL vector]

目录 题目地址 题干 代码和解释 参考 题目地址 hdu4841 题干 代码和解释 解本题时使用了刚学的STL vector,注意hdu不支持万能头文件#include<bits/stdc++.h>,所以要记得使用#include<vec...

afu42832的博客 436

基于MATLAB/Simulink与WSL2的ROS2实时联合仿真实践

本文详细介绍了基于MATLAB/Simulink与WSL2的ROS2实时联合仿真实践。通过环境配置、PX4仿真环境搭建、自定义消息生成、Simulink通信实现及实时优化等步骤,提供了完整的无人机位置控制案例,帮助开发者实现高精度的实时联合仿真。

red88的博客 204

Cadence IC618/Spectre231安装避坑指南:详解环境变量配置与License管理那些事儿

本文深入解析Cadence IC618/Spectre231安装过程中的环境变量配置与License管理难题,提供从变量冲突解决到高效License管理的实用方案。针对常见的64位标识冲突、路径污染及License服务器连接问题,给出具体诊断步骤和优化建议,帮助用户构建稳定可靠的EDA环境。

weixin_33737134的博客 616

hdu 4841 圆桌问题(STL vector)

Problem Description 圆桌上围坐着2n个人。其中n个人是好人,另外n个人是坏人。如果从第一个人开始数数,数到第m个人,则立即处死该人;然后从被处死的人之后开始数数,再将数到的第m个人处死……依此方法不断处死围坐在圆桌上的人。试问预先应如何安排这些好人与坏人的座位,能使得在处死n个人之后,圆桌上围坐的剩余的n个人全是好人。 Input 多组数据,每组数据...

dielucuan8830的博客 171

Gitee自动创建PR之——评审模式

一 创建PR的常规操作 本地更新主干(一般为master分支),基于主干新建一个分支并(如Dev分支)切换; 进行新的需求开发; 将这个分支推送到远端; 打开 Gitee ,进入创建 Pull Request 界面; 选定目标分支(及我们需要合并到主干分支的分支,一般即为我们的开发分支); 填写 Title 以及 Description; 点击提交 Pull Request。 二 更快的常见PR的方式— — 评审模式 现在 Gitee.

calm_encode的博客 2995

STL容器———hdu4841“圆桌问题“

题目: 圆桌上围坐着2n个人。其中n个人是好人,另外n个人是坏人。如果从第一个人开始数数,数到第m个人,则立即赶走该人;然后从被赶走的人之后开始数数,再将数到的第m个人赶走……依此方法不断赶走围坐在圆桌上的人。试问预先应如何安排这些好人与坏人的座位,能使得在赶走n个人之后,圆桌上围坐的剩余的n个人全是好人。 输出: 对于每一组数据,输出2n个大写字母,‘G’表示好人,‘B’表示坏人,50个字母为一行,不允许出现空白字符。相邻数据间留有一空行。 输入样例: 2 3 2 4 输出样例: GBBG

zjsru_Beginner的博客 171

BES2700的PMU

BES2700ZP-BES2700芯片的PMU架构分析摘要:本文档分析了BES2700芯片的电源管理单元(PMU)架构。实际应用中仅需为VBAT引脚供电,其余电源均由芯片内部PMU提供。文档包含架构示意图、问题列表和参考链接,涉及PMU工作原理、外部供电要求等关键技术点。待解决问题包括具体供电参数和内部电源转换机制等。通过添加日志信息和代码片段,为开发人员提供了调试PMU功能的实用方法。

云淡风轻 117

实战避坑:基恩士KV8000 PLC与C#上位机链路通讯全流程实现(含ST代码+上位机源码)

本文详细讲解了基恩士KV8000 PLC与C#上位机的TCP链路通讯实现,从PLC端的ST代码编写、通讯配置,到上位机的通讯类封装、界面实现,再到实战避坑和性能优化,提供了完整的可复用方案。该方案已在实际产线项目中验证,支持实时数据采集和控制指令下发,稳定性和可靠性满足工业场景需求。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1176

HDU4841 圆桌问题【约瑟夫环+模拟+STL】

圆桌问题 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Total Submission(s): 6757 Accepted Submission(s): 2550 Problem Description 圆桌上围坐着2n个人。其中n个人是好人,另外n个人是坏人。如果从第...

海岛Blog 1112

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

HDU-4841 圆桌问题 STL模拟约瑟夫问题

中文题,题意一看就是卧槽,这不约瑟夫么,然后脑子一抽就用了链表写,然后果然T了,最后用Vector模拟的约瑟夫问题。 #include #include #include #include #include #include #include #include #define LL __int64 using namespace std; int n,m; vectorp; in

聂小白的专栏 1401

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【STL容器vector+模拟+输入输出格式】HDU-4841 圆桌问题

注解 1、用vector容器来模拟。 2、模拟的过程:先从0到2n-1编号,然后每次把第m个消除(erase方法)。再遍历一遍整个容器,根据容器中剩下的编号,确定每个人是好人还是坏人。 3、注意输入和输出格式。 代码 #include <iostream> #include <vector> using namespace std; int main() { ...

zhanggirlzhangboy的博客 244

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

hdu 4841 圆桌问题

hdu 4841 圆桌问题 Lable:STL,约瑟夫环 源代码: #include<iostream> #include<vector> using namespace std; int main() { vector<int> table; int n, m; while (cin >> n >> m) { table.clear();//清空桌子,测试下一个案例 for (int i = 0; i < 2 * n; i++

weixin_45730130的博客 284

2021-02-07

学习 本周的书到了,也过了科目三后天科目四 学习STL 一。 1.STL的容器 STL的容器包括顺序式容器和关联式容器 2.顺序式容器有 动态数组,双链表,双向队列,队列,优先队列,栈; 3.关联式容器 集合,快速查找,一对一映射,一对多映射 二。 vector的学习 解释一种动态的数组,相比于数组可以中间任意的插和删除。 常见的使用 vector<int >a(100,6) 就是100个6 vector<int>b(a); 声明并用向量a初始化向量b 常见的函数 1。中间插入

m0_50493394的博客 132

hdu4841

hdu4841 圆桌问题 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Total Submission(s): 8347 Accepted Submission(s): 2995 Problem Description 圆桌上围坐着2n个人。其中n个人是好人,另外n个人是坏人。如果从第一个人开始数数,数到第m个人,则立即处死该人;然后从被处死的人之后开始数数,再将数到的第m个人处

u012421101的博客 356

Java算法_Vector类——HDU 4841:圆桌问题

Java算法Vetor类的介绍和HDU-4841:圆桌问题的解析

hhhyixin的博客 328
上一篇: csu1006:SAW
下一篇: csuoj1023修路( )
T__TSZ
博客等级 码龄10年 2粉丝 70原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值