Kernel Knights (Gym - 101480K)
#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)的更多相关文章
- UVALive 7334 Kernel Knights (dfs)
Kernel Knights 题目链接: http://acm.hust.edu.cn/vjudge/contest/127407#problem/K Description Jousting is ...
- Bacteria (Gym - 101911C)
2018-2019 ACM-ICPC, NEERC, Southern Subregional Contest, Qualification Stage Bacteria Gym - 101911C ...
- Digit Division(排列组合+思维)(Gym 101480D )
题目链接:Central Europe Regional Contest 2015 Zagreb, November 13-15, 2015 D.Digit Division(排列组合+思维) 题解: ...
- 2017 United Kingdom and Ireland Programming(Gym - 101606)
题目很水.睡过了迟到了一个小时,到达战场一看,俩队友AC五个了.. 就只贴我补的几个吧. B - Breaking Biscuits Gym - 101606B 旋转卡壳模板题.然后敲错了. 代码是另 ...
- SCU3312 Stockholm Knights(最大流)
题目大概说一个n×m的格子中,'.'代表空地,'#'代表障碍,'K'代表骑士,'D'代表目的地.骑士每走一步花一条,每一步可以往(+2,+3)(-2,+3)...八个方向走,问占领所有目的地最少要几天 ...
- Security Guards (Gym - 101954B)( bfs + 打表 )
题意及思路 题目主要是讲先给出所有guard的位置,再给出所有incidents的位置,求出guard到达每个incident处最小的steps,其中guard每次可以向四周8个方向移动. 思路:对于 ...
- Book Borders (Gym - 101480B)(二分)
题目链接 题解:用二分查询一下每次满足长度的下一个加上它的长度. #include <bits/stdc++.h> using namespace std; typedef long lo ...
- MIT JOS学习笔记03:kernel 02(2016.11.08)
未经许可谢绝以任何形式对本文内容进行转载! 本篇接着上一篇对kernel的分析. (5)pte_t * pgdir_walk(pde_t *pgdir, const void *va, int cre ...
- MIT JOS学习笔记02:kernel 01(2016.10.28)
未经许可谢绝以任何形式对本文内容进行转载! 在文章开头不得不说的是,因为这部分的代码需要仔细理清的东西太多,所以导致这篇分析显得很啰嗦,还请谅解. 我们在上一篇文章已经分析了Boot Loader的功 ...
随机推荐
- Python_oneday
基本程序设计 一切代码输入,请使用英文输入法 编写一个简单的程序 圆公式面积: area = radius * radius * 3.1415 在Python里面不需要定义数据的类型 控制 ...
- Python中的幽灵—编码方式
首先要搞懂本地操作系统编码与系统编码的区别: 本地操作系统编码方式与操作系统有关,Linux默认编码方式为utf-8,Windows默认编码方式为gbk: 系统编码方式与编译器or解释器有关,Pyth ...
- __formart__
__format__ 一.__format__ 自定制格式化字符串 date_dic = { 'ymd': '{0.year}:{0.month}:{0.day}', 'dmy': '{0.day}/ ...
- 【第一季】CH06_FPGA设计Verilog基础(三)
[第一季]CH06_FPGA设计Verilog基础(三) 一个完整的设计,除了好的功能描述代码,对于程序的仿真验证是必不可少的.学会如何去验证自己所写的程序,即如何调试自己的程序是一件非常重要的事情. ...
- 第十一章 ZYNQ-MIZ702 DDR3 PS读写操作方案
本编文章的目的主要用简明的方法在纯PS里对DDR3进行读写. 本文所使用的开发板是Miz702 PC 开发环境版本:Vivado 2015.4 Xilinx SDK 2015.4 11.0本章难度 ...
- Invalid default value for 'time'
原因:安装的MySQL5.7版本之后,date, datetime类型设置默认值"0000-00-00",出现异常:Invalid default value for 'time' ...
- JDK + Tomcat 安装 + 制作自定义镜像【第 2 篇 Tomcat】
[第 1 篇 JDK]:https://www.cnblogs.com/del88/p/11842387.html[第 2 篇 Tomcat]:https://www.cnblogs.com/del8 ...
- PLSQL导出表结构和数据的三种方式
1.导出表结构和数据方式1.tools->export user objects是导出表结构 tools ->export user object 选择选项,导出.sql文件 说明:导出的 ...
- Vue Elementui中的Tag与页面其它元素相互交互
参考:https://www.jb51.net/article/147917.htm 思路 一.多选框勾选,出现对应的tag: 1.利用watch监听多选框绑定的值A(数组)的变化:2.根据A的变化, ...
- ADF简单介绍
1.ADF也是用的MVC的分层模式,如下图所示 2.Model层代理数据服务将数据关联在View层,用户则是在View层的UI界面上的操作来更改Model层代理的数据,Controller控制层执行用 ...