CF 420B Online Meeting 模拟题
只是贴代码,这种模拟题一定要好好纪念下 TAT
#include <cstdio>
#include <cstring>
#include <algorithm> using namespace std; const int MAXN = (int) 1e5+; bool is[MAXN];
int msg[MAXN]; int first_in[MAXN], last_in[MAXN], last_out[MAXN];
bool flag[MAXN];
bool in[MAXN];
char str[];
int n, m;
int st; void print() {
printf("st: %d, m:%d\n", st, m);
for (int i = ; i <= n; i++)
printf("%d ", first_in[i]); puts("");
for (int i = ; i <= n; i++)
printf("%d ", last_in[i]); puts("");
for (int i = ; i <= n; i++)
printf("%d ", last_out[i]); puts("");
for (int i = ; i <= n; i++)
printf("%d ", flag[i]); puts("");
} /**
我们可以分为如下几种情况:
1. 从来没出现过
2. 进入时,或者出去时有其他人
3. 进入时没人,但进来前其他人来过
4.
*/
int main() {
#ifdef Phantom01
freopen("C.txt", "r", stdin);
#endif // Phantom01 while (scanf("%d%d", &n, &m)!=EOF) {
st = ; //第一个人的进入时间
int cnt = ;
memset(first_in, -, sizeof(first_in));
memset(last_in, -, sizeof(last_in));
memset(last_out, -, sizeof(last_out)); //如果从没出去过,为-1
memset(flag, false, sizeof(flag));
memset(in, , sizeof(in));
int num = ;
for (int i = ; i <= m; i++) { //记录时间从1开始
int t;
scanf("%s%d", str, &t);
//没有考虑到最后一刻还有人的情况
if ('+'==str[]) {
is[i] = true;
if (-==first_in[t]) first_in[t] = i;
} else {
is[i] = false;
if (-==first_in[t]) {
first_in[t] = ;
num++;
st = ;
}
}
msg[i] = t;
}
//print();
for (int i = ; i <= m; i++) {
int t = msg[i];
if (is[i]) {
last_in[t] = i; //记录最近进入时间(好像没必要)
if (last_out[t]> && last_in[t]-last_out[t]>) { //如果上次出去的时间不是在前一个时刻,那么中间一定有人进来
if (!flag[t]) { //若果没被标记过,就标记他不符合情况
flag[t] = true;
cnt++;
}
}
num++;
} else {
last_out[t] = i;
num--;
if (num>) {
if (!flag[t]) {
flag[t] = true;
cnt++;
}
}
}
} for (int i = ; i <= n; i++) {
if (first_in[i]>st //如果首次进入时间在第一个进入之后,
|| ((last_out[i]>last_in[i]) //或者最后一次出去在
&& ((num > ) //里面还有人
|| (<last_out[i]&&last_out[i]<m )))) { //而且最后一次出去在最后一个人之前,一定不行
if (!flag[i]) {
flag[i] = true;
cnt++;
}
}
}
printf("%d\n", n-cnt);
bool flag2 = false;
for (int i = ; i <= n; i++) if (!flag[i]) {
if (flag2) printf(" ");
printf("%d", i);
flag2 = true;
}
if (flag2) puts("");
} return ;
}
CF 420B Online Meeting 模拟题的更多相关文章
- CF - 420B - Online Meeting(思维)
题意:n 个人參加线上会议.某经理记录了中间一段时间的 m 条上下线记录(1 ≤ n, m ≤ 105).+ 表示上线,- 表示下线. leader是指仅仅要有人在线,他都在线的人.求全部可能的lea ...
- cf 443 D. Teams Formation](细节模拟题)
cf 443 D. Teams Formation(细节模拟题) 题意: 给出一个长为\(n\)的序列,重复\(m\)次形成一个新的序列,动态消除所有k个连续相同的数字,问最后会剩下多少个数(题目保证 ...
- poj 1008:Maya Calendar(模拟题,玛雅日历转换)
Maya Calendar Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 64795 Accepted: 19978 D ...
- poj 1888 Crossword Answers 模拟题
Crossword Answers Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 869 Accepted: 405 D ...
- CF 628B New Skateboard --- 水题
CD 628B 题目大意:给定一个数字(<=3*10^5),判断其能被4整除的连续子串有多少个 解题思路:注意一个整除4的性质: 若bc能被4整除,则a1a2a3a4...anbc也一定能被4整 ...
- CF 628A --- Tennis Tournament --- 水题
CF 628A 题目大意:给定n,b,p,其中n为进行比赛的人数,b为每场进行比赛的每一位运动员需要的水的数量, p为整个赛程提供给每位运动员的毛巾数量, 每次在剩余的n人数中,挑选2^k=m(m & ...
- CodeForces - 427B (模拟题)
Prison Transfer Time Limit: 1000MS Memory Limit: 262144KB 64bit IO Format: %I64d & %I64u Sub ...
- sdut 2162:The Android University ACM Team Selection Contest(第二届山东省省赛原题,模拟题)
The Android University ACM Team Selection Contest Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里 ...
- 全国信息学奥林匹克联赛 ( NOIP2014) 复赛 模拟题 Day1 长乐一中
题目名称 正确答案 序列问题 长途旅行 英文名称 answer sequence travel 输入文件名 answer.in sequence.in travel.in 输出文件名 answer. ...
随机推荐
- CSS弹性盒模型flex概念
盒模型分为:标准w3c盒模型.IE盒模型.以及css中的伸缩盒模型. 先说CSS的伸缩盒模型:flex模型是CSS3引入的新的布局模型,是flexible box的缩写,一般称之为弹性盒模型.和CSS ...
- 你不知道的JavaScript(七)delete操作符
JS中的delete操作符不是太常用,容易被忽略,它的作用很简单,用来删除对象的属性或方法. <script type="text/javascript"> var p ...
- (转载) Android 带清除功能的输入框控件ClearEditText,仿IOS的输入框
Android 带清除功能的输入框控件ClearEditText,仿IOS的输入框 标签: Android清除功能EditText仿IOS的输入框 2013-09-04 17:33 70865人阅读 ...
- 乌班图 之 apt命令 及 VMware共享文件夹
apt是Advanced Packaging Tool ,是Ubuntu下的一个安装包管理工具 大部分软件的安装.更新.卸载 都是利用apt命令来实现 直接在终端输入apt即可查阅命令的帮助信息 常用 ...
- [BeiJing2006]狼抓兔子 dijkstra+平面图最小割
一眼裸的最大流求最小割,然而数据范围过大,跑不下来. 我们可以将平面图转成对偶图,并进行连边. 这样,每条边的长度就对应原图中的割边长度. 起点到终点的最短路即为最小割. 别用SPFA,会死的很惨 C ...
- json转换成Map
1.如果转换的是Map.或者是简单的对象 package com.gc.action; import java.util.Map; import net.sf.json.JSONObject; /** ...
- Hadoop-2.4.1 ubuntu集群安装配置教程
一.环境 系统: Ubuntu 14.04 32bit Hadoop版本: Hadoop 2.4.1 (stable) JDK版本: 1.7 集群数量:3台 注意事项:我们从Apache官方网站下载的 ...
- 【PRML学习笔记】第四章:分类的线性模型
一.基础概念 线性分类模型:决策面(decision boundary)是输入向量的线性函数 目标类别的表示"1 of K" :$ t = (0,1,0,0,0)^T$ 二.分类问 ...
- C指针思考-(1)
首先记录下时间吧,@2016-08-18 23:26:22,这段时间看了同事的3本经典的书,<c缺陷和陷阱>,<c和指针>和<c专家编程>,感觉指针说的最多,多多少 ...
- vue中使用viewerjs
项目创建 插件Viewer.js vue init webpack mytest001 安装viewerjs npm install viewerjs 删掉生成的项目里面的helloWord.vue ...