题意:n 个人參加线上会议。某经理记录了中间一段时间的 m 条上下线记录(1 ≤ n, m ≤ 105)。+ 表示上线,- 表示下线。

leader是指仅仅要有人在线,他都在线的人。求全部可能的leader。

题目链接:http://codeforces.com/problemset/problem/420/B

——>>这种一种人,他们在记录中的第一条记录是下线的,定义为xx。。

三个断言:

1)假设xx存在。那么出现的人中,leader仅仅可能是最后出现的那个xx。。

2)假设xx不存在,那么出现的人中,leader仅仅可能是第一个登录的人。。

3)没出现过的人都能够是leader。

#include <cstdio>
#include <set> using std::set; const int MAXN = 100000 + 10; int n, m;
char op[MAXN];
int p[MAXN];
int sum, leader;
int firstPlus = -1, lastInfinite = -1;
bool vis[MAXN]; void Init()
{
sum = n;
for (int i = 1; i <= n; ++i)
{
vis[i] = true;
}
} void Read()
{
for (int i = 1; i <= m; ++i)
{
getchar();
scanf("%c%d", op + i, p + i);
if (op[i] == '-' && vis[p[i]] == true)
{
lastInfinite = p[i];
}
if (firstPlus == -1 && op[i] == '+')
{
firstPlus = p[i];
}
if (vis[p[i]])
{
vis[p[i]] = false;
--sum;
}
}
} void Solve()
{
set<int> se; leader = lastInfinite == -1 ? firstPlus : lastInfinite;
if (lastInfinite != -1)
{
se.insert(leader);
}
for (int i = 1; i <= m; ++i)
{
if (op[i] == '+')
{
se.insert(p[i]);
if (se.find(leader) == se.end())
{
leader = -1;
break;
}
}
else
{
if (!se.empty())
{
se.erase(p[i]);
}
if (!se.empty() && se.find(leader) == se.end())
{
leader = -1;
break;
}
}
}
if (leader != -1)
{
vis[leader] = true;
++sum;
}
} void Output()
{
printf("%d\n", sum);
if (sum == 0) return; bool first = true;
for (int i = 1; i <= n; ++i)
{
if (vis[i])
{
if (first)
{
first = !first;
}
else
{
printf(" ");
}
printf("%d", i);
}
}
puts("");
} int main()
{
while (scanf("%d%d", &n, &m) == 2)
{
Init();
Read();
Solve();
Output();
} return 0;
}

CF - 420B - Online Meeting(思维)的更多相关文章

  1. CF 420B Online Meeting 模拟题

    只是贴代码,这种模拟题一定要好好纪念下 TAT #include <cstdio> #include <cstring> #include <algorithm> ...

  2. CF D. Fair(思维+DFS)

    http://codeforces.com/contest/987/problem/D 题目大概: 给出一个n个城镇m条边的图,给出每个城镇拥有的特产(可能多个城镇有相同特产).有k种不同特产. 要求 ...

  3. 2019牛客多校第四场A meeting 思维

    meeting 题意 一个树上有若干点上有人,找出一个集合点,使得所有人都到达这个点的时间最短(无碰撞) 思路 就是找树的直径,找直径的时候记得要找有人的点 #include<bits/stdc ...

  4. codeforces 420B Online Meeting

    一道实现很蛋疼的题.必须静下理清思路,整理出各种情况.不然就会痛苦地陷入一大堆if..else里不能自拔. #pragma comment(linker, "/STACK:102400000 ...

  5. CF 988C Equal Sums 思维 第九题 map

    Equal Sums time limit per test 2 seconds memory limit per test 256 megabytes input standard input ou ...

  6. cf 之lis+贪心+思维+并查集

    https://codeforces.com/contest/1257/problem/E 题意:有三个集合集合里面的数字可以随意变换位置,不同集合的数字,如从第一个A集合取一个数字到B集合那操作数+ ...

  7. 【31.42%】【CF 714A】Meeting of Old Friends

    time limit per test 1 second memory limit per test 256 megabytes input standard input output standar ...

  8. Coder-Strike 2014 - Finals (online edition, Div. 1)

    CF 420A  A. Start Up 题目链接: http://codeforces.com/problemset/problem/420/A 题目意思: 给一个字符串A,通过镜面反射后得到A', ...

  9. Online Meeting CodeForces - 420B (思维)

    大意: 给定某一段连续的上线下线记录, 老板上线或下线时房间无人, 并且每次会议都在场, 求哪些人可能是老板. 结论1: 从未出现过的人一定可以是老板. 结论2: 出现过的人中老板最多只有1个. 结论 ...

随机推荐

  1. [oldboy-django][2深入django]rest-framework教程

    # rest-framework教程 - settings.py INSTALL-APPS = [ 'snippets', # app 'rest-framework', ] - 创建model # ...

  2. 【转】Unity5.x发布IOS项目Xcode8免签证调试发布教程

    http://www.jianshu.com/p/b0fb49fbcc14 最近尝试发布一下IOS项目,发现现在发布已经简单很多了,不需要开发者账户也能简单快捷进行真机调试. 调试: 1.准备工作①硬 ...

  3. Ansible实战之Nginx高可用代理LNMP-wordpress

    author:JevonWei 版权声明:原创作品 blog:http://119.23.52.191/ --- 实验环境:前端使用Nginx做代理服务器,静态资源经由缓存服务器,连接后端web集群, ...

  4. ZigBee学习二 LED点对点通信

    ZigBee学习二 LED点对点通信 终端上电后,自动连接协调器进行组网,成功后,开始发送LED字符数据.当协调器接收到数据后,终端和协调器的LED1都开始闪烁. 工程搭建和文件添加 步骤这里就省了. ...

  5. openssl-1.0.1c交叉编译动态库(转)

    linux编译相关(13)  版权声明:本文为博主原创文章,未经博主允许不得转载. #交叉编译openssl ------直接修改Makefile新加这一行:CROSS_COMPILE= arm-un ...

  6. 【BZOJ 5047 空间传送装置】

    Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 282  Solved: 121[Submit][Status][Discuss] Descriptio ...

  7. Error:Cannot find module 'stylus'

    在webpack 里面用了 stylus-loader,但npm instatll 没有正确安装,出现error: Cannot find module ‘stylus’. 解决办法: 重新npm i ...

  8. 平滑升级nginx

    平滑升级nginx版本技术文档 作者 联系方式 日期 版本号 马坤 852115346@qq.com 2017-12-31 V1.0.0 备注:作者水平有限,难免出现错误.如若发现错误,请您及时与作者 ...

  9. why switch kernel mode and user mode expensive

    Because that means context switching(save context, restore context)

  10. FOR XML PATH 语句的应用【所有列值显示在一行中】

    原文发布时间为:2010-10-20 -- 来源于本人的百度文章 [由搬家工具导入] 大家都知道在SQL Server中利用 FOR XML PATH 语句能够把查询的数据生成XML数据,下面是它的一 ...