P8474 「GLR-R3」立春
简要题意
\(\tau(\sigma)\) 表示排列 \(\sigma\) 的逆序对个数,求:
\]
\(1 \le n \le 10^{7}\)
思路
暴力序曲
首先先打一个暴力,思路是枚举全排列,然后用一个树状数组求以下逆序对。
时间复杂度 \(O((n \log n)n!)\) 请勿提交哦。
然后看看前几个 \(n\) 是多少。在我的暴力中,前 \(5\) 个 \(n\) 时,应该是:
1,3,21,315,9765
OEIS做法(非正经)
看到这种题目,你一定想到了 OEIS,它告诉你,编号是 A005329
我们不看英文描述,翻到下面,有一个章节叫做 MATHEMATICA,这是一个叫做 Mathmatica 的编程语言的源代码,第一个比较好懂,是:
a[0] = 1; a[n_] := a[n] = (2^n-1)*a[n-1]; a /@ Range[0, 14] (* Jean-François Alcover, Apr 22 2011 *)
相信大家都能看懂,它是一个 \(O(n\log n)\) 递推(默认用了快速幂)
\]
优化
如果你写了一个 \(O(n\log n)\) 的算法,准备提交,你会喜提 \(70\) 分(考场亲测)
(也有可能是人傻常数大吧)
我们考虑优化。
对于式子 \(2^{n}\),我们也可以写一个递推来做到 \(O(1)\) 查询:
\]
然后记得取模。
代码
#include <bits/stdc++.h>
#define int long long
using namespace std;
int a[10000007];
const int mod=1e9+7;
int n;
int poww[10000005];
signed main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);cout.tie(nullptr);
cin>>n;
a[0]=1;
poww[0]=1;
for(int i=1;i<=n;i++){
poww[i]=(poww[i-1]*2%mod+mod)%mod;
a[i]=((poww[i]-1)*a[i-1]%mod+mod)%mod;
}
cout<<a[n]<<'\n';
return 0;
}
P8474 「GLR-R3」立春的更多相关文章
- [LOJ 2022]「AHOI / HNOI2017」队长快跑
[LOJ 2022]「AHOI / HNOI2017」队长快跑 链接 链接 题解 不难看出,除了影响到起点和终点的射线以外,射线的角度没有意义,因为如果一定要从该射线的射出一侧过去,必然会撞到射线 因 ...
- 前端构建工具之gulp(一)「图片压缩」
前端构建工具之gulp(一)「图片压缩」 已经很久没有写过博客了,现下终于事情少了,开始写博吧 今天网站要做一些优化:图片压缩,资源合并等 以前一直使用百度的FIS工具,但是FIS还没有提供图片压缩的 ...
- fir.im Weekly - 如何打造 Github 「爆款」开源项目
最近 Android 转用 Swift 的传闻甚嚣尘上,Swift 的 Github 主页上已经有了一次 merge>>「Port to Android」,让我们对 Swift 的想象又多 ...
- 更新日志 - fir.im「高级统计」功能上线
距离 2016 年到来只剩 10 个日夜,fir.im 也准备了一些新鲜的东西,比如「高级统计」功能和「跳转应用商店」功能,帮助你更好地管理.优化应用,欢迎大家试用反馈:) 新增高级统计功能 这次更新 ...
- Notepad++ 开启「切分窗口」同时检视、比对两份文件
Notepad++ 是个相当好用的免费纯文本编辑器,除了内建的功能相当多之外,也支持外挂模块的方式扩充各方面的应用.以前我都用 UltraEdit 跟 Emeditor,后来都改用免费的 Notepa ...
- 「zigbee - 1」工欲善其事必先利其器 - IAR for 8051 IDE customization
最近在实验室做一些 Zigbee 相关的事情,然而一直没在博客上记录啥东西,也不像原来在公司有动力在 Confluence wiki 上扯东扯西.直到前些阵子,跑到 feibit 论坛上(国内较大的一 ...
- 「C语言」文件的概念与简单数据流的读写函数
写完「C语言」单链表/双向链表的建立/遍历/插入/删除 后,如何将内存中的链表信息及时的保存到文件中,又能够及时的从文件中读取出来进行处理,便需要用到”文件“的相关知识点进行文件的输入.输出. 其实, ...
- 「C语言」Windows+EclipseCDT下的C语言开发环境准备
之前写过一篇 「C语言」在Windows平台搭建C语言开发环境的多种方式 ,讨论了如何在Windows下用DEV C++.EclipseCDT.VisualStudio.Sublime Test.Cl ...
- 如何对抗 WhatsApp「蓝色双勾」-- 3 个方法让你偷偷看讯息
WhatsApp 强制推出新功能「蓝色双勾 (✔✔)」 ,让对方知道你已经看过讯息.一众用户反应极大,因为以后不能再藉口说未看到讯息而不回覆.究竟以后 WhatsApp 是否真的「更难用」? 幸好还有 ...
- FileUpload控件「批次上传 / 多档案同时上传」的范例--以「流水号」产生「变量名称」
原文出處 http://www.dotblogs.com.tw/mis2000lab/archive/2013/08/19/multiple_fileupload_asp_net_20130819. ...
随机推荐
- 上传数据、下载模板文件解决方案(前端:antd;后端:.Net Core WebAPI)
一.Excel 模板下载 通过静态文件下载. 将模板文件放在根目录的 public 文件夹下备用. 下载事件方法如下:(通过临时生成一个 a 标签,触发后再移除) downLoadExcelModel ...
- JS 学习笔记 (六) 函数式编程
1.函数闭包 1.1 概述 JavaScript采用词法作用域,函数的执行依赖于变量作用域,这个作用域是在函数定义时决定的,而不是函数调用时决定的. 为了实现这种词法作用域,JavaScript函数对 ...
- Oracle性能优化之内存管理
Oracle实例中的内存使用分为两类:程序全局区(program global area, PGA)和系统全局区(system global area, SGA).前者专门供每个会话使用,后者由所有O ...
- 从0到1搭建redis6.0.7续更~
"心有所向,日复一日,必有精进" 前言: 想必大家看完我之前写的搭建redis服务器,大家都已经把redis搭建起来了吧如果没有搭建起来的小可爱请移步这里哦从0到1搭建redis6 ...
- jupyter notebook使用相对路径的方法
在当前文件夹路径下开启jupyter notebook 这样就可以直接使用相对路径了,而不用管绝对路径这一令人心烦的问题 首先需要重新安装PowerShell 下载链接:https://cloud.1 ...
- vue 过滤器时间格式化
1.导入了一个moment.js插件,里面封装了格式化时间的方法 ①:插件的链接:https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/mom ...
- MYSQL5.7 保姆级安装教程
现在要是说mysql是什么东西,就不礼貌了 虽然有的同学没有进行系统的深入学习,但应该也有个基本概念 [不了解也没关系,后续会进行mysql专栏讲解]简单来说,存储数据的 学习mysql,就要先安装它 ...
- 专业的C头文件设计和重构指南
头文件设计要点: 1. 头文件注释 2. guard define 3. 尽量不要在头文件中暴露数据结构 4. 要自包含,保证头文件独立编译和功能正确 5. 函数声明前加XXX_API利于拓展 6. ...
- 基于python的数学建模---最小二乘拟合
import numpy as np import matplotlib.pyplot as plt from scipy.optimize import leastsq from matplotli ...
- ArcObjects SDK开发 007 自定义App-Command-Tool框架
1.为什么再设计一套App-Command-Tool框架 为什么我们要自己再设计一套App-Command框架,而不直接使用AO API中的AxControl-ICommand这套已经非常好的框架呢? ...