I caught the sparkle in my mind and got AC1 ! It is a great great experience !

So the basic idea: permute on 3 consecutive items doesn't change the parity of the no. of inversions. Each permutation can only remove 0 or 2 inversions. So we say "YES" when no. of inversion % 2 = = 0. And we use MergeSort to count it in O(nlgn).

ret = 0
def merge(arr1, arr2):
global ret
if not arr1: return arr2
if not arr2: return arr1
for v2 in arr2:
arr1.append(v2)
i = len(arr1) - 1
while(i > 0):
if arr1[i] < arr1[i - 1]:
arr1[i - 1],arr1[i] = arr1[i], arr1[i - 1]
i -= 1
ret += 1
else:
break
return arr1 def mergeSort(arr):
n = len(arr)
if (n < 2): return arr
return merge(mergeSort(arr[:n//2]), mergeSort(arr[n//2:])) ###
t = int(input())
for _ in range(t):
n = int(input())
arr = list(map(int, input().split()))
ret = 0
mergeSort(arr)
print("YES" if ret % 2 == 0 else "NO")

最新文章

  1. svn那些错误
  2. 用户管理 之 Linux 用户管理工具介绍
  3. Qt编写自定义控件二动画按钮
  4. 加速chrome之Vimium快捷键
  5. PHP5.3以上版本没有libmysql.dll,以及由此带来的困扰
  6. 使用 Mono.Cecil 辅助 Unity3D 手游进行性能测试
  7. 来自朝鲜的问候 golang入坑系列
  8. SQL SERVER获取信息的方法
  9. Java Concurrency in Practice&mdash;&mdash;读书笔记
  10. 前端学习之jquery(二)
  11. 云栖大会day2 下午
  12. 11款插件让你的Chrome成为全世界最好用的浏览器|Chrome插件推荐
  13. Linux网络管理(一):网卡驱动与Linux内核
  14. 5+ App开发打包指南
  15. 在电脑上查看小米手机连接wifi时保存的密码
  16. python学习 day09 (3月14日)----函数
  17. Unity5.6之前版本VRTK插件基础交互
  18. npm - 部分常用命令(笔记)
  19. cocos代码研究(1)Node学习笔记
  20. 20155330 2016-2017-2 《Java程序设计》第七周学习总结

热门文章

  1. Linux运行级详解
  2. WPF:换肤
  3. 常用js,css文件统一加载方法,并在加载之后调用回调函数
  4. MVC5 + EF6 入门完整教程二:从前端的UI开始
  5. contextloaderlistener
  6. UNION并集运算
  7. 获取LocationProvider
  8. IntelliJ IDEA 使用总结
  9. SparkSQL之旅
  10. powershell玩转sqlite数据库