首页 > 学院 > 开发设计 > 正文

Codeforces 765D Artsem and Saunders 【构造】

2019-11-08 01:55:45
字体:
来源:转载
供稿:网友

题目:http://codeforces.com/contest/765/PRoblem/D

题意:

给你n个数f(i) 现在让你构造一个长度为n的g(i),和一个长度为m的h(i),m由你自己定。 要求g(h(x))=x,h(g(x))=f(x)

分析:

这里写图片描述

代码:

#include<bits/stdc++.h>using namespace std;int n, f[101000], q[101000], cnt, p[101000];int main(){ int i; scanf("%d",&n); for(i=1;i<=n;i++){ scanf("%d",&f[i]); if(!q[f[i]]){ q[f[i]] = ++cnt; p[cnt] = f[i]; } } for(i=1;i<=n;i++){ if(f[f[i]] != f[i]){ printf("-1/n"); return 0; } } printf("%d/n",cnt); for(i=1;i<=n;i++){ printf("%d ",q[f[i]]); } printf("/n"); for(i=1;i<=cnt;i++)printf("%d ",p[i]);}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表