题目链接:点击查看

题目大意:构造一个合法的排列,满足 ppi=n−i+1p_{p_{i}}=n-i+1ppi​​=n−i+1

题目分析:因为第四个样例的存在降低了本题的难度,不然感觉还是有点难度的一道题。

5
2 5 3 1 4

观察上面的这个构造方法,不难看出可以令四个数组成一个环,这样当 nnn 只有是 444 的倍数或者余数为 111 时才有解,多出来的那个数放到中间就好啦

一组合法的环:i→i+1→n−i+1→n−i→ii\rightarrow i+1\rightarrow n-i+1 \rightarrow n-i \rightarrow ii→i+1→n−i+1→n−i→i

代码:

// Problem: Lucky Permutation
// Contest: Virtual Judge - CodeForces
// URL: https://vjudge.net/problem/CodeForces-287C
// Memory Limit: 262 MB
// Time Limit: 2000 ms
//
// Powered by CP Editor (https://cpeditor.org)// #pragma GCC optimize(2)
// #pragma GCC optimize("Ofast","inline","-ffast-math")
// #pragma GCC target("avx,sse2,sse3,sse4,mmx")
#include<iostream>
#include<cstdio>
#include<string>
#include<ctime>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<stack>
#include<climits>
#include<queue>
#include<map>
#include<set>
#include<sstream>
#include<cassert>
#include<bitset>
#include<list>
#include<unordered_map>
#define lowbit(x) (x&-x)
using namespace std;
typedef long long LL;
typedef unsigned long long ull;
template<typename T>
inline void read(T &x)
{T f=1;x=0;char ch=getchar();while(0==isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}while(0!=isdigit(ch)) x=(x<<1)+(x<<3)+ch-'0',ch=getchar();x*=f;
}
template<typename T>
inline void write(T x)
{if(x<0){x=~(x-1);putchar('-');}if(x>9)write(x/10);putchar(x%10+'0');
}
const int inf=0x3f3f3f3f;
const int N=1e6+100;
int ans[N];
int main()
{#ifndef ONLINE_JUDGE
//  freopen("data.in.txt","r",stdin);
//  freopen("data.out.txt","w",stdout);
#endif
//  ios::sync_with_stdio(false);int n;read(n);if(n%4!=0&&n%4!=1) {puts("-1");return 0;}if(n%4==1) {ans[n/2+1]=n/2+1;}for(int i=1;i<=n/2;i+=2) {ans[i]=i+1;ans[i+1]=n-i+1;ans[n-i+1]=n-i;ans[n-i]=i;}for(int i=1;i<=n;i++) {printf("%d ",ans[i]);}return 0;
}

CodeForces - 287C Lucky Permutation(构造)相关推荐

  1. Codeforces 482 - Diverse Permutation 构造题

    这是一道蛮基础的构造题. - k         +(k - 1)      -(k - 2) 1 + k ,    1 ,         k ,             2,    ....... ...

  2. codeforces C. Diverse Permutation(构造)

    题意:1...n 的全排列中 p1, p2, p3....pn中,找到至少有k个 |p1-p2| , |p2-p3|, ...|pn-1 - pn| 互不相同的元素! 思路: 保证相邻的两个数的差值的 ...

  3. Codeforces.612E.Square Root of Permutation(构造)

    题目链接 \(Description\) 给定一个\(n\)的排列\(p_i\),求一个排列\(q_i\),使得对于任意\(1\leq i\leq n\),\(q_{q_i}=p_i\).无解输出\( ...

  4. CodeForces - 1607D Blue-Red Permutation(贪心)

    题目链接:点击查看 题目大意:给出一个长度为 nnn 的数列,每个数字有一个颜色,如果是蓝色,每次操作则可以减一:如果是红色,每次操作则可以加一. 问有限次操作后,能否将数组变为一个长度为 nnn 的 ...

  5. CodeForces - 468C Hack it!(构造+数位dp)

    题目链接:点击查看 题目大意:求出一段区间 [l,r][l,r][l,r] 的数位和对 aaa 取模后为 000.更具体的,设 f(x)f(x)f(x) 为 xxx 的数位和,本题需要求出一对 [l, ...

  6. CodeForces - 1561E Bottom-Tier Reversals(构造)

    题目链接:点击查看 题目大意:给出一个长度为 nnn 的排列,每次操作可以选择一个奇数长度的前缀然后反转,需要构造一种方案,使得在不超过 5n2\frac{5n}{2}25n​ 次操作后使得序列有序 ...

  7. CodeForces - 1494E A-Z Graph(构造+思维)

    题目链接:https://vjudge.net/problem/CodeForces-1494E 题目大意:给出一个初始时只有 nnn 个点的有向带权图,需要执行 mmm 次操作,每次操作分为下列三种 ...

  8. CodeForces - 1494D Dogeforces(贪心+构造)

    题目链接:点击查看 题目大意:给出 nnn 个叶子结点和一个 n∗nn*nn∗n 的 LCALCALCA 矩阵,其中 LCALCALCA 表示的是最近公共祖先节点的权值,现在需要构造出一棵自顶向下权值 ...

  9. Permutation(构造+思维)

    A permutation p is an ordered group of numbers p1,   p2,   ...,   pn, consisting of ndistinct positi ...

最新文章

  1. php中连接两个值,php - 如何从两个表的连接中选择一个值? - SO中文参考 - www.soinside.com...
  2. [Python图像处理] 二十三.傅里叶变换之高通滤波和低通滤波
  3. 网络中典型协议--(DNS,输入url后, 发生的事情. ,ICMP,NAT)
  4. CuteEditor6.0使用配置心得体会(转)
  5. QT TextEdit设置背景、明文加密、弹出网站、弹出自定义对话框、gif动态图片、程序启动动画、打包程序、关闭事件
  6. 最让人纠结的等式:0.999...=1
  7. CentOS 7 常用命令大全
  8. 服务器文件绝对路径,服务器文件绝对路径
  9. 太慢不能忍!CPU 又拿硬盘和网卡开刀了!
  10. Oracle 11gR2 RAC TNS-12542: TNS:address already in use 故障一例
  11. Python-基础学习笔记
  12. OFFICE InfoPath 教程
  13. react全家桶指的是哪些?
  14. HLk-v20一v20s详细资料地址
  15. \t \n \n\t在python中的用法
  16. SQL Server数据库备份出现-1073548784错误号的解决方法
  17. 67、INGeo:利用占用网格先验加速/减少迭代次数
  18. Golang学习(二十四)家庭记账项目
  19. 手把手教你写第一个Windows窗口
  20. 论文复现:模拟风电不确定性——拉丁超立方抽样生成及缩减场景(Matlab全代码)

热门文章

  1. 人声处理_10款免费的人声处理工具
  2. java不输出数字_为什么我的代码不输出(仅)数字?
  3. mysql7种join连接_mysql 重新整理——七种连接join连接[六]
  4. 荧光透视的计算机辅助外科手术,「电信学」「2008.11」基于荧光透视的电磁跟踪骨科X射线导航实践研究...
  5. vue检测对象值_Vue 不能检测到对象属性的添加或删除,注意!!!
  6. MySQL排序查询介绍
  7. Nacos源码NacosNamingService
  8. Eureka-服务发现
  9. Synchronized结合Java Object对象中的 wait,notify,notifyAll
  10. 复制文件的异常处理【应用】