hdu4841 圆桌问题[STL vector]
题目地址
题干

代码和解释
解本题时使用了刚学的STL vector,注意hdu不支持万能头文件#include<bits/stdc++.h>,所以要记得使用#include<vector>。
这里是c++代码。
#include<iostream>
#include<vector>
using namespace std;
int main()
{
int n,m;
int i,j;
int pos;
vector<int> start;
while(~scanf("%d%d",&n,&m)){
start.clear();
//初始化
for(i=0;i<2*n;i++){
start.push_back(i);
/*数组每个元素存储自己的位置,
这样即使删掉了元素后,Good guy的初始位置这个信息还能保留*/
}
pos = 0;
//删除坏人
for(i=0;i<n;i++){//一共n个坏人
pos=(pos+m-1)%start.size();
//因为是环形的,所以位置取模
//因为把本身当做1来数,数到第m个,所以要减去1
//2printf("%d\n",pos);
start.erase(start.begin()+pos);
}
j=0;
//输出结果
for(i=0;i<2*n;i++){
if(i==start[j]&&j<n){
//注意这里一定要写&&j<n,因为这个问题一直wa。
//因为start的size已经为n了,当j超出这个size后必然会出错
//start里存储了Good guy的位置,共n个Good guy
printf("G");
j++;
}
else{
printf("B");
}
if(i!=0&&(i+1)%50==0){
//一行有50个字母
//注意这里不能写成i%49==0,不然差的越来越多
printf("\n");
}
}
//相邻数据间留1空行
if(n%50!=0){
printf("\n");
}
printf("\n");
}
return 0;
}
}
本题的两个思考点是:
1.环形桌子,到末尾又回到开头。使用取模来实现。
2.如何在删除了坏人元素后保留好人位置的信息。一开始将位置信息存入数组中来实现。
本题的输出格式也比较苛刻,要注意换行的数量。
每行输出50个字母:

