数学+分类讨论+构造:1102T3

http://cplusoj.com/d/senior/p/SS231102C

首先可以通过枚举逆序对点的贡献推出无解情况为 n m o d 4 > 1 n \bmod 4 > 1 nmod4>1

然后构造可以按 n m o d 3 n\bmod 3 nmod3 进行分类

#include<bits/stdc++.h>
using namespace std;
#ifdef LOCAL#define debug(...) fprintf(stdout, ##__VA_ARGS__)
#else#define debug(...) void(0)
#endif
#define int long long
inline int read(){int x=0,f=1;char ch=getchar(); while(ch<'0'||
ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){
x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}return x*f;}
#define Z(x) (x)*(x)
#define pb push_back
//mt19937 rand(time(0));
//mt19937_64 rand(time(0));
//srand(time(0));
#define N 2000010
//#define M
//#define mo
int n, m, i, j, k, T;
int a[N], b[N], mp[N]; 
vector<int>v[N]; void lian(int *a, int *b, int x, int y) {a[x]=y; b[y]=x; 
}void fenzhi(int n, int l, int r, int op, int *a, int *b) {
//	debug("%lld [%lld %lld] %lld\n", n, l, r, op); int x, i, j, k, p=l-1; if(!n) return ; if(n==1) return a[l]=b[l]=l, void(); if(op==0) {x=(n-1)/3; 		if(n<=8) {
//			debug(">> %lld\n", n); if(n!=4 && n!=5 && n!=8) return ; for(i=1; i<=n; ++i) lian(a, b, p+i, p+v[n][i]); 
//			for(i=l; i<=r; ++i) debug("%d ", a[i]); debug("\n"); 
//			for(i=l; i<=r; ++i) debug("%d ", b[i]); debug("\n"); return ; }if(n%3==1) {for(i=1, j=n; i<=x; ++i, --j) lian(a, b, i+p, j+p); for(i=2, j=n; i<=x+1; ++i, --j) lian(b, a, i+p, j+p); lian(a, b, x+1+p, 1+p); fenzhi(n-2*x-1, l+x+1, r-x, 0, a, b); return ; }if(n%3==2) {for(i=1, j=n; i<=x; ++i, --j) lian(a, b, i+p, j+p); for(i=2, j=n; i<=x+1; ++i, --j) lian(b, a, i+p, j+p); lian(b, a, 1+p, x+2+p); lian(a, b, x+3+p, r-x); lian(a, b, r-x, x+2+p); fenzhi(n-2*x-3, l+x+2, r-x-1, 1, a, b); 
//			debug("GG "); for(i=l; i<=r; ++i) debug("%d ", a[i]); debug("\n"); return ; }if(n%3==0) {for(i=1, j=n; i<=x; ++i, --j) lian(a, b, i+p, j+p); for(i=2, j=n; i<=x+1; ++i, --j) lian(b, a, i+p, j+p); 
//			debug("# "); for(i=l+x+1; i<=r-x; ++i) debug("%d ", a[i]); debug("\n"); fenzhi(n-2*x-1, l+x+1, r-x, 0, a, b); 
//			debug("# "); for(i=l+x+1; i<=r-x; ++i) debug("%d ", a[i]); debug("\n"); 
//			for(i=l+x+1; i<=r-x; ++i) debug("%d ", abs(a[i]-i)); debug("\n"); lian(a, b, x+1+p, r-x); lian(a, b, x+2+p, l); 
//			for(i=l; i<=r; ++i) debug("%d ", abs(a[i]-i)); debug("\n"); return ; }}if(op==1) {x=n/3-1; for(i=1, j=n; i<=x; ++i, --j) lian(b, a, i+p, j+p); for(i=2, j=n; i<=x+1; ++i, --j) lian(a, b, i+p, j+p); lian(a, b, l-2, x+1+p); if(n<=5) {if(n==4) {lian(a, b, l-2, l+1); lian(a, b, l+1, l+2); lian(a, b, l+2, l); lian(a, b, r, r); }if(n==5) {lian(a, b, l-2, l+1); lian(a, b, l+1, l+2); lian(a, b, l+2, r); lian(a, b, l+3, l+3); lian(a, b, r, l); }return ; }if(n%3==0) {fenzhi(n-2*x-1, l+x+1, r-x, 0, a, b); return ; }if(n%3==1) {lian(a, b, l-2, x+2+p); lian(a, b, x+2+p, r-x); lian(a, b, r-x, x+3+p); fenzhi(n-2*x-3, l+x+2, r-x-1, 1, b, a); return ; }if(n%3==2) {fenzhi(n-2*x-1, l+x+1, r-x, 0, b, a); lian(a, b, l-2, x+2+p); lian(a, b, r-x, x+1+p); return ; }}
}signed main()
{freopen("destruction.in", "r", stdin);freopen("destruction.out", "w", stdout);#ifdef LOCALfreopen("in.txt", "r", stdin);freopen("out.txt", "w", stdout);#endifv[4]={0, 4, 2, 1, 3}; v[5]={0, 5, 3, 1, 4, 2}; v[8]={0, 8, 7, 5, 4, 1, 3, 6, 2}; T=read();while(T--) {n=m=read(); if(n%4 && (n-1)%4) { printf("-1\n"); continue; }for(i=1; i<=n; ++i) a[i]=b[i]=i; fenzhi(n, 1, n, 0, a, b); 
//		memset(mp, 0, sizeof(mp));for(i=1; i<=n; ++i) printf("%d ", a[i]);
//		debug("\n"); 
//		for(i=1; i<=n; ++i) debug("%2d ", i);
//		debug("\n") ; 
//		for(i=1; i<=n; ++i) debug("%d ", abs(a[i]-i)); 
//		for(i=1; i<=n; ++i) if(mp[abs(a[i]-i)]) break; else mp[abs(a[i]-i)]=1; 
//		if(i<=n) printf("\nsdfasfsad asdf safasdf %lld\n", n); printf("\n"); }return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/127852.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux的test测试功能

测试文件名的类型&#xff0c;文件是否存在&#xff0c; 文件的权限检测 文件之间的比较 两个整数之间的比较 判断字符串数据 多重条件判定 一个一个来&#xff0c;这个有点多&#xff0c;不过比较有意思&#xff0c;来代码 案例1&#xff0c;判断文件是否存在&#xff…

超声波俱乐部分享:百度世界大会点燃AI创业者新希望

10月22日&#xff0c;2023年第十三期超声波俱乐部内部分享会在北京望京举行。本期的主题是&#xff1a;百度世界大会点燃AI创业者新希望。 到场的嘉宾有&#xff1a;超声波创始人杨子超&#xff0c;超声波联合创始人、和牛商业创始人刘思雨&#xff0c;中国国际经济交流中心研…

excel利用正则匹配和替换指定内容

上班中, 突然接到电话, 屋里的上司大人发来个excel, 说要替换里面x-x-xxx列的内容为x栋x单元xxx. 大致表格如下, 原表格我就不发了 身为程序猿的我, 肯定第一就想到了 正则! 打开excel-开始-查找和替换, 我擦, 只能完全匹配和替换 比如一次只能替换1-1- -> 为1栋1单元 1-2…

Java 零碎知识点

目录 [多线程]创建多线程的三种方式 [网络编程]一、重点概念1、TCP/IP网络模型2、IP 对象3、端口号4、协议UDP(User Datagram Protocol)TCP(Transmission Control Protocol) 二、UDP 通信三、TCP 通信 [前端][Vue]一、Vue3项目创建响应式函数父子通信父传子子传父 跨层组件通信…

Java规则引擎2.1.8版本新增功能说明

规则引擎更新功能 新增: 1.决策结束节点新增结果导出excel功能&#xff1b; 在决策流程的结束节点&#xff0c;可以将决策结果导出为Excel文件。这个功能为用户提供了更多的灵活性和便利性&#xff0c;使他们能够轻松地将决策结果数据进行进一步的分析和处理。 2.新增公有变…

@所有人,城市燃气信息化与信息安全建设方法

关键词&#xff1a;城市燃气信息化、智慧燃气建设、城市燃气安全、智慧燃气、智慧燃气平台 近几年&#xff0c;燃气作为一种新兴的燃料迅速普及开来&#xff0c;和燃气有关的企业之间的竞争也不可避免。身处在互联网的时代&#xff0c;企业只有顺应时代的潮流&#xff0c;将城…

代码最佳实践和指南(四)

错误处理和测试 错误处理和测试的重要性 测试你的代码是必要的&#xff0c;以确保你的代码正在做你认为它应该做的事情。尝试用小的、虚构的数据集测试你的代码&#xff0c;在那里你知道结果应该是什么&#xff0c;并检查你的程序是否给出了预期的答案。如果你有时间和资源&a…

SpringBoot 继承 Apollo 应用 简单步骤记录

1、pom.xml 添加依赖&#xff1b; <!--本地项目涉及到该sdk版本冲突时可能需要手动解决版本控制问题--><dependency><groupId>com.ctrip.framework.apollo</groupId><artifactId>apollo-client-tair</artifactId><version>1.4.0<…

概念解析 | 神经网络中的位置编码(Positional Encoding)

注1:本文系“概念解析”系列之一,致力于简洁清晰地解释、辨析复杂而专业的概念。本次辨析的概念是:Positional Encoding 神经网络中的位置编码(Positional Encoding) A Gentle Introduction to Positional Encoding in Transformer Models, Part 1 1.背景介绍 在自然语言处理任…

通过xshell传输文件到服务器

一、user is not in the sudoers file. This incident will be reported. 参考链接&#xff1a; [已解决]user is not in the sudoers file. This incident will be reported.(简单不容易出错的方式)-CSDN博客 简单解释下就是&#xff1a; 0、你的root需要设置好密码 sudo …

Java实验二类编程实验

1.编写一个代表三角形的类&#xff08;Triangle.java&#xff09;。 其中&#xff0c;三条边a,b,c&#xff08;数据类型为double类型&#xff09;为三角形的属性&#xff0c;该类封装有求三角形的面积和周长的方法。分别针对三条边为3、4、5和7、8、9的两个三角形进行测试&…

Web Woeker和Shared Worker的使用以及案例

文章目录 1、前言2、介绍 Web Worker3、使用须知及兼容性3.1、使用须知3.2、兼容性 4、使用 Web Worker4.1、创建 Web Worker4.2、与主线程通信4.3、终止 Web Worker4.4、监听错误信息 5、使用 Shared Worker4.5、调试 Shared Worker 6、使用中的一些坑6.1、Web Woeker 中引入了…

古老的五子棋

午休忽然想起我奶奶喜欢下的一种古老的五子棋游戏&#xff0c;于是花了半小时开发出来了&#xff5e; 源代码&#xff1a; <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" …

怎么监控钉钉聊天记录内容(监控钉钉聊天记录的3种形式)

企业沟通工具的普及&#xff0c;越来越多的企业开始使用钉钉作为内部沟通工具。然而&#xff0c;对于企业管理者来说&#xff0c;如何监控钉钉聊天记录内容成为了一个重要的问题。本文将介绍几种方法&#xff0c;帮助企业管理者实现监控钉钉聊天记录内容的目的。 一、钉钉自带功…

电商api数据采集分析(淘宝价格监控)

一、什么是淘宝商品数据采集&#xff1f; 淘宝商品数据采集&#xff0c;顾名思义&#xff0c;就是通过技术手段对全网电商平台上的商品价格信息进行抓取并保存。通过将收集到的这些价格信息进行分析处理后得到该商品的成交价、折扣率等关键属性指标&#xff0c;从而为卖家提供参…

系列十五、idea全局配置

一、全局Maven配置 IDEA启动页面>Customize>All settings>Build,Execution,Deployment>Build Tools>Maven 二、全局编码配置 IDEA启动页面>Customize>All settings>Editor>File Encodings 三、全局激活DevTools配置 IDEA启动页面>Customize>A…

[迁移学习]DA-DETR基于信息融合的自适应检测模型

原文标题为&#xff1a;DA-DETR: Domain Adaptive Detection Transformer with Information Fusion&#xff1b;发表于CVPR2023 一、概述 本文所描述的模型基于DETR&#xff0c;DETR网络是一种基于Transformer的目标检测网络&#xff0c;详细原理可以参见往期文章&#xff1a;…

如何用PHP获取各大电商平台的数据

PHP获取API数据是指使用PHP语言从web服务中提取数据。API是指应用程序接口&#xff0c;它允许应用程序之间进行交互和通信&#xff0c;并且允许一个应用程序从另一个应用程序获取数据。PHP是一种网站开发语言&#xff0c;它可以使用多种方式来获取API数据。 在PHP中&#xff0…

前端基础之BOM和DOM

目录 一、前戏 window对象 window的子对象 navigator对象&#xff08;了解即可&#xff09; screen对象&#xff08;了解即可&#xff09; history对象&#xff08;了解即可&#xff09; location对象 弹出框 计时相关 二、DOM HTML DOM 树 查找标签 直接查找 间…

Python安装教程

1 安装python环境 1.1 下载python 首先打开http://www.python.org &#xff08;这个是python官网&#xff09;下载配置环境。点击上方 downloads,选择对应的系统的版本就行&#xff0c;这里以windows64系统为例。 点击之后&#xff0c;可以看到很多版本&#xff0c;这里我选择…