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. ...
随机推荐
- 51nod 1096 距离之和最小 思维题,求中位数
题目: 在一条直线上,与两个点距离之和最小的点,是怎样的点? 很容易想到,所求的点在这两个已知点的中间,因为两点之间距离最短. 在一条直线上,与三个点距离之和最小的点,是怎样的点? 由两个点的规律,我 ...
- swift语言点评八-枚举
总结:swift中的枚举可以看作变量可以作为case匹配参数的类 Enumerations 枚举的作用:状态列举与匹配 枚举值与类型 If a value (known as a “raw” valu ...
- AJAX和JSON实际应用
实现功能:登录验证 一.因为我是在SpringMVC框架上写的,首先得添加依赖: <dependencies> <!-- 用来测试的依赖 --> <dependency& ...
- [细节版]Let'sEncrypt 免费通配符/泛域名SSL证书添加使用教程
参考网址:https://lnmp.org/faq/letsencrypt-wildcard-ssl.html 使用的dns服务商:阿里云 , 更多服务商地址可见参考网址. 遇见的问题一. [Sat ...
- luogu P3414 SAC#1 - 组合数(组合数学)
题意 求sigma(C(n,i))其中C是组合数(即C(n,i)表示n个物品无顺序选取i个的方案数),i取从0到n所有偶数. 由于答案可能很大,请输出答案对6662333的余数. (n<=101 ...
- 微信小程序踩坑记
1:微信小程序之去掉横向滑动滚动条 /** 去除横向滚动条 */ ::-webkit-scrollbar { width: 0; height: 0; color: transparent; } 2: ...
- "duplicate symbol for architecture i386" 解决的方法
我在写项目的过程中,碰到了这个错误,我在网上查了一下,发现这个错误的原因是,project里面有反复的类. 解决方式:找到反复的类,然后删除掉就好了. 分析一下, 如图. 能够看出, 错误类型是 du ...
- Caused by: java.lang.ClassNotFoundException: com.njupt.libgdxbase.MainActivity
在使用libgdx来开发游戏时.假设遇到这样的问题.非常可能是由于你没有在libgdx的项目中导入Android的现骨干jar包导致的. 解决方法例如以下: 右击项目---"build pa ...
- django 笔记17 ModelForm
Model 数据库操作 验证 验证 Form -class LoginForm(Form): email = fields.EmailField() is_valid 每一个字段进行正则(字段内置正则 ...
- 从Git里拉取远程的所有分支
从Git里拉取远程的所有分支 git branch -r | grep -v '\->' | while read remote; do git branch --track "${r ...