108. 奇数码问题【思维 / 逆序对】
n为奇数,左右交换不改变逆序对数个数,上下交换不改变逆序对奇偶性。
结论就是,将其转化成1维,将0去除掉,求逆序对的数量,看这两个的逆序对的奇偶性是否相同即可。
#include<bits/stdc++.h>
using namespace std;
typedef long long int LL;
const int N=1e5*3+10;
int n,temp[N];
void merge_sort(int l,int r,vector<int>&a,LL &ans)
{if(l>=r) return;int mid=l+r>>1;merge_sort(l,mid,a,ans),merge_sort(mid+1,r,a,ans);int i=l,j=mid+1,k=0;while(i<=mid&&j<=r){if(a[i]<=a[j]) temp[k++]=a[i++];else ans+=mid-i+1,temp[k++]=a[j++];}while(i<=mid) temp[k++]=a[i++];while(j<=r) temp[k++]=a[j++];for(int i=l,j=0;i<=r;i++,j++) a[i]=temp[j];
}
int main(void)
{while(cin>>n){vector<int>a,b;for(int i=1;i<=n*n;i++){int x; scanf("%d",&x);if(!x) continue;a.push_back(x);}for(int i=1;i<=n*n;i++){int x; scanf("%d",&x);if(!x) continue;b.push_back(x);}LL ans1=0,ans2=0;merge_sort(0,a.size()-1,a,ans1);merge_sort(0,a.size()-1,b,ans2);if( (ans1&1)==(ans2&1) ) puts("TAK");else puts("NIE");}return 0;
}
108. 奇数码问题【思维 / 逆序对】相关推荐
- 奇数码问题(逆序对)
Description 你一定玩过八数码游戏,它实际上是在一个33的网格中进行的,1个空格和1~8这8个数字恰好不重不漏地分布在这33的网格中. 例如: 5 2 8 1 3 _ 4 6 7 在游戏过程 ...
- E. String Reversal(思维+逆序对)详解
https://codeforces.com/contest/1430/problem/E 题意:交换相邻的字母使得字符串翻转的最小次数. 最近碰到了几道逆序对的题,有个比较明显的特征是交换相邻的数. ...
- What Goes Up Must Come Down(思维+逆序对构造LIS山峰)
https://ac.nowcoder.com/acm/contest/7831/F 考虑题意:对于每一个数来说,它最终要不左边的数全比它小,要不右边的数全比他小. 交换相邻的两个数,其他数字的相对位 ...
- Codeforces Round #598 (Div. 3) F. Equalizing Two Strings 思维 + 逆序对
传送门 文章目录 题意: 思路: 题意: 给你两个长度为nnn的串a,ba,ba,b,每次可以同时翻转a,ba,ba,b中任意一段长度为L(1≤L≤n)L(1\le L\le n)L(1≤L≤n)的子 ...
- Codeforces987 E. Petr and Permutations(思维+逆序对)
题意: 一开始有一个长度为n的原排列a, 一次操作随机选择两个不同位置的数a(i)和a(j),然后交换. Petr会进行3n次操作,Alex会进行7n+1次操作. 现在给出结果序列,要求判断结果序列是 ...
- POJ - 2893 M × N Puzzle(n*m数码问题+逆序对结论)
题目链接:点击查看 题目大意:给出一个n*m的数码问题,问是否能到达最终状态 题目分析:对于数码问题,我们先一步一步分析,先简单看一下定义: 八数码的问题描述为: 在3×3的棋盘上,摆有八个棋子,每个 ...
- 期望dp ---- B. Tree Array 思维+期望dp 逆序对期望数
题目大意 题目大意: n(n≤200)n(n\leq200)n(n≤200)个节点的树.初始的时候,等概率随机选择一个点标记,接来随机选择一个与标记点相连的未标记点来标记,直到所有的点都被标记.根据点 ...
- 牛客IOI周赛26-提高组(逆序对,对序列,未曾设想的道路) 题解
文章目录 逆序对 对序列 未曾设想的道路 牛客IOI周赛26-提高组 逆序对 这种套路之前已经见过几次了,肯定不是模拟操作数列 opt 1 对于i∈[1,l)⋃(r,n]i∈[1,l)\bigcup( ...
- 左神小和问题逆序对问题面试
归并排序的扩展问题 --先了解数据结构之归并排序,更容易理解以下的问题. 小和问题和逆序对问题. 在一个数组中,每一个数左边比当前数小的数累加起来,叫做这个数组的小和.在一个数组中,左边的数如果比右边 ...
最新文章
- 广州.net俱乐部12月份ABP框架活动场地征集、志愿者征集、合作讲师\副讲师征集...
- [Leedcode][JAVA][第128题][最长连续序列][Hash]
- 实现阿里云容器镜像服务反向访问代理
- java环境变量自动设置_自动设置Java环境变量
- C++:通过多态实现接口并生成dll和lib文件的小例子
- linux php 5.3 变慢,异常在 PHP 5.3 中的最佳实践
- 如何用python批量下载数据_Python实现批量下载文件
- 1.2 案例:波士顿房价预测
- ICCV2013 录用论文(目标跟踪相关部分)
- 如何在快手批量下载高清无水印视频方法
- 百度硬盘搜索插件开发指南(摘自百度)
- [海森推荐] 人工智能:一种现代方法
- 不需要appuploader破解版,也能上架
- 计算机绘图培训心得,AutoCAD2000软件学习心得总结工程
- 3Dmax建模教程详细步骤3D建模速成入门到高级教程 小白必看
- 电脑罗盘时钟html怎么设置成桌面,抖音网红款Word Clock罗盘时钟电脑桌面屏保设置教程-完整版...
- 张柏芝-从清纯走向堕落
- 起底资金盘GGT:一场早有预谋的跑路
- Excel批注教学:一键给多个单元格添加相同批注
- 产品架构图到底是怎么“画”出来的?
热门文章
- RBF:RBF基于近红外光谱的汽油辛烷值含量预测结果对比
- TF之DNN:对DNN神经网络进行Tensorboard可视化(得到events.out.tfevents本地服务器输出到网页可视化)
- pyhanlp 停用词与用户自定义词典
- 深入浅出统计学 第四五章 离散概率的计算与分布
- 关于Jdk7与Jdk8对Collections进行分组的区别
- Basic Level 1018. 锤子剪刀布 (20)
- hdu 1081To The Max
- sql getdate() 时间格式设置
- RV1108之MiniGui显示参数配置
- 现代密码学5.2--域扩张:Merkle-Damgard Transform