B. Silly Mistake Codeforces Round #600 (Div. 2)
题目大意:
首先定义有效的一天:
每一个不同的数字只能进去一次,出来一次,正数代表进去,负数代表出来
每一个人不能过夜
不合理:
一个数字只有进去,或者只有出来则是无效的
给你一个数组,让你把数字分成若干个有效天,不要求最大化这个天数,也不要求最小化这个天数,
问怎么划分,如果无法划分则输出-1
题目思路:
这个题目我觉得不是很简单,反正我写的比较吃力
首先我们要模拟这个进入和出去,则可以用一个bool数组,为真则是进去,为假则是出去。
其次我们要判断是不是同一天,用一个ptr来表示上一天的最后一天,一个last数组来表示上一对数的最后一天的位置,如果有两个数放在了同一天,则判断无法划分
再而我们要判断这一段划分出来的数组是不是一一对应,这个则有tot,tot+表示进去,tot-表示出去,如果tot==0 则表示划分出去的一段是一一对应的。
因为不要求划分天数尽量小,所以可以tot==0则划分一次,ptr相应进行改变。
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <queue>
#include <vector>
#include <string>
#include <algorithm>
#include <iostream>
#include <map>
#include <cmath>
#define inf 0x3f3f3f3f
#define inf64 0x3f3f3f3f3f3f3f3f
using namespace std;
typedef long long ll;
const int M=1e6;
const int maxn = 1e6 + ; bool in[maxn];
int last[maxn]; vector<int>ans; void fail(){
printf("-1\n");
exit();
}
//正负一对,以负的结尾
int main(){
int n,ptr=,tot=;//ptr记录上一次截断的位置,tot记录这个时候是否成对的出现
scanf("%d",&n);
for(int i=;i<=n;i++){
int x;
scanf("%d",&x);
if(x>){
if(in[x]) fail();//如果之前进入了,现在继续进入是不对的
if(last[x]>ptr) fail();//这个是判断上一对是否和这一对会在一天,如果ptr<last[x],则说明在同一天
in[x]=;//表示这个进入
tot++;//表示对数+1
}
else {
x=abs(x);
if(!in[x]) fail();//如果从未进入过,则不能出去
tot--;//合并
in[x]=;//表示已经出去
last[x]=i;//表示这一对的结束位置,便于后面ptr的判断
}
if(tot==){
ans.push_back(i-ptr);//这个题目不要求最少的天数,所以直接加上去就可以了
ptr=i;//ptr更新
}
}
if(tot>) fail();
printf("%d\n",ans.size()*);
for(int i=;i<ans.size();i++) printf("%d ",ans[i]);
printf("\n");
return ;
}
B. Silly Mistake Codeforces Round #600 (Div. 2)的更多相关文章
- 【cf比赛记录】Codeforces Round #600 (Div. 2)
Codeforces Round #600 (Div. 2) ---- 比赛传送门 昨晚成绩还好,AC A,B题,还能上分(到底有多菜) 补了C.D题,因为昨晚对C.D题已经有想法了,所以补起题来也快 ...
- Codeforces Round #600 (Div. 2) E. Antenna Coverage
Codeforces Round #600 (Div. 2) E. Antenna Coverage(dp) 题目链接 题意: m个Antenna,每个Antenna的位置是\(x_i\),分数是\( ...
- Codeforces Round #600 (Div. 2)
传送门 A. Single Push 直接乱搞即可. Code /* * Author: heyuhhh * Created Time: 2019/11/16 22:36:20 */ #include ...
- Codeforces Round #600 (Div. 2) B. Silly Mistake
#include<iostream> #include<map> #include<set> #include<algorithm> using nam ...
- Codeforces Round #600 (Div. 2) - B. Silly Mistake(模拟)
题意:有一个公司,每天有员工进出,$a[i]>0$时表示$a[i]$这个员工进入公司,$a[i]<0$时表示$-a[i]$这个员工出公司,公司对进出办公室有一些严格的规定 员工每天最多只能 ...
- Codeforces Round #600 (Div. 2)E F
题:https://codeforces.com/contest/1253/problem/E 题意:给定n个信号源,俩个参数x和s,x代表这个信号源的位置,s代表这个信号源的波及长度,即这个信号源可 ...
- Codeforces Round #600 (Div. 2) D题【并查集+思维】
题意:给你n个点,m条边,然后让你使得这个这个图成为一个协和图,需要加几条边.协和图就是,如果两个点之间有一条边,那么左端点与这之间任意一个点之间都要有条边. 思路:通过并查集不断维护连通量的最大编号 ...
- Codeforces Round #600 (Div. 2) D。 Harmonious Graph
#include<iostream> using namespace std ; ; int p[N]; int cnt; int find(int x) { if(p[x]!=x) p[ ...
- Codeforces Round #600 (Div. 2) C - Sweets Eating
#include<iostream> #include<algorithm> #include<cstring> using namespace std ; typ ...
随机推荐
- 【图解】你还在为 TCP 重传、滑动窗口、流量控制、拥塞控制发愁吗?看完图解就不愁了
每日一句英语学习,每天进步一点点: 前言 前一篇「硬不硬你说了算!近 40 张图解被问千百遍的 TCP 三次握手和四次挥手面试题」得到了很多读者的认可,在此特别感谢你们的认可,大家都暖暖的. 来了,今 ...
- 【DataBase】更改root根用户密码 和 SQLyog安装
更改root根用户密码 和 SQLyog安装 无密码登录MySQL mysql -u root -p 修改密码与更新加密规则 ALTER USER 'root'@'localhost' IDENTIF ...
- 怎么自定义DataGridViewColumn(日期列,C#)
参考:https://msdn.microsoft.com/en-us/library/7tas5c80.aspx 未解决的问题:如果日期要设置为null,怎么办? DataGridView控件提供了 ...
- Golang——详解Go语言代码规范
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是Golang专题的第二篇,我们来看看Go的语言规范. 在我们继续今天的内容之前,先来回答一个问题. 有同学在后台问我,为什么说Gola ...
- 爬虫的新手使用教程(python代理IP)
前言 Python爬虫要经历爬虫.爬虫被限制.爬虫反限制的过程.当然后续还要网页爬虫限制优化,爬虫再反限制的一系列道高一尺魔高一丈的过程.爬虫的初级阶段,添加headers和ip代理可以解决很多问题. ...
- ROM定制开发教程-Android adb命令用法与实例解析
一.什么是ADB Android Debug Bridge(adb)是一个命令行工具,可让您与模拟器或连接的Android设备进行通信.您可以在android sdk / platform-tools ...
- P1464 Function
Function 简 单 的 递 归 这道题一开始十分智障地用递归做,虽然知道没那么简单,但还是冒着送死的心态交了一遍,果然,如我所料 样例输入: 密密麻麻,几万行的样例输入 //:) ...
- vue2.x学习笔记(八)
接着前面的内容:https://www.cnblogs.com/yanggb/p/12577433.html. 列表渲染 vue提供了一个[v-for]指令用于列表渲染(循环). 用[v-for]指令 ...
- Springboot:定时任务处理(十三)
构建一个定时任务的service接口及实现(模拟) 接口:com\applesnt\springboot\service\TaskService.java package com.applesnt.s ...
- python 工具链 虚拟环境和包管理工具 pipenv
Pipenv is a tool that aims to bring the best of all packaging worlds (bundler, composer, npm, cargo, ...