只是贴代码,这种模拟题一定要好好纪念下 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 模拟题的更多相关文章

  1. CF - 420B - Online Meeting(思维)

    题意:n 个人參加线上会议.某经理记录了中间一段时间的 m 条上下线记录(1 ≤ n, m ≤ 105).+ 表示上线,- 表示下线. leader是指仅仅要有人在线,他都在线的人.求全部可能的lea ...

  2. cf 443 D. Teams Formation](细节模拟题)

    cf 443 D. Teams Formation(细节模拟题) 题意: 给出一个长为\(n\)的序列,重复\(m\)次形成一个新的序列,动态消除所有k个连续相同的数字,问最后会剩下多少个数(题目保证 ...

  3. poj 1008:Maya Calendar(模拟题,玛雅日历转换)

    Maya Calendar Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 64795   Accepted: 19978 D ...

  4. poj 1888 Crossword Answers 模拟题

    Crossword Answers Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 869   Accepted: 405 D ...

  5. CF 628B New Skateboard --- 水题

    CD 628B 题目大意:给定一个数字(<=3*10^5),判断其能被4整除的连续子串有多少个 解题思路:注意一个整除4的性质: 若bc能被4整除,则a1a2a3a4...anbc也一定能被4整 ...

  6. CF 628A --- Tennis Tournament --- 水题

    CF 628A 题目大意:给定n,b,p,其中n为进行比赛的人数,b为每场进行比赛的每一位运动员需要的水的数量, p为整个赛程提供给每位运动员的毛巾数量, 每次在剩余的n人数中,挑选2^k=m(m & ...

  7. CodeForces - 427B (模拟题)

    Prison Transfer Time Limit: 1000MS   Memory Limit: 262144KB   64bit IO Format: %I64d & %I64u Sub ...

  8. sdut 2162:The Android University ACM Team Selection Contest(第二届山东省省赛原题,模拟题)

    The Android University ACM Team Selection Contest Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里 ...

  9. 全国信息学奥林匹克联赛 ( NOIP2014) 复赛 模拟题 Day1 长乐一中

    题目名称 正确答案  序列问题 长途旅行 英文名称 answer sequence travel 输入文件名 answer.in sequence.in travel.in 输出文件名 answer. ...

随机推荐

  1. Python3基础笔记---序列化

    1.json模块   菜鸟教程 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写. import json json.dumps json ...

  2. 系统级脚本 rpcbind

    [root@web02 ~]# vim /etc/init.d/rpcbind #! /bin/sh # # rpcbind Start/Stop RPCbind # # chkconfig: 234 ...

  3. thinkphp 5.0整合phpsocketio完整攻略,绕坑

    使用环境: thinkphp5.0 项目需求 前端下单,后台接受,并立即做出提示.例如:美团外卖,客户端下单成功后,商家端就会立即有接单语音提示. 开发环境 thinkphp5.0 phpsocket ...

  4. UT源码+105032014018

    设计佣金问题的程序 commission方法是用来计算销售佣金的需求,手机配件的销售商,手机配件有耳机(headphone).手机壳(Mobile phone shell).手机贴膜(Cellphon ...

  5. Hadoop的datanode超时时间设置

    datanode进程死亡或者网络故障造成datanode无法与namenode通信, namenode不会立即把该节点判定为死亡,要经过一段时间,这段时间暂称作超时时长. HDFS默认的超时时长为10 ...

  6. Java基础学习总结(5)——多态

    一.面向对象最核心的机制--动态绑定,也叫多态 1.1.通过下面的例子理解动态绑定,即多态 package javastudy.summary; class Animal { /** * 声明一个私有 ...

  7. HDU 3046 Pleasant sheep and big big wolf

    Pleasant sheep and big big wolf Time Limit: 1000ms Memory Limit: 32768KB This problem will be judged ...

  8. 压缩和还原压缩的JS代码

    压缩JS代码:packer – 最好用的 javascript 压缩工具地址: http://dean.edwards.name/packer/ http://kan.willin.org/?page ...

  9. ETL-informatica进阶资料整理

    名称 资源 说明 Informatica全球客户支持网站 https://network.informatica.com/ Informatica全球客户支持网站Network,其前身为MySuppo ...

  10. deeplink技术的两篇资料

    两篇资料如下: https://zhuanlan.zhihu.com/p/20694818?refer=ouyangchen http://www.sohu.com/a/122694049_49134 ...