2020安徽程序设计省赛 G序列游戏

有一个序列w,初始为空。再给出一个长度为m 单调递增的序列a。你需要对序列w 作如下n 次操作:

(1)操作0,在序列尾部添加数字0。

(2)操作1,在序列尾部添加数字1.

(3) 操作-1,删除序列w 中,所有位于位置ai 的数(1<=i<=m)。比如a={1,3,5},就将w 中第1,3,5 个数删除。若ai>w 的当前长度,则该操作停止。输出n 次操作后的序列w。

解题思路:

该题根据题目描述,可以直接定义三个操作对应的函数处理用户输入即可。

具体解法:

首先从题目的条件入手,让用户输入两个整数n和m,然后输入m个整数作为序列a,后面有n行整数分别代表不同的操作。

使用STL向量容器存储w和a序列。0和1操作可直接使用库函数push_back进行序列值的添加,定义deleteSequence函数执行从序列w中删除a序列值对应位置的元素,在删除前进行合法性判断。执行完操作后的w序列即为答案。

#include <iostream>
#include <vector> using namespace std; void printSequence(const vector<int>& a)
{
for(auto it : a)
{
cout << it;
}
cout << endl;
} void deleteSequence(vector<int>& w, const vector<int>& a)
{
bool flag = false;
for(auto it : a)
{
if(it <= w.size())
{
int n = it;
if(flag)
{
n--;
}
w.erase(w.begin() + (n - 1));
flag = true;
}
else
{
flag = false;
}
}
} int main()
{
vector<int> w, a;
int n, m, op, temp;
cin >> n;
cin >> m;
for(int i = 0; i < m; i++)
{
cin >> temp;
a.push_back(temp);
} while(n > 0)
{
cin >> op;
switch(op)
{
case 0:
w.push_back(0);
break;
case 1:
w.push_back(1);
break;
case -1:
deleteSequence(w, a);
break;
default:
cout << "输入有误,请重新输入(0, 1, -1)!" << endl;
continue;
}
n--;
} if(w.empty())
{
cout << "Poor stack!" << endl;
return 0;
} printSequence(w); return 0;
}

2020安徽程序设计省赛 G序列游戏的更多相关文章

  1. PTA|团体程序设计天梯赛-练习题目题解锦集(C/C++)(持续更新中……)

    PTA|团体程序设计天梯赛-练习题目题解锦集(持续更新中) 实现语言:C/C++:      欢迎各位看官交流讨论.指导题解错误:或者分享更快的方法!! 题目链接:https://pintia.cn/ ...

  2. 团体程序设计天梯赛(CCCC) L3019 代码排版 方法与编译原理密切相关,只有一个测试点段错误

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code

  3. 团体程序设计天梯赛(CCCC) L3009 长城 方法证明

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code

  4. 树状数组+二分答案查询第k大的数 (团体程序设计天梯赛 L3-002. 堆栈)

    前提是数的范围较小 1 数据范围:O(n) 2 查第k大的数i:log(n)(树状数组查询小于等于i的数目)*log(n)(二分找到i) 3 添加:log(n) (树状数组) 4 删除:log(n) ...

  5. 2016湖南省赛----G - Parenthesis (括号匹配)

    2016湖南省赛----G - Parenthesis (括号匹配)   Bobo has a balanced parenthesis sequence P=p 1 p 2…p n of lengt ...

  6. 2016年省赛 G Triple Nim

    2016年省赛 G Triple Nimnim游戏,要求开始局面为先手必败,也就是异或和为0.如果n为奇数,二进制下最后一位只有两种可能1,1,1和1,0,0,显然异或和为1,所以方案数为0如果n为偶 ...

  7. 团体程序设计天梯赛(CCCC) L3021 神坛 的一些错误做法(目前网上的方法没一个是对的) 和 一些想法

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code

  8. 团体程序设计天梯赛(CCCC) L3015 球队“食物链” 状态压缩

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code #include <cstdio> #include ...

  9. 团体程序设计天梯赛(CCCC) L3014 周游世界 BFS证明

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code

随机推荐

  1. PyQt(Python+Qt)学习随笔:QListWidget的currentRow属性

    QListWidget的currentRow属性保存当前项的位置,为整型,从0开始计数,在某些选择模式下,当前项可能也是选中项. currentRow属性可以通过方法currentRow().setC ...

  2. 深入浅出让你理解什么是LLVM

    什么是LLVM 转载自https://www.jianshu.com/p/1367dad95445 LLVM项目是模块化.可重用的编译器以及工具链技术的集合. 美国计算机协会 (ACM) 将其2012 ...

  3. POJ_1961

    Period Time Limit: 3000MS   Memory Limit: 30000K Total Submissions: 19817   Accepted: 9640 Descripti ...

  4. Linux 服务分类

    一,服务分类 1,服务简介与分类 1,服务的分类 启动与自启动 1,服务启动:就是在当前系统中让服务运行,并提供功能 2,服务自启动:自启动是指让服务在系统开机或重启动之后,随着系统的启动而自动启动的 ...

  5. C#软件性能优化

    C#软件性能优化 1.    性能 衡量一个软件系统性能的常见指标有:响应时间.负载.资源使用率.并发数.在软件中有具体的提高性能需求时,我们需分析该系统性能的影响由哪些因素组成,再针对各部分进行性能 ...

  6. 自定义3D地图

    基于echarts的3D地图进行,直接将这代码粘贴到echarts的demo中即可呈现效果 var mygeo = { // 标准的geojson格式 "type": " ...

  7. DBeaver连接MySQ报错

    遇错情况:第一次使用DBaver连接MySQL遇到以下问题: 报错信息:Public Key Retrieval is not allowed 截图如下: 解决方案步骤: 一.已有连接的情况:F4或者 ...

  8. STL—— 容器(vector)begin() 与 rbegin() , end() 与 rend()

    1. Vector 迭代器首地址与尾地址 begin() 和 end() 在代码中可以将迭代器用作参数的位置可以使用  begin() 和 end() 获取地址,如下代码: 1 #include &l ...

  9. tomcat中配置jndi数据库源

    tomcat添加依赖 lib目录下添加依赖mysql-connector-java-8.0.16 配置数据源 介绍两种方法:tomcat中配置或web应用中配置 tomcat/conf/context ...

  10. jQuery的事件机制和其他知识

    jQuery 设置宽度和高度 宽度操作: $(selector).height(); //不带参数表示获取高度 $(selector).height(200); //带参数表示设置高度   宽度操作: ...