传送门

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相关推荐

  1. JZOJ 5922. 【NOIP2018模拟10.23】sequence

    Description 小 F 是一位 Hack 国的居民,他生活在一条长度为 n 的街道上,这个街道上总共有 n 个商店.每个商店里售卖着不同的 Hack 技能包,每个商店本身也会有个便利值.初始时 ...

  2. JZOJ 5924. 【NOIP2018模拟10.23】Queue

    Description Hack 国的居民人人都是 OI 大师,Hometown 得知便赶紧来到 Hack 国学习.可想要进入 Hack 国并不是件容易的事情,首先就必须通过 Hack 国海关小 B ...

  3. JZOJ 5923. 【NOIP2018模拟10.23】Bomb

    Description 常数国与 Hack 国近年来战火纷飞. 常数国共有 n 个城市,每两个城市之间均有一条交通线联通.如今常数国遭到 Hack 国的重创,岌岌可危.Hack 国国王小 K 决定轰炸 ...

  4. jzoj 5906. 【NOIP2018模拟10.15】传送门(树形dp)

    5906. [NOIP2018模拟10.15]传送门 Description 8102年,Normalgod在GLaDOS的帮助下,研制出了传送枪.但GLaDOS想把传送枪据为己有,于是把Normal ...

  5. jzoj5904. 【NOIP2018模拟10.15】刺客信条(并查集)

    5904. [NOIP2018模拟10.15]刺客信条 Description 故事发生在1486 年的意大利,Ezio 原本只是一个文艺复兴时期的贵族,后来因为家族成员受到圣殿骑士的杀害,决心成为一 ...

  6. jzoj5920. 【NOIP2018模拟10.21】风筝(dp,最长上升子序列)

    5920. [NOIP2018模拟10.21]风筝 Description 当一阵风吹来,风筝飞上天空,为了你,而祈祷,而祝福,而感动-- Description oyiya 在 AK 了 IOI 之 ...

  7. JZOJ-senior-5937. 【NOIP2018模拟10.30】斩杀计划

    Time Limits: 1000 ms Memory Limits: 262144 KB Description 众所周知,小J和小G是死对头,一天小G带领一群小弟找到了小J. 小G有n个小弟,第i ...

  8. JZOJ 5939. 【NOIP2018模拟10.30】阻击计划

    Description 最近,小J发现小R和小Z之间的关系十分密切,心中十分嫉妒,为了拆散他们,小J经常扰乱他们一起玩耍的计划. 问题描述 小R和小Z打算在这个周末一起骑车在G国的城市看风景,G国的城 ...

  9. JZOJ 5938. 【NOIP2018模拟10.30】分离计划

    Description 众所周知,小Z拥有者足以毁灭世界的力量,可惜他不能控制这份力量,小J和小Z的关系十分亲密,一天小J预感到了小Z体内的力量将要爆发. 这次爆发的力量比以往都要强大,以至于将小Z分 ...

最新文章

  1. python3 协程asyncio 调用步骤、阻塞和await、task任务、future对象 partial
  2. Hibernate Cascade 属性
  3. Docker轻量级管理工具Portainer
  4. ORA-00257 archiver error. 错误的处理方法
  5. 使用 fail2ban 防御 SSH 服务器的暴力破解
  6. OpenCV2中矩阵的归一化 normalize函数详解
  7. idea护眼主题全套设置
  8. 【数模】使用SPSS进行聚类分析
  9. Nginx系列:windows10系统下安装nginx的安装并配置!
  10. Redhat克隆及其配置
  11. 解除浏览器hao123首页
  12. 树莓派自己加内存条_拔掉MacBookPro,用8GB树莓派4工作一天,体验原来是这样的...
  13. Android:音乐播放器(3)—从播放列表到播放歌曲
  14. adb push命令
  15. 博途软件中多重背景块的建立_TIA博途软件中创建多重背景函数块
  16. 空间数据可视化地图绘制R语言可复现
  17. 灰度共生矩阵(GLCM)附Python代码
  18. 王者荣耀背景html,王者荣耀镜背景故事是什么?王者荣耀镜背景故事分享
  19. Android Manifest详解
  20. marven简介与使用

热门文章

  1. mysql监听地址的设定 —— 解决外部网址无法连接mysql的办法服务器
  2. operate XML file (Open,Insert)
  3. 使用google开源框架Exoplayer开发自定义播放器
  4. WPF自定义控件(四)の自定义控件
  5. 网络基础相关知识内容
  6. Airbnb JavaScript 编码风格指南(2018年最新版)
  7. Android开发各类常见错误解决方案
  8. Nginx Kafka数据生产接口
  9. LeetCode:Two Sum
  10. 【C/C++】C语言复习笔记-17种小算法-解决实际问题