hdu4841
今天天气确实很好!
接下来是圆桌问题,顺便做个vector容器的笔记方便以后复习。嘿嘿
Problem Description
圆桌上围坐着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
#include <iostream>
#include <vector>
#include <list>
using namespace std;
vector<int> vec;
int main()
{
int n,m;
while(cin>>n>>m){
int pos=0,i;//pos查询坏人下标
for(i=0;i<2*n;i++){
vec.push_back(i);
}
//用resize后,无法记录好人坏人下标,需再次赋值
for(i=0;i<n;i++){
pos=(pos+m-1)%vec.size();//每次的人数不同,
vec.erase(vec.begin()+pos);//里面放迭代器
}
int j=0;
for(i=0;i<2*n;i++){
if(!(i%50)&&i)cout << '\n';
if(vec[j]==i&&j<vec.size()){
j++;
cout << 'G';
}
else cout << 'B';
}
vec.clear();//vec清空
cout << "\n\n";
}
return 0;
}
/*
#include <iostream>
#include <vector>
#include <algorithm> //for_each
#include <ctime>
using namespace std;
void STRConstructor() //初始化,输入
{
vector<int> vec(5,12);
//cout << vec << endl; 错误
vector<int> vec1(5);
for(int i=0;i<5;i++)
cout << vec1[i] << endl;
vector<int> vec3(vec); //vector<char>就不行,<>中间必须相同
//cout << vec3 << endl; 错误
vector<int>::iterator ite=vec3.begin();
vector<int>::iterator ite1=vec3.end();
vector<int> vec4(ite,ite1);
//cout << vec4 << endl; 错误
for(int i=0;i<3;i++)
cout << vec4[i] << endl;
}
void strcapacity()
{
vector<int>vec(3);
vector<int>vec2();
//cout << vec.empty() << '\n' << vec2.empty() << endl; //报错?
vec.reserve(10);
cout << vec.size() << vec.capacity() << endl;
vec.resize(2); //重新设置元素个数
cout << vec.size() << vec.capacity() << endl;
//vector<int> vec1(5);
//vec1.push_back(1);
//vec1.push_back(1); //不同编译器,效果不同 vs现有容量的一半
//cout << vec1.capacity() << endl;
//重新申请空间会使迭代器失效0
}
void fun(int i) //不能用模板
{
cout << i << ' ';
}
void output() //输出
{
vector<int>vec;
for(int i=0;i<10;i++)
{
vec.push_back(i);
cout << vec[i] << vec.at(i) <<endl;
}
cout << vec.back() << endl;
vector<int>::iterator ite=vec.begin();
for(;ite!=vec.end();ite++)
{
cout << *ite << endl;
}
for_each(vec.begin(),vec.end(),fun);
}
void operation() //操作函数
{
vector<int>vec;
vector<int>vec1(5,5);
for(int i=0;i<10;i++)
{
vec.push_back(i); //尾添加
}
//vec.insert(vec.begin()+3,12);
//vec.insert(vec.begin()+2,3,3);
//vec.insert(vec.begin()+3,vec1.begin(),vec1.begin()+2);
vec.pop_back(); //尾删除
//vec.erase(vec.begin()+3);
//vec.erase(vec.begin()+3,vec.end());
//vec.swap(vec1,vec);
cout << (vec<vec1) << endl;
for_each(vec.begin(),vec.end(),fun);
}
void algorithm() //需要头文件include<algorithm>
{
vector<int>vec;
vector<int>vec1(5,5);
for(int i=0;i<10;i++)
{
vec.push_back(10-i); //尾添加
}
for_each(vec.begin(),vec.end(),fun);
sort(vec.begin(),vec.end());
for_each(vec.begin(),vec.end(),fun);
sort(vec.begin(),vec.end(),greater<int>()); //include<functional>
for_each(vec.begin(),vec.end(),fun);
}
void supplement() //补充
{
vector<int>vec;
for(int i=0;i<10;i++)
{
vec.push_back(i);
}
vector<int>vec1(8,14);
//vec.assign(vec1.begin(),vec1.end()); //清除以前的,从新赋值
//vec.assign(3,0); //清除以前的,从新赋值
//vec.clear();
srand((unsigned int)time(0)); //真正的随机
random_shuffle(vec.begin(),vec.end()); //随机乱序
for_each(vec.begin(),vec.end(),fun);
cout << endl;
random_shuffle(vec.begin(),vec.end());
for_each(vec.begin(),vec.end(),fun);
cout << endl;
}
int main()
{
//vector<int> vec;
//STRConstructor();
//strcapacity();
//output();
operation();
//algorithm();
//supplement();
return 0;
}
*/
hdu4841的更多相关文章
- hdu4841 圆桌问题[STL vector]
目录 题目地址 题干 代码和解释 参考 题目地址 hdu4841 题干 代码和解释 解本题时使用了刚学的STL vector,注意hdu不支持万能头文件#include<bits/stdc++. ...
- 圆桌问题(hdu4841)
圆桌问题 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Total Submi ...
随机推荐
- 2019QLU.ACM集训队暑假训练须知
1.每场比赛都要认认真真参与并及时记录: 2.每个队员必须做一个单独的博客页面存放自己队伍或者个人的比赛结果和补题计划: 3.比赛记录参考样式:[1]dny[2]ECNU 4.每场比赛结束都会安排一支 ...
- EJB版本
1999: ejb version 1.1 -- j2ee 1.22001: ejb version 2.0 -- j2ee 1.32003: ejb version 2.1 -- j2ee 1.42 ...
- JWT之登录、登出、验证码接口
6.2 验证码接口 验证码接口用于登录页面展示时,获取验证码图片地址及验证码标识 安装验证码功能组件(如果是官网下载的完整版框架,无需安装) composer require topthink/thi ...
- CodeForces - 617E XOR and Favorite Number (莫队+前缀和)
Bob has a favorite number k and ai of length n. Now he asks you to answer m queries. Each query is g ...
- 【u033】地震逃生
Time Limit: 1 second Memory Limit: 64 MB [问题描述] 汶川地震发生时,四川**中学正在上课,一看地震发生,老师们立刻带领x名学生逃跑,整个学校可以抽象地看成一 ...
- easypermissions拒绝权限后闪退。 java.lang.NoSuchMethodError: No virtual method isStateSaved()Z in class Landroid/support/v4/app/FragmentManager
Process: com.tazan.cd.streetlight, PID: 18825 java.lang.NoSuchMethodError: No virtual method isState ...
- HDU1166 敌兵布阵 BZOJ1012 最大数[树状数组]
一.前置知识-树状数组 树状数组(binary indexed tree)是一种简洁的代码量很小的数据结构,能够高效的处理前缀区间上的问题.在很多情况下能写树状数组解决的就不用码半天线段树了. 树状数 ...
- Struts2 控件标签
Struts 2 的标签有一组标签,更容易控制流程页面执行.以下是重要的Struts2控制标签列表: if /else 标签: 这些标签执行可在每一种语言找到的一种基本条件流程. 'If'标签可用于本 ...
- leetcode 1301. 最大得分的路径数目
地址 https://leetcode-cn.com/problems/number-of-paths-with-max-score/ 给你一个正方形字符数组 board ,你从数组最右下方的字符 ' ...
- 记录nfs的防火墙以及权限问题
在前面的一篇文章(https://www.cnblogs.com/zyxnhr/p/10660431.html)中,已经介绍了nfs的安装挂载使用,但是存在两个问题 一. 防火墙 在nfs和nfs的守 ...