Coder-Strike 2014 - Finals (online edition, Div. 2) C题
1 second
256 megabytes
standard input
standard output
Nearly each project of the F company has a whole team of developers working on it. They often are in different rooms of the office in different cities and even countries. To keep in touch and track the results of the project, the F company conducts shared online meetings in a Spyke chat.
One day the director of the F company got hold of the records of a part of an online meeting of one successful team. The director watched the record and wanted to talk to the team leader. But how can he tell who the leader is? The director logically supposed that the leader is the person who is present at any conversation during a chat meeting. In other words, if at some moment of time at least one person is present on the meeting, then the leader is present on the meeting.
You are the assistant director. Given the 'user logged on'/'user logged off' messages of the meeting in the chronological order, help the director determine who can be the leader. Note that the director has the record of only a continuous part of the meeting (probably, it's not the whole meeting).
The first line contains integers n and m (1 ≤ n, m ≤ 105) — the number of team participants and the number of messages. Each of the next m lines contains a message in the format:
- '+ id': the record means that the person with number id (1 ≤ id ≤ n) has logged on to the meeting.
- '- id': the record means that the person with number id (1 ≤ id ≤ n) has logged off from the meeting.
Assume that all the people of the team are numbered from 1 to n and the messages are given in the chronological order. It is guaranteed that the given sequence is the correct record of a continuous part of the meeting. It is guaranteed that no two log on/log off events occurred simultaneously.
In the first line print integer k (0 ≤ k ≤ n) — how many people can be leaders. In the next line, print k integers in the increasing order — the numbers of the people who can be leaders.
If the data is such that no member of the team can be a leader, print a single number 0.
5 4
+ 1
+ 2
- 2
- 1
4
1 3 4 5
3 2
+ 1
- 2
1
3
2 4
+ 1
- 1
+ 2
- 2
0
5 6
+ 1
- 1
- 3
+ 3
+ 4
- 4
3
2 3 5
2 4
+ 1
- 2
+ 2
- 1
0
还是不会这种模拟题,看来模拟题是我的软肋!先贴别人的题解:http://blog.csdn.net/cc_again/article/details/24368265
1 #include<iostream>
2 #include<cstdio>
3 #include<cstring>
4 #include<set>
5 #include<vector>
6 using namespace std;
7 const int MAX=;
8 char cha[MAX];
9 int num[MAX];
int ans[MAX];
set<int>s;
set<int>alone;
int main()
{
int n,m;
while(cin>>n>>m)
{
memset(cha,,sizeof(cha));
memset(num,,sizeof(num));
memset(ans,,sizeof(ans));
s.clear();
alone.clear();
for(int i=;i<=m;i++)
cin>>cha[i]>>num[i];
for(int i=;i<=m;i++)
{
if(cha[i]=='-')
{
if(ans[num[i]]==)
{
s.insert(num[i]);
}
}
ans[num[i]]=;
}
memset(ans,,sizeof(ans));
for(int i=;i<=m;i++)
{
if(cha[i]=='+')
{
s.insert(num[i]);
if(s.size()>)
ans[num[i]]=;
else alone.insert(num[i]);
}
else
{
s.erase(num[i]);
if(s.size()>)
ans[num[i]]=;
else alone.insert(num[i]);
}
}
if(alone.size()!=)
{
for(set<int>::iterator p=alone.begin();p!=alone.end();p++)
{
ans[*p]=;
}
}
vector<int>ANS;
for(int i=;i<=n;i++)
{
if(ans[i]==)
ANS.push_back(i);
}
cout<<ANS.size()<<endl;
if(ANS.size()!=)
{
for(int i=;i<ANS.size()-;i++)
cout<<ANS[i]<<' ';
cout<<ANS[ANS.size()-]<<endl;
}
}
75 }一种网上很好的代码风格
Coder-Strike 2014 - Finals (online edition, Div. 2) C题的更多相关文章
- Coder-Strike 2014 - Finals (online edition, Div. 2) A. Pasha and Hamsters
水题 #include <iostream> #include <vector> #include <algorithm> using namespace std; ...
- Coder-Strike 2014 - Finals (online edition, Div. 2) B. Start Up
需要满足的条件是 (1)每个字母是对称的 (2)每个字符串是对称的 #include <iostream> #include <algorithm> #include < ...
- Coder-Strike 2014 - Finals (online edition, Div. 1)
CF 420A A. Start Up 题目链接: http://codeforces.com/problemset/problem/420/A 题目意思: 给一个字符串A,通过镜面反射后得到A', ...
- Bubble Cup 11 - Finals [Online Mirror, Div. 1]题解 【待补】
Bubble Cup 11 - Finals [Online Mirror, Div. 1] 一场很好玩的题啊! I. Palindrome Pairs 枚举哪种字符出现奇数次. G. AI robo ...
- Codeforces Round #378 (Div. 2) D题(data structure)解题报告
题目地址 先简单的总结一下这次CF,前两道题非常的水,可是第一题又是因为自己想的不够周到而被Hack了一次(或许也应该感谢这个hack我的人,使我没有最后在赛后测试中WA).做到C题时看到题目情况非常 ...
- Codeforces#441 Div.2 四小题
Codeforces#441 Div.2 四小题 链接 A. Trip For Meal 小熊维尼喜欢吃蜂蜜.他每天要在朋友家享用N次蜂蜜 , 朋友A到B家的距离是 a ,A到C家的距离是b ,B到C ...
- Codeforces Round #612 (Div. 2) 前四题题解
这场比赛的出题人挺有意思,全部magic成了青色. 还有题目中的图片特别有趣. 晚上没打,开virtual contest打的,就会前三道,我太菜了. 最后看着题解补了第四道. 比赛传送门 A. An ...
- IndiaHacks 2016 - Online Edition (Div. 1 + Div. 2) B. Bear and Compressing
B. Bear and Compressing 题目链接 Problem - B - Codeforces Limak is a little polar bear. Polar bears h ...
- IndiaHacks 2016 - Online Edition (Div. 1 + Div. 2) E - Bear and Forgotten Tree 2 链表
E - Bear and Forgotten Tree 2 思路:先不考虑1这个点,求有多少个连通块,每个连通块里有多少个点能和1连,这样就能确定1的度数的上下界. 求连通块用链表维护. #inclu ...
随机推荐
- Map(双列集合)
出现的原因:现实生活中有些数据成对存在. 特点:键不可重复,值可以重复. ----------|Map 数据都是以键值对的形式存在,键唯一,值可重复. --------- ...
- windows下找不到strings.h
头文件用的strings.h,换成string.h就好了.但是以前的Linux系统下用strings.h,strerror都能正常编译,怎么样能正常使用strings.h linux系统下的库问题跟w ...
- .NET开源工作流RoadFlow-流程设计-流程步骤设置-按钮设置
按钮设置是配置当前步骤的处理者可以执行哪些操作,每个按钮都有对应的执行脚本(javascript脚本). 从左边的按钮列表中选择当前步骤需要的按钮. 注意:如果是流程最后一步则要配置完成按钮而不是发送 ...
- Mysql允许外网接入
首先你可以为mysql创建一个账户,或者为root用户接入数据库. 授权用户指定所有主机以指定用户连接服务器 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDE ...
- ListView的多布局中的小问题
今天用到了ListView的多布局,我们需要额外重写两个方法 //返回多布局的个数 @Override public int getViewTypeCount() { return 3; } //用该 ...
- hdu 1412 {A} + {B}
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=3282 {A} + {B} Description 给你两个集合,要求{A} + {B}.注:同一个集合 ...
- Go字符串函数
下面的代码中,列出了Go官方包中常见的字符串函数. package main import s "strings" import "fmt" //为打印函数起个 ...
- squid基础配置
1 2 3 4 5 6 7 8 9 10 vim /etc/squid/squid.conf http_port 192.168.1.12:3128 (可写多个) cache_mem 64MB ...
- (转)Docker常用命令
1. 查看docker信息(version.info) # 查看docker版本 $docker version # 显示docker系统的信息 $docker info 2. 对image的操作(s ...
- [Linq Expression]练习自己写绑定
源代码:TypeMapper.zip 背景 项目中,我们会经常用到各种赋值语句,比如把模型的属性赋值给UI,把视图模型的属性拷贝给Entity.如果模型属性太多,赋值也会变成苦力活.所以,框架编程的思 ...