B. pSort
题目链接:
http://codeforces.com/problemset/problem/28/B
题意:
给一个n,原本有个1到n按顺序排列的序列,给一个序列问,在给一个数组,表示这个位置的数可以换到pi位置,问能不能实现给的那个序列的排列。如果可以输出yes相反输出no
思路:
通过画图可知同一个集合的数字一定可以相互交换位置。所以这里使用并查集就好。
代码:
#include<bits/stdc++.h>
#define LL long long using namespace std;
const int maxn=+;
struct node
{
int to,Next;
};
int Head[maxn];
node Edge[maxn*];
int cnt=;
int a[maxn],b[maxn],Fa[maxn];
void add(int u,int v)
{
Edge[++cnt].to=v;
Edge[cnt].Next=Head[u];
Head[u]=cnt;
return ;
}
int Find(int x)
{
if(x==Fa[x])
{
return x;
}
else
{
return Fa[x]=Find(Fa[x]);
}
}
int main()
{
int n;
cin>>n;
for(int i=;i<=n;i++)
{
Fa[i]=i;
}
for(int i=;i<=n;i++)
{
cin>>a[i];
}
for(int i=;i<=n;i++)
{
cin>>b[i];
}
for(int i=;i<=n;i++)
{
if(i+b[i]<=n||i-b[i]>=)
{
int root1=Find(i);
if(i+b[i]<=n)
{
int root2=Find(i+b[i]);
if(root1!=root2)
{
Fa[root2]=root1;
}
}
if(i-b[i]>=)
{
int root2=Find(i-b[i]);
if(root1!=root2)
{
Fa[root2]=root1;
}
}
}
}
int flag=;
for(int i=;i<=n;i++)
{
int root1=Find(a[i]);
int root2=Find(i);
if(root1!=root2)
{
//cout<<i<<" "<<a[i]<<endl;
flag=;
break;
}
}
if(flag)
{
cout<<"YES"<<endl;
}
else
{
cout<<"NO"<<endl;
}
return ;
}
B. pSort的更多相关文章
- CF28B pSort
题目描述 给定一个含有n个元素的数列,第i号元素开始时数值为i,元素i可以与距离为d[i]的元素进行交换.再给定一个1-n的全排列,问初始的数列可否交换成给定的样式. 输入:第一行一个整数n,第二行n ...
- c# JD快速搜索工具,2015分析JD搜索报文,模拟请求搜索数据,快速定位宝贝排行位置。
分析JD搜索报文 搜索关键字 女装 第二页,分2次加载. rt=1&stop=1&click=&psort=&page=3http://search.jd.com/Se ...
- 淘宝(阿里百川)手机客户端开发日记第四篇 自定义ListView详解
我们知道,如果采用官方的ListView,实现的功能在很多时候,并不能满足自己的业务需求,比如在设计到复杂的列表的时候,这一节,我们就开始动手自己实现自定义的ListView. 在上一节中,我们采用了 ...
- 01.base-v1.js
/* Date: 2014-01-21 */ function login() { return location.href = "https://passport.jd.com/new/l ...
- 【解题报告】zju-1030 Farmland
原题地址:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=30 题目大意: 平面图有一些点和一条边,要求找这样的多边形: 1.边的 ...
- [CFgym]2015-2016 ACM-ICPC Pacific Northwest Regional Contest小结
*感谢两位浙江大佬带我飞 贴下成绩 div2 div1 *div2不是我打的上个厕所就5/11了 比赛小结 A [题目大意] 有n(n<=500)个机场,两两之间距离是g[i][j],每经停一个 ...
- sorts
各种排序算法: #include <stdio.h> #include <string.h> #include <ctype.h> #include <std ...
- python爬虫系列之爬京东手机数据
python抓京东手机数据 作者:vpoet mail:vpoet_sir@163.com #coding=utf-8 import urllib2 from lxml import etree im ...
- TreeView控制消息
控制消息的作用 通过发送消息到Treeview控件, 就能够控机Treeview控件.常用的控制有: 获取被点击的节点 获取节点的文本 设置节点的文本 获取节点的父节点 获取节点的子节点 TVM_GE ...
随机推荐
- 深入理解DiscoveryClient
Spring Cloud Commons 提供的抽象 最早的时候服务发现注册都是通过DiscoveryClient来实现的,随着版本变迁把DiscoveryClient服务注册抽离出来变成了Servi ...
- Day4 --- Python中的控制结构(if, for, while, try...expect..)
if for while 可以参考 : https://www.cnblogs.com/HYLering/p/10051906.html try 是异常处理里面的 可以参考 : https://ww ...
- LeetCode Array Easy 485. Max Consecutive Ones
Description Given a binary array, find the maximum number of consecutive 1s in this array. Example 1 ...
- iOS crash log 解析
iOS开发中,经常遇到App在开发及测试时不会有问题,但是装在别人的设备中会出现各种不定时的莫名的 crash,因为iOS设备会保存应用的大部分的 crash Log,所以可以通过 crash Log ...
- What are draw calls(绘制命令) and what are batches(批)
Resolution It is important to know what are draw calls and what are batches. A draw call is a call t ...
- 读书笔记一、pandas数据结构介绍
pandas数据结构介绍 主要两种数据结构:Series和DataFrame. Series Series是一种类似于一维数组的对象,由一组数据(各种NumPy数据类型)+数据标签(即索引)组 ...
- source insight 4.0.86.0安装破解问题
source insight 4.0.86.0安装过程中碰到导入lic文件一直不正确 解决办法: 需要将SourceInsight\SW_Install\SI4安装及破解文件 目录下的sourcein ...
- windows下搭建Mongo主(Master)/从(slave)数据库同步
需要启动两个mongoDb文档数据库,一个是主模式启动,另一个是属于从模式启动. 1. 创建主从服务器 主服务器:192.168.1.131:27017 备服务器:192.168.1.131:2701 ...
- ARC093F Dark Horse 容斥原理+DP
题目传送门 https://atcoder.jp/contests/arc093/tasks/arc093_d 题解 由于不论 \(1\) 在哪个位置,一轮轮下来,基本上过程都是相似的,所以不妨假设 ...
- SPOJ1693 COCONUTS - Coconuts
传送门[洛谷] 自闭QAQ 什么玩意QAQ 不是很理解到底在干啥 问了巨佬以后大概是这个样子的 可以看出是最小割模型 对于每一个人 反悔的话就是代价+1 那么连接(s,i) (i,t)分别表示他最后选 ...