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. ...
随机推荐
- (转载)项目实战工具类(一):PhoneUtil(手机信息相关)
项目实战工具类(一):PhoneUtil(手机信息相关) 可以使用的功能: 1.获取手机系统版本号 2.获取手机型号 3.获取手机宽度 4.获取手机高度 5.获取手机imei串号 ,GSM手机的 ...
- RXjava的简介
API 介绍和原理简析 1. 概念:扩展的观察者模式 观察者模式面向的需求是:举一个例子,警察在小偷实施作案的时候实施抓捕,在这一个例子中警察是观察者,小偷是被观察者.但是程序的观察者模式和这个还是有 ...
- Matlab 从入门到精通 Chapter11 文件读取I/O
11.1 工作空间数据读取 将工作空间的变量保存为文件,可以使用save命令. save('filename') 将文件保存在当前目录下,文件名为filename.mat save('filenam ...
- [SDOI2008]沙拉公主的困惑 线性筛_欧拉函数_逆元_快速幂
Code: #include<cstdio> using namespace std; typedef long long ll; const int maxn=10000000+1; l ...
- (六)Redux进阶
1 UI组件与容器组件的拆分 UI组件(傻瓜组件):只负责页面显示,没有任何逻辑 容器组件(聪明组件):并不去管UI到底长成什么样,关注的是整个业务逻辑 2 无状态组件 一个普通的函数就是无状态组件 ...
- 关于 Error: No PostCSS Config found in 的错误
问题描述: 项目在本地运行不报错,上传到 GitHub 之后,再 clone 到本地, npm install 安装完成之后再执行 npm run dev 这时报错 Error: No PostCSS ...
- Linux头文件的设置
GCC/G++会查找系统默认的include和link的路径,以及自己在编译命令中指定的路径. 1.include头文件路径 除了默认的/usr/include, /usr/local/include ...
- zookeeper 安装笔记 3.6.7
1 下载 ZK wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.7/zookeeper-3.4.7.tar.gz 2 解 ...
- NSURLConnection和NSRunLoop
主线程中创建一个NSURLConnection并异步运行 [self performSelectorOnMainThread:@selector(start) withObject:nil waitU ...
- 10.29 工作笔记 ndk编译C++,提示找不到头文件(ndk-build error: string: No such file or directory)
ndk编译C++.提示找不到头文件(ndk-build error: string: No such file or directory) 被这个问题弄得愁眉苦脸啊.心想为啥一个string都找不到呢 ...