原文链接www.cnblogs.com/zhouzhendong/p/CF1172D.html

前言

明哥神仙打cf方式真潇洒。45分钟切D后就不打了?

我当场爆肝D想错方向不会做自闭了。

题解

考虑增量法构造。

考虑我们要在第一行和第一列操作一下,使得需要到达第一行和需要到达第一列的行和列完成任务。

设 \(R[x] = 1, C[y] = 1\)。

如果 \(x = y = 1\),那么我们不需要在第一行和第一列放任何传送门。

否则我们放一对传送门,位置分别是 \((1,y), (x,1)\),这样,我们就可以完成第一行和第一列的传送。

然后,由于第一行进入后会到达第 x 行,所以我们使 \(R'[x] = R[1]\),同理 \(C'[y] = C[1]\) 。

接下来执行 \(n' = n - 1\) 的构造方案即可。

最终当 \(n = 1\) 时,构造完毕,结束构造。

时间复杂度 \(O(n^2)\) 。

代码

#include <bits/stdc++.h>
#define clr(x) memset(x,0,sizeof x)
#define For(i,a,b) for (int i=(a);i<=(b);i++)
#define Fod(i,b,a) for (int i=(b);i>=(a);i--)
#define fi first
#define se second
#define pb(x) push_back(x)
#define mp(x,y) make_pair(x,y)
#define outval(x) cerr<<#x" = "<<x<<endl
#define outtag(x) cerr<<"---------------"#x"---------------"<<endl
#define outarr(a,L,R) cerr<<#a"["<<L<<".."<<R<<"] = ";\
For(_x,L,R)cerr<<a[_x]<<" ";cerr<<endl;
using namespace std;
typedef long long LL;
typedef unsigned long long ULL;
typedef vector <int> vi;
LL read(){
LL x=0,f=0;
char ch=getchar();
while (!isdigit(ch))
f|=ch=='-',ch=getchar();
while (isdigit(ch))
x=(x<<1)+(x<<3)+(ch^48),ch=getchar();
return f?-x:x;
}
const int N=1005;
int n;
int r[N],c[N];
pair <int,int> p1[N],p2[N];
int cnt=0;
int main(){
n=read();
For(i,1,n)
r[i]=read();
For(i,1,n)
c[i]=read();
For(i,1,n-1){
int pr,pc;
For(j,1,n){
if (r[j]==i)
pr=j;
if (c[j]==i)
pc=j;
}
if (pr==i&&pc==i)
continue;
cnt++;
p1[cnt]=mp(i,pc),swap(c[i],c[pc]);
p2[cnt]=mp(pr,i),swap(r[i],r[pr]);
}
printf("%d\n",cnt);
For(i,1,cnt)
printf("%d %d %d %d\n",p1[i].fi,p1[i].se,p2[i].fi,p2[i].se);
return 0;
}

最新文章

  1. CentOS 6.5 PPTPD VPN服务器安装,解决807等问题。
  2. UML类图的关系
  3. 求数组的长度 C
  4. set_include_path — 设置 include_path 配置选项为当前脚本设置 include_path 运行时的配置选项。
  5. python-unicode十进制数字转中文
  6. CSV文件导入到SQL Server表中
  7. 【剑指offer 面试题13】在 O(1) 时间删除链表结点
  8. NFC(8)关于新买的标签的格式化
  9. Qt数据库sqlite总结
  10. Js随机数--网页版的体育彩票选号器
  11. [Locked] Find the Celebrity
  12. list-style:none outside none;的作用
  13. js去除首尾空格
  14. 从&quot;按层次输出二叉树&quot;到&quot;求解二叉树深度&quot;的总结
  15. python面向对象之静态属性/静态方法/类方法/组合
  16. c++のurlmon实现下载文件并进度回调
  17. 跟我学SharePoint2013视频培训课程——版本控制示例(15)
  18. C++ 重载(overload)、重写(overrride)、重定义(redefine)总结
  19. 配置方案:Redis持久化RDB和AOF
  20. CF-822C Hacker, pack your bags! 思维题

热门文章

  1. Web Api 转
  2. 使用springboot实现一个简单的restful crud——02、dao层单元测试,测试从数据库取数据
  3. 【转载】C#中Add方法将往List集合末尾添加相应元素对象
  4. Air for ANE:一星期的调试笔记
  5. django后台标题替换
  6. 【zookeeper】apache-zookeeper-3.5.5的安装测试
  7. gitlab自带的Nginx与原Nginx冲突的解决方案
  8. ISM无需授权使用的无线频率
  9. (备忘)Java web项目迁移到Centos7中验证码无法显示
  10. 在openwrt上使用autossh(已放弃)