Description

Input

输入文件第一行包含一个正整数 k。之后是 k 组测试用例。 每组测试用例的第一行为一个整数 n。接下来 n 行,每行 n 个以空格隔开的数,用来 描述棋盘的初始状态。

Output

输出文件包含 k 行,如果第 i 组测试用例输入的初始局面可以通过有限次操作达到目 标状态,则输出”You still have a chance.”否则输出” You are destined to be single.”(均不含冒号)

Sample Input

2
3
1 2 3
4 5 6
0 7 8
3
1 2 3
4 5 6
0 8 7

Sample Output

You still have a chance.
You are destined to be single.

Data Constraint

对于 30%的测试数据n = 3, k ≤ 10
对于 50%的测试数据n ≤ 10, k ≤ 10
对于 70%的测试数据n ≤ 30, k ≤ 10
对于 100%的测试数据n ≤ 100, k ≤ 10

Solution

  • 这题……总之一句话——乱搞。

  • 首先把矩阵“拉开”变成一条链,可以发现,是否成功与该序列的逆序对数有关。

  • 由于左右交换其相对顺序不变,上下交换改变了 N-1 个数,而 N 为单数。

  • 所以当逆序对数为单数时不可行、偶数时可行(脑补一番即可)。

  • 我用权值线段树处理出逆序对。(或用树状数组、归并排序等)

Code

#include<cstdio>
#include<cstring>
using namespace std;
const int N=101;
int ans;
int a[N*N],f[N*N*4];
inline int read()
{int X=0,w=1; char ch=0;while(ch<'0' || ch>'9') {if(ch=='-') w=-1;ch=getchar();}while(ch>='0' && ch<='9') X=(X<<3)+(X<<1)+ch-'0',ch=getchar();return X*w;
}
inline void insert(int v,int l,int r,int x)
{if(l==r){f[v]++;return;}int mid=(l+r)>>1;if(x<=mid) insert(v<<1,l,mid,x); else insert(v<<1|1,mid+1,r,x);f[v]=f[v<<1]+f[v<<1|1];
}
inline void query(int v,int l,int r,int x,int y)
{if(l==x && r==y){ans+=f[v];return;}int mid=(l+r)>>1;if(y<=mid) query(v<<1,l,mid,x,y); elseif(x>mid) query(v<<1|1,mid+1,r,x,y); else{query(v<<1,l,mid,x,mid);query(v<<1|1,mid+1,r,mid+1,y);}
}
int main()
{int k=read();while(k--){int n=read(),m=ans=0;memset(f,0,sizeof(f));for(int i=1;i<=n;i++)for(int j=1;j<=n;j++){int x=read();if(x) a[++m]=x;}insert(1,1,m,a[1]);for(int i=2;i<=m;i++){insert(1,1,m,a[i]);if(a[i]<m) query(1,1,m,a[i]+1,m);}if(ans&1) printf("You are destined to be single.\n");else printf("You still have a chance.\n");}return 0;
}

JZOJ 100030. 【NOIP2017提高A组模拟7.8】为了爱情相关推荐

  1. JZOJ 5372. 【NOIP2017提高A组模拟9.17】猫

    Description 信息组最近猫成灾了!隔壁物理组也拿猫没办法.信息组组长只好去请神刀手来帮他们消灭猫.信息组现在共有n 只猫(n 为正整数),编号为1 到n,站成了一个环,第i 只猫的左边是第i ...

  2. JZOJ 5392. 【NOIP2017提高A组模拟10.5】Lucky Transformation

    Description Input Output Sample Input 7 2 2343223 4 1 2234 Sample Output 2243233 2334 Data Constrain ...

  3. JZOJ 5371. 【NOIP2017提高A组模拟9.17】组合数问题

    Description 定义"组合数"S(n,m)代表将n 个不同的元素拆分成m 个非空集合的方案数.举个例子,将{1,2,3}拆分成2 个集合有({1},{2,3}),({2},{1,3}),({3 ...

  4. JZOJ 100047. 【NOIP2017提高A组模拟7.14】基因变异

    Description 21 世纪是生物学的世纪,以遗传与进化为代表的现代生物理论越来越多的 进入了我们的视野. 如同大家所熟知的,基因是遗传因子,它记录了生命的基本构造和性能. 因此生物进化与基因的 ...

  5. JZOJ 100041. 【NOIP2017提高A组模拟7.12】列车调度

    Description Input Output Sample Input Sample1: 3 1 2 3 Sample2: 9 1 3 2 4 8 6 9 5 7 Sample Output Sa ...

  6. JZOJ 100026. 【NOIP2017提高A组模拟7.7】图

    Description 有一个n个点n条边的有向图,每条边为< i,f(i),w(i)>,意思是i指向f(i)的边权为w(i)的边,现在小A想知道,对于每个点的si和mi. si:由i出发 ...

  7. JZOJ 5402. 【NOIP2017提高A组模拟10.8】God Knows

    Description Input Output Sample Input 5 3 1 4 5 2 3 4 3 4 1 Sample Output 5 Data Constraint Solution ...

  8. JZOJ 5405. 【NOIP2017提高A组模拟10.10】Permutation

    Description 你有一个长度为n 的排列P 与一个正整数K 你可以进行如下操作若干次使得排列的字典序尽量小 对于两个满足|i-j|>=K 且|Pi-Pj| = 1 的下标i 与j,交换P ...

  9. JZOJ 5404. 【NOIP2017提高A组模拟10.10】Graph

    Description 给定一张n个点m条边的无向图,每条边连接两个顶点,保证无重边自环,不保证连通 你想在这张图上进行若干次旅游,每次旅游可以任选一个点x作为起点,再走到一个与x 直接有边相连的点y ...

最新文章

  1. KVM虚拟化存储管理
  2. python基础代码-python基础代码
  3. python笔记:深拷贝与浅拷贝
  4. PYTHON——TCPUDP:Socket实现远程执行命令
  5. Java 的这些坑,你踩到了吗?
  6. Qt 中使用dll文件的舒服用法 generateDocumentation()函数 乱码解决
  7. 创建永远隐藏的隐藏帐号
  8. python基础教程-学习python有什么好的视频教程?
  9. python中pprint是干什么的_Python中的pprint折腾记
  10. 面试官问:请拿出一段体现你水平的代码时,该如何回答?
  11. Spring boot 自定义拦截器 获取 自定义注解 信息
  12. Android手机健康类APP市场分析
  13. 【OR】YALMIP 含参数规划
  14. 苹果鼠标滚轮驱动_苹果鼠标magic mouse在戴尔电脑Windows10系统上使用滚轮的方法...
  15. 微信h5棋牌以及下载类推广如何在微信中做好防封防屏蔽技术
  16. 咖啡种类、做法和历史来源
  17. Mac版OneNote同步报错E000006B ctctv
  18. 这是互联网变得越来越敌对的7种方式
  19. 通达信程序化交易接口使用步骤
  20. JAVA 实现发送邮件功能——邮箱验证码

热门文章

  1. 吴恩达 coursera AI 专项五第一课(上)总结+作业答案
  2. 浅析为什么要使用ST的固件库,谈谈我个人的工具思维!!!
  3. RedHat Enterprise Linux6.4 使用CentOS yum源
  4. 超详细的8psk调制解调通信系统讲解与仿真
  5. list::splice函数的用法与参数解释
  6. “error LNK2019: 无法解析的外部符号”的几种可能原因
  7. 使WEBBROWSER 可编辑
  8. linux-IO之copy的实现
  9. C++中的STRING数据 重载 = 和数组下标
  10. 修改应用程序图标(csdn貌似还没有直接从机器码谈起的文章)