题意:

一开始有一个长度为n的原排列a,
一次操作随机选择两个不同位置的数a(i)和a(j),然后交换。
Petr会进行3n次操作,Alex会进行7n+1次操作。

现在给出结果序列,要求判断结果序列是经过谁的操作得到的。

数据范围:1e3<=n<=1e6

解法:

因为是排列,每个数都不同,
所以每次交换一定会使得逆序对数量的奇偶性变化。

3n和7n+1的奇偶性一定不同,因此序列的逆序对数量奇偶性也一定不同。
那么直接计算出给定排列的奇偶性就能判断答案了。

code:

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int maxm=1e6+5;
int a[maxm];
int n;
struct BIT{int c[maxm];int lowbit(int i){return i&-i;}void add(int i,int t){while(i<maxm){c[i]+=t,i+=lowbit(i);}}int ask(int i){int ans=0;while(i){ans+=c[i],i-=lowbit(i);}return ans;}
}T;
signed main(){scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&a[i]);}ll ans=0;for(int i=1;i<=n;i++){T.add(a[i],1);ans+=i-T.ask(a[i]);}if(n%2==0&&ans%2==0){puts("Petr");}else if(n%2==1&&ans%2==1){puts("Petr");}else{puts("Um_nik");}return 0;
}

Codeforces987 E. Petr and Permutations(思维+逆序对)相关推荐

  1. E. String Reversal(思维+逆序对)详解

    https://codeforces.com/contest/1430/problem/E 题意:交换相邻的字母使得字符串翻转的最小次数. 最近碰到了几道逆序对的题,有个比较明显的特征是交换相邻的数. ...

  2. CF986B Petr and Permutations 思维

    每次交换:逆序对的数量+1或者-1: 假设最后逆序对数量为 sum; ①x+y=3n; ②x-y=sum; -> 3n+sum为偶数: 所以 n 和 sum 必须奇偶一样: #include&l ...

  3. What Goes Up Must Come Down(思维+逆序对构造LIS山峰)

    https://ac.nowcoder.com/acm/contest/7831/F 考虑题意:对于每一个数来说,它最终要不左边的数全比它小,要不右边的数全比他小. 交换相邻的两个数,其他数字的相对位 ...

  4. 108. 奇数码问题【思维 / 逆序对】

    n为奇数,左右交换不改变逆序对数个数,上下交换不改变逆序对奇偶性. 结论就是,将其转化成1维,将0去除掉,求逆序对的数量,看这两个的逆序对的奇偶性是否相同即可. #include<bits/st ...

  5. 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)的子 ...

  6. CodeForces - 987E Petr and Permutations(树状数组+逆序对定理)

    题目链接:点击查看 题目大意:给出一个长度为 n 的序列,可能打乱过 3 * n 次,也可能打乱过 7 * n + 1 次,问到底打乱过多少次 题目分析:首先看出,3 * n 和 7 * n + 1 ...

  7. 期望dp ---- B. Tree Array 思维+期望dp 逆序对期望数

    题目大意 题目大意: n(n≤200)n(n\leq200)n(n≤200)个节点的树.初始的时候,等概率随机选择一个点标记,接来随机选择一个与标记点相连的未标记点来标记,直到所有的点都被标记.根据点 ...

  8. 【Codeforces 986B】Petr and Permutations

    [链接] 我是链接,点我呀:) [题意] 题意 [题解] n为奇数时3n和7n+1奇偶性不同 n为偶数时也是如此 然后交换任意一对数 逆序对的对数的奇偶性会发生改变一次 求出逆序对 对n讨论得出答案. ...

  9. 左神小和问题逆序对问题面试

    归并排序的扩展问题 --先了解数据结构之归并排序,更容易理解以下的问题. 小和问题和逆序对问题. 在一个数组中,每一个数左边比当前数小的数累加起来,叫做这个数组的小和.在一个数组中,左边的数如果比右边 ...

最新文章

  1. php 输出任意一个数,php 生成任意范围的水仙花数
  2. 间谍新高度:航空航天探测器被当作间谍武器
  3. The 2018 ACM-ICPC Asia Qingdao Regional Contest
  4. android 自定义 child,Android自定义View
  5. SAP UI5 初学者教程之五:视图控制器初探 试读版
  6. 老男孩python课后作业_老男孩python基础知识练习题(一)中
  7. 为什么复制粘贴格式总是出错_想把图片转换成pdf格式怎么做?你找对方法了吗...
  8. 如何开发与设计一个爆款小游戏
  9. ArcGIS几种数据格式
  10. Cisco Packet Tracer思科模拟器单臂路由的配置
  11. java 图片压缩100k_Java 图片压缩至指定大小
  12. mysql8不区分大小写_不看不知道,这年头学个字母都有这么多门道(附学习资源)...
  13. python羊车门问题
  14. 发表16篇Nature、14篇Science!这位顶尖学者告诉你论文十大诀窍
  15. 数模常用查找数据网址大全
  16. 海康威视摄像头存储到电脑硬盘
  17. 必测的支付漏洞(一)——使用fiddler篡改支付金额
  18. 微信公众号开发教程[010]-消息管理-获取公众号的自动回复规则
  19. 走在边缘地带上的百度,还是差了那么一点!
  20. ElasticSearch全文搜索引擎

热门文章

  1. 页面收录和关键词选取
  2. 王者荣耀刷金币脚本,买英雄你还愁么?
  3. 亲爱的老狼-display的使用
  4. python列表的方法详解
  5. 美国AMC数学竞赛的含金量如何?
  6. xshow-2. 使用HTML 5 Boilerplate构建前端
  7. Yii2 中添加全局函数
  8. JPA 5.映射关联关系
  9. 无人驾驶工业车辆企业「未来机器人」完成数亿元融资
  10. 中间件是什么,常用的中间件有哪些(*)