JZOJ5922. 【NOIP2018模拟10.23】sequence
传送门
preface
这道题想了好久好久主要是菜,但其实并不是很难,大佬现在走还来得及。。。。
分析
这道题乍一看没什么想法,暴力50pts骗走溜掉。但其实那个特殊点提示很大。
对于第5个点的话,把式子化简出来就是i-l+1,i-l+2...就这个点而言,就可以开两个差分数组f,g,分别表示第i个位置的一次项系数和常数的差分。更新就变成了O(1)的。
再把差分扩展到20,也不过是个二十一阶差分嘛。然后,对于每i阶的差分来说,都要做i次才能得到真正的值,而多次差分的数列正好对应帕斯卡矩阵的r-l+1行/列,也就是杨辉三角的r-l+1列,也就是一个组合数。所以对于每个修改,在l的对应阶的差分数组上++,r+1的--,然后在r+1处向低阶减k个组合数从而保证其他阶不变。
最后更新答案时一定要从高阶往低阶更新,这样才能保证每i阶都差分了i次,注意逆元和月莫就可以了。
p.s.我用预处理帕斯卡矩阵挂了后三个点??如果你用帕斯卡矩阵过了的话请留个评论。
code
#include<bits/stdc++.h> #define ll long long #define maxn 500010 #define reg register #define mod 1000000007 using namespace std; inline void read(int &x) {x=0;reg char s=getchar();while(s<'0' || s>'9') s=getchar();while(s>='0' && s<='9') x=x*10+s-'0',s=getchar(); } inline void print(ll x) {if(x<0){putchar('-');x=-x;}if(x>9) print(x/10ll);putchar(x%10ll+'0'); } int n,m; ll a[maxn][25],b[maxn][25],inv[maxn]; void pre() {inv[1]=1;for(int i=2; i<=n; i++) inv[i]=(mod-mod/i)*inv[mod%i]%mod; } int main() {read(n),read(m);pre();reg int l,r,k;for(reg int i=1; i<=m; i++){read(l),read(r),read(k);a[l][k]=(a[l][k]+1)%mod;ll tmp=1,t=r-l;for(reg int j=k; ~j; j--){a[r+1][j]=(a[r+1][j]-tmp+mod)%mod;t++;tmp=tmp*t%mod*inv[t-(r-l)]%mod;}}for(reg int i=20; ~i; i--)for(reg int j=1; j<=n; j++)b[j][i]=((a[j][i]+b[j][i+1])%mod+b[j-1][i])%mod;for(reg int i=1; i<=n; i++) print(b[i][0]),putchar('\n');return 0; }
转载于:https://www.cnblogs.com/wCTSd/p/9846285.html
JZOJ5922. 【NOIP2018模拟10.23】sequence相关推荐
- JZOJ 5922. 【NOIP2018模拟10.23】sequence
Description 小 F 是一位 Hack 国的居民,他生活在一条长度为 n 的街道上,这个街道上总共有 n 个商店.每个商店里售卖着不同的 Hack 技能包,每个商店本身也会有个便利值.初始时 ...
- JZOJ 5924. 【NOIP2018模拟10.23】Queue
Description Hack 国的居民人人都是 OI 大师,Hometown 得知便赶紧来到 Hack 国学习.可想要进入 Hack 国并不是件容易的事情,首先就必须通过 Hack 国海关小 B ...
- JZOJ 5923. 【NOIP2018模拟10.23】Bomb
Description 常数国与 Hack 国近年来战火纷飞. 常数国共有 n 个城市,每两个城市之间均有一条交通线联通.如今常数国遭到 Hack 国的重创,岌岌可危.Hack 国国王小 K 决定轰炸 ...
- jzoj 5906. 【NOIP2018模拟10.15】传送门(树形dp)
5906. [NOIP2018模拟10.15]传送门 Description 8102年,Normalgod在GLaDOS的帮助下,研制出了传送枪.但GLaDOS想把传送枪据为己有,于是把Normal ...
- jzoj5904. 【NOIP2018模拟10.15】刺客信条(并查集)
5904. [NOIP2018模拟10.15]刺客信条 Description 故事发生在1486 年的意大利,Ezio 原本只是一个文艺复兴时期的贵族,后来因为家族成员受到圣殿骑士的杀害,决心成为一 ...
- jzoj5920. 【NOIP2018模拟10.21】风筝(dp,最长上升子序列)
5920. [NOIP2018模拟10.21]风筝 Description 当一阵风吹来,风筝飞上天空,为了你,而祈祷,而祝福,而感动-- Description oyiya 在 AK 了 IOI 之 ...
- JZOJ-senior-5937. 【NOIP2018模拟10.30】斩杀计划
Time Limits: 1000 ms Memory Limits: 262144 KB Description 众所周知,小J和小G是死对头,一天小G带领一群小弟找到了小J. 小G有n个小弟,第i ...
- JZOJ 5939. 【NOIP2018模拟10.30】阻击计划
Description 最近,小J发现小R和小Z之间的关系十分密切,心中十分嫉妒,为了拆散他们,小J经常扰乱他们一起玩耍的计划. 问题描述 小R和小Z打算在这个周末一起骑车在G国的城市看风景,G国的城 ...
- JZOJ 5938. 【NOIP2018模拟10.30】分离计划
Description 众所周知,小Z拥有者足以毁灭世界的力量,可惜他不能控制这份力量,小J和小Z的关系十分亲密,一天小J预感到了小Z体内的力量将要爆发. 这次爆发的力量比以往都要强大,以至于将小Z分 ...
最新文章
- python3 协程asyncio 调用步骤、阻塞和await、task任务、future对象 partial
- Hibernate Cascade 属性
- Docker轻量级管理工具Portainer
- ORA-00257 archiver error. 错误的处理方法
- 使用 fail2ban 防御 SSH 服务器的暴力破解
- OpenCV2中矩阵的归一化 normalize函数详解
- idea护眼主题全套设置
- 【数模】使用SPSS进行聚类分析
- Nginx系列:windows10系统下安装nginx的安装并配置!
- Redhat克隆及其配置
- 解除浏览器hao123首页
- 树莓派自己加内存条_拔掉MacBookPro,用8GB树莓派4工作一天,体验原来是这样的...
- Android:音乐播放器(3)—从播放列表到播放歌曲
- adb push命令
- 博途软件中多重背景块的建立_TIA博途软件中创建多重背景函数块
- 空间数据可视化地图绘制R语言可复现
- 灰度共生矩阵(GLCM)附Python代码
- 王者荣耀背景html,王者荣耀镜背景故事是什么?王者荣耀镜背景故事分享
- Android Manifest详解
- marven简介与使用