今天天气确实很好!

接下来是圆桌问题,顺便做个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的更多相关文章

  1. hdu4841 圆桌问题[STL vector]

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

  2. 圆桌问题(hdu4841)

    圆桌问题 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total Submi ...

随机推荐

  1. C# 如何写 DEBUG 输出

    本文来告诉大家一个规范,如何去写 DEBUG 的输出. 经常在代码中,需要使用 DEBUG 来输出一些奇怪的东西来进行测试.但是输出的窗口只有一个,如果有一个逗比在不停输出,那么就会让输出窗口看不到自 ...

  2. javascript中的offsetWidth、clientWidth、innerWidth及相关属性方法

    * offsetWidth 水平方向 width + 左右padding + 左右border-width * offsetHeight 垂直方向 height + 上下padding + 上下bor ...

  3. jQuery验证码发送时间秒递减(刷新存储cookie)

    <input id="sendEmail" type="button" name="sendEmail" onclick=" ...

  4. [luogu1908]逆序对(upper_bound)

    对于给定的一段正整数序列,逆序对就是序列中ai>aj且i<j的有序对 用upper_bound法求逆序对,Code很棒 据说有用树状数组和线段树写逆序对的,这里用upper_bound水一 ...

  5. kafka性能测试代码

    bin/kafka-producer-perf-test.sh --num-records 5000000 --record-size 5000 \ --topic kafkatopic2 \ --b ...

  6. python 处理xml文件

    需求 在实际应用中,需要对xml配置文件进行实时修改, 1.增加.删除 某些节点 2.增加,删除,修改某个节点下的某些属性 3.增加,删除,修改某些节点的文本 <annotation> & ...

  7. 第二阶段:2.商业需求分析及BRD:4.产品需求分析总结

    产品的需求筛选 战略定位要考虑公司的战略问题.产品定位要分阶段,各个阶段的需求不同. 其实现在需求分析跟筛选都是非常快的. 不把需要当成需求,意思就是不要用户说需要什么就是什么,用户需要引导. 先分类 ...

  8. windows10 powershell上切换至cmd

    前言 在windows10 上是遇到了坑,因为出现了这样的情况!不要说什么盗版,公司买的正版呢. 上图是powershell,下图是 cmd,然后我同样使用powershell 与 cmd,查询nod ...

  9. mysqldump主从复制

    一,主从复制条件 1,开启binlog功能2,主库建立同步账号3,从库配置master.info(change mast..)4,start slave复制开关知识点:####1,  3个线程,主库i ...

  10. Spring的BeanPostProcessor后置处理器与bean的生命周期

    前言 本文将把Spring在Bean的生命周期中涉及到的后置处理器一一梳理出来,并简要说一下功能,至于每个后置处理器在实际扩展中的用处,还要后续慢慢探索总结. 正文 下面一步步跟进探寻那些后置处理器们 ...