题目链接

#include <bits/stdc++.h>

using namespace std;
typedef long long ll;
int a[200005]; //存放原始数据
int vis[200005]; //标记选的对手
int b[200005]; //答案序列
queue<int>q; //把所有能够选的都存一次,接着遍历与它有关系的。
int main()
{
int n,x;
scanf("%d",&n);
memset(vis,0,sizeof(vis)); //初始化
memset(b,0,sizeof(b));
//memset(a,0,sizeof(a));
for(int i = 1; i <= 2*n; i ++)
{
scanf("%d",&a[i]);
vis[a[i]]++;
}
for(int i = 1; i <= 2*n; i ++) // 把能够选的放入到队列中,遍历与它相连的是否可以选上
{
if(vis[i] == 0)
q.push(i);
}
while(!q.empty())
{
int x = q.front();
q.pop();
b[x] = 1; // 表示可以选择放入到S中
if(b[a[x]]==-1) // 如果x被选上了,那么x所选的对手被处理过一次不能选,跳过就可以
continue; //因为不跳出,vis会再重复减一次,导致答案会增多或者减少一些
b[a[x]] = -1;
vis[a[a[x]]] --; // x选的对手y,y选的对手要减1,因为x被选进S中,y现在就相当于x的位置,y的选的对手就可以放进S中
if(vis[a[a[x]]] == 0) //当vis[z = a[a[x]]]为0,说明没有人挑战z,所以z要放进S中
q.push(a[a[x]]);
}
for(int i=1; i<=2*n; i++)
{
if(i<=n&&b[i]>=0) // 在第一房间(排)中,只要符合不与下面的在一个集合中就可以选择
printf("%d ",i);
else if(b[i]==1)
printf("%d ",i);
}
printf("\n");
return 0;
}

Kernel Knights (Gym - 101480K)的更多相关文章

  1. UVALive 7334 Kernel Knights (dfs)

    Kernel Knights 题目链接: http://acm.hust.edu.cn/vjudge/contest/127407#problem/K Description Jousting is ...

  2. Bacteria (Gym - 101911C)

    2018-2019 ACM-ICPC, NEERC, Southern Subregional Contest, Qualification Stage Bacteria Gym - 101911C ...

  3. Digit Division(排列组合+思维)(Gym 101480D )

    题目链接:Central Europe Regional Contest 2015 Zagreb, November 13-15, 2015 D.Digit Division(排列组合+思维) 题解: ...

  4. 2017 United Kingdom and Ireland Programming(Gym - 101606)

    题目很水.睡过了迟到了一个小时,到达战场一看,俩队友AC五个了.. 就只贴我补的几个吧. B - Breaking Biscuits Gym - 101606B 旋转卡壳模板题.然后敲错了. 代码是另 ...

  5. SCU3312 Stockholm Knights(最大流)

    题目大概说一个n×m的格子中,'.'代表空地,'#'代表障碍,'K'代表骑士,'D'代表目的地.骑士每走一步花一条,每一步可以往(+2,+3)(-2,+3)...八个方向走,问占领所有目的地最少要几天 ...

  6. Security Guards (Gym - 101954B)( bfs + 打表 )

    题意及思路 题目主要是讲先给出所有guard的位置,再给出所有incidents的位置,求出guard到达每个incident处最小的steps,其中guard每次可以向四周8个方向移动. 思路:对于 ...

  7. Book Borders (Gym - 101480B)(二分)

    题目链接 题解:用二分查询一下每次满足长度的下一个加上它的长度. #include <bits/stdc++.h> using namespace std; typedef long lo ...

  8. MIT JOS学习笔记03:kernel 02(2016.11.08)

    未经许可谢绝以任何形式对本文内容进行转载! 本篇接着上一篇对kernel的分析. (5)pte_t * pgdir_walk(pde_t *pgdir, const void *va, int cre ...

  9. MIT JOS学习笔记02:kernel 01(2016.10.28)

    未经许可谢绝以任何形式对本文内容进行转载! 在文章开头不得不说的是,因为这部分的代码需要仔细理清的东西太多,所以导致这篇分析显得很啰嗦,还请谅解. 我们在上一篇文章已经分析了Boot Loader的功 ...

随机推荐

  1. 怎样理解JS的预解析机制

    JS的预解析包括两部分: 1. 变量提升 2. 函数声明 对于变量提升, 可以看下下面这块代码 console.log(name); // undefined var name = "Lil ...

  2. QT QListWidget去掉滚动条

    1.去掉滚动条 设置样式  包含背景色等更改 setStyleSheet("QListWidget{color:gray;font-size:12px;background:#FAFAFD; ...

  3. 【php设计模式】门面模式

    门面模式又叫外观模式,用来隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口.这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性. 这种模式涉及到一个单一的类 ...

  4. php 如何将image图片转化为字符串(GD库操作及imagick两种实现方式)

    前两天研究php中的 imagick 扩展的时候,突发奇想实现的一个小功能感觉挺有意思,在这里记录一下: 将一张image图片转化为字符串的形式,先上一张效果图.(运行笔记中的代码需要先安装 php_ ...

  5. TypeScript入门六:TypeScript的泛型

    泛型函数 泛型类 一.泛型函数 在泛型函数之前,先简单的描述一下泛型,将变量定义成泛型可以在使用变量时来决定它的类型.什么意思呢?假如现在有一个函数,可能出现参数和返回值出现多种情况的现象,只有在调用 ...

  6. vue学习(8)-过渡transition&动画animate

      进入之前                                                    离开之后 v-enter---v-enter-to            v-lea ...

  7. C++ STL 之 string

    #include <iostream> #include <string> using namespace std; // 初始化 void test01() { string ...

  8. 如何在调用Marketing Cloud contact创建API时增加对扩展字段的支持

    需求:扩展字段"微信ID"是我创建出来的extension field,我想用Marketing Cloud提供的contact creation API,在创建contact时也 ...

  9. 【异常】ssh无法登录验证,非root用户ssh本机无法成功

    1 自己搭建的是伪分布式环境,需要以非root用户启动Hadoop集群,之前root已经配置了ssh免密登录,但是自己切换到hdfs用户重新生成了一套ssh key, 但是切换到hdfs始终无法成功登 ...

  10. Mysql(八):ORM框架SQLAlchemy

    一 介绍 SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作,简言之便是:将对象转换成SQL,然后使用数据API执行SQL并获取 ...