(寒假集训)Reordering the Cows
Reordering the Cows
时间限制: 1 Sec 内存限制: 64 MB
提交: 18 解决: 7
[提交][状态][讨论版]
题目描述
John's N cows (1 <= N <= 100), conveniently numbered 1..N, are
standing in a row. Their ordering is described by an array A, where
A(i) is the number of the cow in position i. Farmer John wants to
rearrange
them into a different ordering for a group
photo, described by an array B, where B(i) is the number of the cow
that should end up in position i.
For example, suppose the cows start out ordered as follows:
A = 5 1 4 2 3
and suppose Farmer John would like them instead to be ordered like this:
B = 2 5 3 1 4
To re-arrange themselves from the "A"
ordering to the "B" ordering, the cows perform a number of "cyclic"
shifts. Each of these cyclic shifts begins with a cow moving to her
proper location in the "B" ordering, displacing another cow, who then
moves to her proper location, displacing another cow, and so on, until
eventually a cow ends up in the position initially occupied by the first
cow on the cycle. For example, in the ordering above, if we start a
cycle with cow 5, then cow 5 would move to position 2, displacing cow 1,
who moves to position 4, displacing cow 2, who moves to position 1,
ending the cycle. The cows keep performing cyclic shifts until every
cow eventually ends up in her proper location in the "B" ordering.
Observe that each cow participates in exactly one cyclic shift, unless
she occupies the same position in the "A" and "B" orderings.
Please compute the number of different
cyclic shifts, as well as the length of the longest cyclic shift, as the
cows rearrange themselves.
输入
* Lines 2..1+N: Line i+1 contains the integer A(i).
* Lines 2+N..1+2N: Line 1+N+i contains the integer B(i).
输出
Line 1: Two space-separated integers, the first giving the number of
cyclic shifts and the second giving the number cows involved in the
longest such shift. If there are no cyclic shifts,output -1 for the
second number.
样例输入
5
5
1
4
2
3
2
5
3
1
4
样例输出
2 3
提示
There are two cyclic shifts, one involving cows 5, 1, and 2, and the other involving cows 3 and 4.
【分析】这一题我想复杂了,其实循环也可以做,我使用并查集找环的。
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <string>
#include <map>
#include <stack>
#include <queue>
#include <vector>
#define inf 0x3f3f3f3f
#define met(a,b) memset(a,b,sizeof a)
#define pb push_back
typedef long long ll;
using namespace std;
const int N = ;
const int M = ;
int n,m,k,l,tot=;
int a[N],b[N];
int parent[N],pre[N],vis[N];
int mark[N][N];
vector<int>vec[N],ans[N*N];
int Find(int x)
{
if(parent[x]!=x)parent[x]=Find(parent[x]);
return parent[x];
}
void Union(int x,int y)
{
x=Find(x);
y=Find(y);
if(x==y)return;
else parent[y]=x;
}
void bfs(int s,int t)
{
met(vis,);
met(pre,);
queue<int>q;
q.push(s);
vis[s]=;
while(!q.empty())
{
int u=q.front();
q.pop();
if(u==t)return;
for(int i=; i<vec[u].size(); i++)
{
int v=vec[u][i];
if(!vis[v])
{
pre[v]=u;
vis[v]=;
q.push(v);
}
}
}
}
int main()
{
int u,v;
for(int i=; i<N; i++)parent[i]=i;
scanf("%d",&n);
for(int i=; i<=n; i++)scanf("%d",&a[i]);
for(int i=; i<=n; i++)scanf("%d",&b[i]);
for(int i=; i<=n; i++)
{
for(int j=; j<=n; j++)
{
if(a[i]==b[j]&&!mark[i][j])
{
mark[i][j]=;
u=i;v=j;
int x=Find(u);
int y=Find(v);
if(x==y)
{
bfs(u,v);
ans[++tot].push_back(v);
while(pre[v])
{
ans[tot].pb(pre[v]);
v=pre[v];
}
}
else
{
vec[u].pb(v);
vec[v].pb(u);
Union(u,v);
}
break;
}
}
}
int aans=,sum=;
for(int i=; i<=tot; i++)
{
if(ans[i].size()>){
sum++;
if(ans[i].size()>aans)aans=ans[i].size();
}
}
if(sum!=)printf("%d %d\n",sum,aans);
else printf("%d -1\n",sum);
return ;
}
(寒假集训)Reordering the Cows的更多相关文章
- CSU-ACM寒假集训选拔-入门题
CSU-ACM寒假集训选拔-入门题 仅选择部分有价值的题 J(2165): 时间旅行 Description 假设 Bobo 位于时间轴(数轴)上 t0 点,他要使用时间机器回到区间 (0, h] 中 ...
- (寒假集训)Roadblock(最短路)
Roadblock 时间限制: 1 Sec 内存限制: 64 MB提交: 9 解决: 5[提交][状态][讨论版] 题目描述 Every morning, FJ wakes up and walk ...
- (寒假集训)Cow Art(bfs)
Cow Art 时间限制: 1 Sec 内存限制: 64 MB提交: 13 解决: 10[提交][状态][讨论版] 题目描述 A little known fact about cows is t ...
- (寒假集训)Mooo Moo (完全背包)
Mooo Moo 时间限制: 1 Sec 内存限制: 64 MB提交: 5 解决: 4[提交][状态][讨论版] 题目描述 Farmer John has completely forgotten ...
- (寒假集训) Cow Jog(二分优化的最长上升子数列)
Cow Jog 时间限制: 1 Sec 内存限制: 64 MB提交: 24 解决: 5[提交][状态][讨论版] 题目描述 Farmer John's N cows (1 <= N < ...
- 中南大学2019年ACM寒假集训前期训练题集(基础题)
先写一部分,持续到更新完. A: 寒衣调 Description 男从戎,女守家.一夜,狼烟四起,男战死沙场.从此一道黄泉,两地离别.最后,女终于在等待中老去逝去.逝去的最后是换尽一生等到的相逢和团圆 ...
- 2022寒假集训day2
day1:学习seach和回溯,初步了解. day2:深度优化搜索 T1 洛谷P157:https://www.luogu.com.cn/problem/P1157 题目描述 排列与组合是常用的数学方 ...
- GlitchBot -HZNU寒假集训
One of our delivery robots is malfunctioning! The job of the robot is simple; it should follow a lis ...
- Wooden Sticks -HZNU寒假集训
Wooden Sticks There is a pile of n wooden sticks. The length and weight of each stick are known in a ...
随机推荐
- 遍历两个自定义列表来实现字典(key:value)
#自定义key ${keys} create list key1 key2 key3 #自定义value ${values} create list v ...
- git bash中文显示为数字
转自:http://blog.csdn.net/zhujiangtaotaise/article/details/74424157 今天让去做一个另外一个项目,导入项目后,git status 发现原 ...
- 孤荷凌寒自学python第六十二天学习mongoDB的基本操作并进行简单封装1
孤荷凌寒自学python第六十二天学习mongoDB的基本操作并进行简单封装1 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第八天. 今天开始学习mongoDB的简单操作, ...
- 洛谷P1003铺地毯(提高组)
题目描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯.一共有 n 张地毯,编号从 1 到n. 现在将这些地毯按照编号从小到大的顺序平行于 ...
- Android记事本开发03
昨天: 生成签名文件及导出apk 遇到的问题: 无. 今天: activity和intent基础
- BZOJ1025 [SCOI2009]游戏 【置换群 + 背包dp】
题目链接 BZOJ1025 题解 题意就是问一个\(1....n\)的排列在同一个置换不断重复下回到\(1...n\)可能需要的次数的个数 和置换群也没太大关系 我们只需知道同一个置换不断重复,实际上 ...
- Pty的字符串(string)
题目描述 在神秘的东方有一棵奇葩的树,它有一个固定的根节点(编号为1).树的每条边上都是一个字符,字符为a,b,c中的一个,你可以从树上的任意一个点出发,然后沿着远离根的边往下行走,在任意一个节点停止 ...
- 安装PL/SQL Developer,链接本地64位Oracle
请参考: http://www.cnblogs.com/ymj126/p/3712727.html 或者 http://blog.csdn.net/cselmu9/article/details/80 ...
- Codeforces Round #328 (Div. 2) C 数学
C. The Big Race time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...
- Codeforces Round #352 (Div. 2) C
C. Recycling Bottles time limit per test 2 seconds memory limit per test 256 megabytes input standar ...