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. ADB常用的命令

    ADB常用的命令: 1)adb devices---获取设备列表及设备状态 2)adb get-state---获取设备的状态 设备的状态有 3 钟,device.offline.unknown. d ...

  2. tornado 作业 简单首页 登录页 个人中心

    s4 index.py 1 import tornado.ioloop 2 import tornado.web 3 import time 4 5 6 class IndexHandler(torn ...

  3. vmvare workstation虚拟机连接外网

    在使用网上的yum源的时候,我们就需要我们的虚拟机能连接外网,在这里记录下配置vmvare workstation虚拟机连接外网的方法. 配置步骤: 1.打开主机的 "网络和Internet ...

  4. Windows 必备——cmder 一款比cmd牛逼的Win软件

    Windows 必备--cmder 一款比cmd牛逼的Win软件一款Windows环境下的命令行替换工具:cmder这款工具简洁美观易用,支持大部分的linux命令,支持ssh连接Linux,比起自带 ...

  5. AWT09-弹球小游戏

    1.补充 为了让Java绘制动画,可以借助Swing的定时器,其构造为: 方法名 说明 Timer(int delay,ActionListener listener) 每间隔delay毫秒,自动触发 ...

  6. SSO的通用标准OpenID Connect

    目录 简介 OpenID Connect是什么 ID Token 请求ID Token ID Token可以做什么 Open Connect认证码授权的例子 User Info 简介 OpenID C ...

  7. 手把手教你:将 ClickHouse 集群迁至云上

    前言 随着云上 ClickHouse 服务完善,越来越多的用户将自建 ClickHouse 服务迁移至云上.对于不同数据规模,我们选择不同的方案: 对于数据量比较小的表,通常小于10GB 情况下,可以 ...

  8. vue 事件基本用法

    事件基本用法 事件的函数都定义在VUE实例中的methods中,当然也可以直接写在元素内,但是这并不利于后期的维护,需要注意的是:在methods定义的函数内想要引用插值内容,需要使用this,不然就 ...

  9. 在Linux下下载RPM包

    在Linux下下载RPM包,但是不安装 在工作中经常会遇到离线安装RPM包的情况,下面是下载RPM包的方法 # 使用yum下载RPM包 yum -y install --downloadonly &l ...

  10. 为什么 HashMap 的容量大小要设置为2的N次方?

    原文链接:https://www.changxuan.top/?p=1208 前两天,我在一位同学提交中看到了下面这样的一行代码,让我很是惊讶. Map<String, String> t ...