C. Cyclic Permutations

题目大意

给你 1~n n个数。问有几种排列可以满足:

对于每个 1≤i≤n,找到最大的 j,使得 1≤j<i 和 pj>pi,并在节点 i 和节点 j 之间添加一条无向边
对于每个 1≤i≤n,找到最小的 j,使得 i<j≤n 和 pj>pi,并在节点 i 和节点 j 之间添加一条无向边

题目分析

pipk是离pj最近的并且大于pj的数。则在丹凤序列中不会出现此类情况,也就是说所有单峰序列都是不合法的 。我们用全排列减去单峰排列数即可。

对于含 n个不同数的全排列为n的阶乘n!

而对于含 n个不同数的单峰序列数为2^(n-1)

  • 峰值一定为 n
  • 其他值均可以分布在n两侧中的任何一侧

综上,我们答案可以由n! - 2^(n - 1)得到

code

#include<bits/stdc++.h>using namespace std;typedef long long ll;
const int mod = 1e9 + 7;int n, m, k, t;int qmi(int a, int k, int p)
{int res = 1;while(k){if(k &1)  res = (ll)res * a % p;k >>= 1;a = (ll)a * a % p;}return res;
}int main()
{cin >> n;int res = 1;for (int i = n; i >= 1; --i)res = ((ll)res * i) % mod;res = (((ll)res - qmi(2, n - 1, mod)) % mod + mod) % mod;cout << res << endl;return 0;
}

C. Cyclic Permutations相关推荐

  1. Cyclic Permutations

    Cyclic Permutations 题意 思路 对于每个 i i i,如果存在这样的 q q q和 w w w q q q 是 i i i 左 边 第 一 个 比 a i a_i ai​ 大 的 ...

  2. C. Cyclic Permutations(组合数学+单峰序列)

    Problem - 1391C - Codeforces 题意: 一个长度为n的排列是由1到n的n个不同的整数按任意顺序组成的数组.例如,[2,3,1,5,4]是一个排列组合,但[1,2,2]不是排列 ...

  3. Codeforces Round #663 (Div. 2)

    2020/8/9晚上断网了,本来不想打就顺便看看题目,发现能做几个,然后就交了.(做完1.2两题才敢交)最终做了3个题tcl. A - Suborrays 脑筋急转弯题目.位运算OR运算结果只会变大不 ...

  4. Codeforces Round #663 (Div. 2) (CD)

    C. Cyclic Permutations 思路:全排列减去单峰排列即为答案. 单峰排列即:峰左边下标的左边没有比它大的,峰右边的下标的右边没有比它大的. 单峰排列个数: 2 n − 1 2^{n- ...

  5. CF 1093 E. Intersection of Permutations

    E. Intersection of Permutations 链接 题意: 给定两个序列,询问第一个排列的[l1,r1]和第二个排列[l2,r2]中有多少个共同的数,支持在第二个排列中交换两个数. ...

  6. leetCode 46. Permutations 回溯问题 | Medium

    46. Permutations(全排列问题--回溯问题经典) Given a collection of distinct numbers, return all possible permutat ...

  7. 47. Permutations II

    Given a collection of numbers that might contain duplicates, return all possible unique permutations ...

  8. 关于AXI DMA CYCLIC 调试过程中的问题

    cyclic 必须是两个以上的BD 块儿 而且最后的BD 不能是BD 连中的块儿 终于找到 cyclic 不行的原因了

  9. Permutations I II leetcode

    Permutations I Given a collection of distinct numbers, return all possible permutations. For example ...

最新文章

  1. 利用集群技术实现Web服务器的负载均衡
  2. IOS本地日志记录解决方案
  3. 九度OJ最短摘要的生成
  4. Delphi TXLSReadWriteII导出Excel
  5. .net mysql 序号_MYSQL如何自动为查询数据的结果编上序号详解
  6. 用户体验的13条金科玉律
  7. celery java_Celery(分布式任务队列) 的使用方法总结
  8. Linux下删除mysql安装包相关内容信息
  9. R语言处理数据——画图时加大标题
  10. 【PS】免费 使用PS批量将pdf转换成图片 pdf转图片 pdf转jpg pdf转png
  11. java arraylist.add(),Java ArrayList add()方法与示例
  12. 国仁老猫:抖音影视剪辑5种赚钱方法、18个素材网站、8.0剪辑方法防判搬运(建议收藏)
  13. 福建云服务器虚拟,云服务器
  14. 一个小时学会Maven(参考资料)
  15. 【智能卡】智能卡之ISO7816
  16. 我可以用计算机做图吗,【我用Word和excel画图分别怎么制作】电脑excle怎样制作画图...
  17. phpexcel的读取和导出
  18. 转:拥抱挣扎:创造组织的同时,也创造了崭新的自我
  19. 做计算机视觉对电脑配置的要求,计算机视觉环境配置
  20. 【10道大厂必考性能优化题】陶辉老师

热门文章

  1. .for 与.fori区别
  2. Codec2入门:解码组件
  3. 通过PPM计算MHz晶振频率偏差和32.768KHz晶振计时公式
  4. 2015-2016-1(实变函数56)
  5. 【Numpy】numpy.maximum,取绝对值
  6. 毕业设计日志(13)
  7. 1131. Subway Map (30)-PAT甲级真题 (DFS or 堆优化dij or SPFA)
  8. Tensorflow 2.5 model.evaluate报错Invalid argument: required broadcastable shapes at loc(unknown)
  9. java 模仿https 通信过程
  10. 怎样理解光电二极管的参数