
【每日一题】17.逆序对 (快速幂 + 思维)
发布日期:2021-05-09 00:13:28
浏览次数:18
分类:博客文章
本文共 701 字,大约阅读时间需要 2 分钟。
题目给的 \(n \le 1e18\) 范围很大,即时预处理数据都不行、只能直接计算答案
想到这以后先考虑 \(n = 2\) 的情况,只有前面 \(1\) 后面是 \(0\) 才存在逆序对;
\(n = 3\) 时前面为 \(1\) 后面为 \(0\) 的情况有 \(3\) 种,但对于剩下的一个位置来说,可选 \(0\) 或 \(1\) ,但这个位置的逆序数贡献会在下次枚举至此点的情况才会累加,而 0 没有贡献
当存在 \(n\) 个位置时,我们首先需要保证一对逆序对,即前面为 \(1\) 后面为 \(0\) 的情况,情况数:\(C_n^2\) 种
而对于其他 \(n-2\) 个地方则都存在 \(1\) 或 \(0\) 共有 \(2^{n-2}\)
所以最后答案为 \(C_n^2· 2^{n-2}\)
using ll = long long;const ll mod = 1e9 + 7;ll qpow(ll a, ll b) { ll ans = 1; for (; b > 0; b >>= 1, a = (a * a) % mod) if (b & 1) ans = (ans * a) % mod; return ans % mod;}void solve() { ll n; cin >> n; ll sum = (n % mod) * ((n - 1) % mod) / 2 % mod; ll p = qpow(2, n - 2); cout << (p * sum) % mod << "\n";}
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2025年04月06日 01时51分03秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
云计算之路-阿里云上:服务器CPU 100%问题是memcached连接数限制引起的
2021-05-09
上周热点回顾(3.26-4.1)
2021-05-09
上周热点回顾(6.25-7.1)
2021-05-09
【故障公告】10:30-10:45 左右 docker swarm 集群节点问题引发故障
2021-05-09
工作半年的思考
2021-05-09
不可思议的纯 CSS 滚动进度条效果
2021-05-09
【CSS进阶】伪元素的妙用--单标签之美
2021-05-09
惊闻NBC在奥运后放弃使用Silverlight
2021-05-09
IE下尚未实现错误的原因
2021-05-09
创建自己的Docker基础镜像
2021-05-09
Python 简明教程 --- 20,Python 类中的属性与方法
2021-05-09
KNN 算法-理论篇-如何给电影进行分类
2021-05-09
Spring Cloud第九篇 | 分布式服务跟踪Sleuth
2021-05-09
CODING 敏捷实战系列课第三讲:可视化业务分析
2021-05-09
工作动态尽在掌握 - 使用 CODING 度量团队效能
2021-05-09
CODING DevOps 深度解析系列第二课报名倒计时!
2021-05-09
数据结构第八节(图(下))
2021-05-09
基于Mustache实现sql拼接
2021-05-09
POJ 2260 Error Correction 模拟 贪心 简单题
2021-05-09
gRPC在 ASP.NET Core 中应用学习(一)
2021-05-09