题意:初始有一个序列[1,2,...N],一次操作可以将任意两个位置的值互换,Petr做3*n次操作;Alxe做7*n+1次操作。给出最后生成的新序列,问是由谁操作得到的。

分析:一个序列的状态可以归为:由原序列操作奇数次得到(简称奇序列);和操作偶数次(偶序列)得到。显然奇序列中,逆序对的个数为奇数;偶序列中,逆序对的个数为偶。当n为奇数时,3*n为奇,7*n+1为偶;n为偶数时正好相反。

用树状数组或归并排序求逆序对即可。

#include<iostream>
#include<stdio.h>
#include<cstring>
#include<stack>
#include<algorithm>
#include<vector>
using namespace std;
typedef long long LL;
const int maxn = 1e6+;
LL bit[maxn];
int n;
inline int lowbit(int x){return x&(-x);}
void add(int pos,LL val){
for(int i=pos;i<=n;i+=lowbit(i)){
bit[i] +=val;
}
}
LL sum(int pos){
LL res=;
for(int i=pos;i;i-=lowbit(i)) res+=bit[i];
return res;
} int main()
{
#ifndef ONLINE_JUDGE
freopen("in.txt","r",stdin);
freopen("out.txt","w",stdout);
#endif
while(scanf("%d",&n)==){
memset(bit,,sizeof(bit));
LL res=;
for(int i=;i<=n;++i){
LL val; scanf("%lld",&val);
add(val,);
res+= i-sum(val);
}
if(res%==n%) printf("Petr\n");
else printf("Um_nik\n");
}
return ;
}

最新文章

  1. Sort简单排序
  2. Oracle循环查询结果集 自定义函数
  3. PHP一句话过狗、卫士、D盾等免杀思路!
  4. 9 DelayQueueEntry 延时队列节点类——Live555源码阅读(一)基本组件类
  5. Bibtex使用方法
  6. Android 代理服务器为全网提供代理
  7. 20145207 《Java程序设计》第5周学习总结
  8. jmeter 远程测试
  9. iOS:测试机添加
  10. win7将 esc与 capslock 互换
  11. Android百度地图开发04之POI检索
  12. OSSEC配置文件ossec.conf中添加mysql服务
  13. 在Raspberry Pi上安装XBMC
  14. C语言默认參数值的实现
  15. Python并发实践_03_并发实战之一
  16. TypeScript笔记 5--变量声明(解构和展开)
  17. Linux查看系统、核数、CPU、位数
  18. Linux 获取网关地址
  19. 安装pywin32模块
  20. 【GO基础】神奇的iota特殊常量

热门文章

  1. Windows的静态库使用步骤
  2. JZOJ.5234【NOIP2017模拟8.7】外星人的路径
  3. tfs+git
  4. 【BZOJ4627】[BeiJing2016]回转寿司 SBT
  5. storyboard设置navigation controller
  6. VMware虚拟机NAT(地址转换模式)
  7. 160627、你想知道的关于JavaScript作用域的一切
  8. jquery实现滚动到页面底部时无限加载内容的代码
  9. pip与apt-get
  10. SOE不能进入断点调试