只是贴代码,这种模拟题一定要好好纪念下 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. tabIndex-bootstrap中Get到的

    网页键盘的无障碍访问性 其实加了这个,可以控制Tab键切换的顺序,聚焦等 这个属性,任何标签都可以添加,没有兼容性限制,属性值的范围:0-32767 当一个元素设置tabindex属性值为-1的时候, ...

  2. (转载)Android自定义ProgressDialog进度等待框

    Android自定义ProgressDialog进度等待框 作者:无缘公子 字体:[增加 减小] 类型:转载 时间:2016-01-11我要评论 这篇文章主要介绍了Android自定义Progress ...

  3. swift语言点评十九-类型转化与检查

    1.oc比较: -(BOOL) isKindOfClass: classObj判断是否是这个类或者这个类的子类的实例 -(BOOL) isMemberOfClass: classObj 判断是否是这个 ...

  4. vue 事件参数传$event打印当前组件

    <template> <div class="hello"> <button v-on:click.once="getinfo($event ...

  5. Linux下重启mysql数据库的方法

    原文地址:Linux下重启mysql数据库的方法作者:于士博的视频教程 方法一: 命令: [root@localhost /]# /etc/init.d/mysql   start|stop|rest ...

  6. 3D ShapeNets: A Deep Representation for Volumetric Shapes 代码遇到的问题

    遇到 Error using polygon2voxel_double Requested 515396075640x140711718551672x140719189273184 (17179869 ...

  7. worldcount

    码云项目地址 PSP2.1 PSP阶段 预估耗时 (分钟) 实际耗时 (分钟) Planning 计划 20 20 Estimate 估计这个任务需要多少时间 60 70 Development 开发 ...

  8. c traps and pitfalls reading notes(2)

    1.运算符优先级,这个我是肯定记不住,每次遇到的时候都纠结下,然后去查下,或者直接括号,但是括号太多,你懂得,要用notepad才能理清各种层次.这里啦个下来,留着参考.

  9. 教你用webpack搭一个vue脚手架[超详细讲解和注释!]

    1.适用人群 1.对webpack知识有一定了解但不熟悉的同学. 2.女同学!!!(233333....) 2.目的 在自己对webpack有进一步了解的同时,也希望能帮到一些刚接触webpack的同 ...

  10. linux进程管理之进程创建(三)

    在linux系统中,许多进程在诞生之初都与其父进程共同用一个存储空间.但是子进程又可以建立自己的存储空间,并与父进程“分道扬镳”,成为与父进程一样真正意义上的进程. linux系统运行的第一个进程是在 ...