只是贴代码,这种模拟题一定要好好纪念下 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. rem 、em

    介绍:rem是相对字体单位:根据html根元素大小而定,同样可作为宽高等单位: 适配原理:将px替换成rem,采用rem适配移动web的原理,根据不同屏幕宽度设置html的font-size的大小: ...

  2. MyBatis数据持久化(六)resultMap使用

    resultMap是MyBatis最强大也是最重要的特性,使用它我们可以將查询结果或者sql输入条件和一个HashMap的key进行映射,大大简化了sql查询条件的输入,而且使得数据的查询变得非常灵活 ...

  3. Android TextView加上阴影效果

    <TextView android:id="@+id/test_shadow" android:layout_width="wrap_content" a ...

  4. Java经典逻辑编程50题

    Java经典逻辑编程50题 2016-11-03 09:29:28      0个评论    来源:Alias_fa的博客    收藏   我要投稿 [程序1] 題目:古典问题:有一对兔子,从出生后第 ...

  5. 利用SQL索引提高查询速度

    1.合理使用索引 索引是数据库中重要的数据结构,它的根本目的就是为了提高查询效率.现在大多数的数据库产品都采用IBM最先提出的ISAM索引结构. 索引的使用要恰到好处,其使用原则如下: 在经常进行连接 ...

  6. HDU 5273 Dylans loves sequence【 树状数组 】

    题意:给出n个数,再给出q个询问,求L到R的逆序对的个数 先自己写的时候,是每次询问都重新插入来求sum(r)-sum(l) 果断T 后来还是看了别人的代码---- 预处理一下,把所有可能的区间的询问 ...

  7. Github上值得关注的前端项目-转自好友trigkit4

    http://microjs.com/# 该网站的资源都托管到了github,microjs.com是一个可以让你选择微型的js类库的网站,该网站里的js库都是压缩后不大于5KB的,非常实用 http ...

  8. BZOJ 2141 排队(CDQ分治)

    我们把每一次交换看做两个插入两个删除.然后就是一个三维偏序.时间一维,下标一维,权值一维. #include<iostream> #include<cstring> #incl ...

  9. linux 下的小知识

    Linux中有7种启动级别 运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆运行级别2:多用户状态(没有NFS ...

  10. nginx upstream

    nginx转发http和tcp http转发 upstream goforit_201 { server 172.168.10.10:201; } server { listen 201; serve ...