参考
| 功能 | 例子 | 说明 |
|---|---|---|
| 定义int型数组 | vector a; | 默认初始化,a为空 |
| vector b(a); | 用a定义b | |
| vector a(100); | a有100个值为0的元素 | |
| vector a(100,6); | 100个值为6的元素 | |
| 定义string型数组 | vector a(10,"null"); | 100个值为6的元素 |
| vector vec(10,"hello"); | 10个值为hello的元素 | |
| vector b(a.begin().a.end()); | b是a的复制 | |
| 定义结构型数组 | struct point{int x,y;} vector a; |
a用来存坐标 |
| 功能 | 例子 | 说明 |
|---|---|---|
| 赋值 | a.push_back(100); | 在尾部添加元素 |
| 元素个数 | int size = a.size(); | 元素个数 |
| 是否为空 | bool isEmpty = a.empty(); | 判断是否为空 |
| 打印 | cout<<a[0]<<endl; | 打印第一个元素 |
| 中间插入 | a.insert(a.begin()+i,k); | 在第i个元素前面插入k |
| 尾部插入 | a.push_back(8); | 尾部插入值为8的元素 |
| 尾部插入 | a.insert(a.end(),10,5); | 尾部插入10个值为5的元素 |
| 删除尾部 | a.pop_back(); | 删除末尾元素 |
| 删除区间 | a.erase(a.begin()+i,a.begin()+j); | 删除区间[i,j-1]的元素 |
| 删除元素 | a.erase(a.begin()+2); | 删除第3个元素 |
| 调整大小 | a.resize(n) | 数组大小变为n |
| 清空 | a.clear(); | |
| 翻转 | reverse(a.begin(),a.end()); | 用函数reverse翻转数组 |
| 排序 | sort(a.begin(),a.end()); | 用函数sort排序,从小到大 |
hdu4841 圆桌问题[STL vector]的更多相关文章
- C++ STL vector容器学习
STL(Standard Template Library)标准模板库是C++最重要的组成部分,它提供了一组表示容器.迭代器.函数对象和算法的模板.其中容器是存储类型相同的数据的结构(如vector, ...
- STL vector
STL vector vector是线性容器,它的元素严格的按照线性序列排序,和动态数组很相似,和数组一样,它的元素存储在一块连续的存储空间中,这也意味着我们不仅可以使用迭代器(iterator)访问 ...
- STL vector用法介绍
STL vector用法介绍 介绍 这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作.本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if()和f ...
- STL vector+sort排序和multiset/multimap排序比较
由 www.169it.com 搜集整理 在C++的STL库中,要实现排序可以通过将所有元素保存到vector中,然后通过sort算法来排序,也可以通过multimap实现在插入元素的时候进行排序.在 ...
- STL vector 用法介绍
介绍 这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作.本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if()和for_each()中的使用.通 ...
- STL vector使用方法介绍
介绍 这篇文章的目的是为了介绍std::vector,怎样恰当地使用它们的成员函数等操作.本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if()和for_each()中的使用.通 ...
- stl——vector详解
stl——vector详解 stl——vector是应用最广泛的一种容器,类似于array,都将数据存储于连续空间中,支持随机访问.相对于array,vector对空间应用十分方便.高效,迭代器使ve ...
- C++STL vector详解(杂谈)
介绍 这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作.本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if()和for_each()中的使用.通 ...
- C++ stl vector介绍
转自: STL vector用法介绍 介绍 这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作.本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if ...
随机推荐
- nginx服务器除了更目录可以访问,其他都出现404
配置如下: listen 80; server_name www.hongtaofei.com; location / { root /home/www/shop/public; index inde ...
- day 01 预科
目录 作业 二,Markdown基本语法 一级标题 二级标题 三级标题 作业 二,Markdown基本语法 标题 一级标题 二级标题 三级标题 四级标题 加粗 哦,更粗了 斜体 咦,我歪了 高亮 == ...
- Ubuntu16.04 网络配置
Ubuntu 网络配置 安装Ubuntu操作系统之后,为了通过Xshell连接主机,或者连接其他主机.需要进行如下网络配置和ssh服务配置. 1 网络配置 1.1 修改网络配置信息 sudo vi / ...
- 【HCIA Gauss】学习汇总-数据库管理(SQL语法 数据类型 函数)-4
DDL data definition language 数据库定义语言 定义修改等DML data manipulation language 数据库操控语言 增删改 DCL data crontr ...
- git及github使用
1.git安装 widows: 可以去git官网下载安装 ubantu : 使用命令 sudo apt-get install git 进行安装 2.git启动 widows: 首先去到需要建立git ...
- Windows定时任务下载linux服务器批量文件到本地
编写批文件 1.1 编写main.bat文件 E: cd logs ftp -n -s:"E:\logs\mget.bat" 1.2 编写mget.bat文件 open ip地址 ...
- CVE-2019-0708:RDP终极EXP复现
0x00 前言 每次复现都会遇到各种各样的问题,这次也不例外,经过多次尝试才复现成功,因此把可能的解决方法也和大家分享一下,有想要一起复现学习/投稿的可以联系我哈 0x01 影响版本 Windows ...
- 个人第5次作业-Alpha2项目的测试
这个作业属于哪个课程 系统分析与设计 这个作业要求在哪里 作业要求 团队名称 卓越Code 这个作业的目标 选取3个非自己所在团队进行项目测试,协助该团队进行项目改进 前言 魏家田 201731062 ...
- $().on()的知识点
事件冒泡阶段:事件从事件目标(target)开始,往上冒泡直到页面的最上一级标签. 假设一个元素div,它有一个下级元素p.<div> <p>元素</p></ ...
- AtCoder Beginner Contest 126 解题报告
突然6道题.有点慌.比赛写了五个.罚时爆炸.最后一个时间不太够+没敢写就放弃了. 两道题奇奇怪怪的WJ和20/20.今天的评测机是怎么了. A Changing a Character #includ ...