Codeforces 407C--Curious Array
比赛时毫无想法.jpg
正确做法是可以看到k的范围很小,联想到组合数的递推,c(n,m)=c(n-1,m-1)+c(n-1,m),题目中加的东西就是固定了m<=k,那么可以考虑用差分,将一次加拆成k个差分,即开一个n*k数组,在第0行l列加Ck,k,1行l+1列加Ck,k-1这样直到k=0或者延伸到了r,之后再在r+1列的每一行差分减去即可,最后维护一个二维前缀和。(这里前缀和注意一定要上到下,下到上贡献会额外计算)
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const ll mod=1e9+7;
const int N=1e5+1000;
const int M=110;void read(int &x)
{char c=getchar();x=0;bool f=0;while(!isdigit(c))f|=(c=='-'),c=getchar();while(isdigit(c))x=x*10+c-48,c=getchar();if(f)x=-x;
}int n,m,a[N];
ll C[N][M],cf[N][M];void Ad(ll &x,ll y)
{x=(x+y)%mod;}
void Dw(ll &x,ll y)
{x=(x-y+mod)%mod;}int main()
{int l,r,k;ll nw,tp;read(n),read(m);for(int i=1;i<=n;i++)read(a[i]);C[0][0]=1;for(int i=1;i<=100200;i++){C[i][0]=1;for(int j=1;j<=105;j++)C[i][j]=(C[i-1][j-1]+C[i-1][j])%mod;}for(int i=1;i<=m;i++){read(l),read(r),read(k);for(int j=0;j<=k&&l+j<=r;j++)Ad(cf[l+j][j],C[k][k-j]);for(int j=0;j<=k&&l+j<=r;j++)Dw(cf[r+1][j],C[r-l-j+k][k-j]);}for(int j=100;j>=0;j--){for(int i=1;i<=n;i++){Ad(cf[i][j],cf[i][j+1]);Ad(cf[i][j],cf[i-1][j]);}}for(int i=1;i<=n;i++)printf("%lld ",(cf[i][0]+a[i])%mod);
}
Codeforces 407C--Curious Array相关推荐
- Codeforces 1054D Changing Array
Codeforces 1054D Changing Array 做法:给定一个序列,每个数可以把在2进制k位下取反,也可以不变,在改变后,这个序列异或和不为0的区间的个数.考虑如何求出尽可能少的异或为 ...
- CodeForces - 1610B Kalindrome Array
B. Kalindrome Array time limit per test1 second memory limit per test256 megabytes An array [b1,b2,- ...
- codeforces EDU suffix array
本文以codeforces EDU suffix array为资料 content introdcution suffix array height array lcp problems & ...
- [codeforces 1343B] Balanced Array 奇+奇=偶,奇+偶=奇,偶+偶=偶
Codeforces Round #636 (Div. 3) 比赛人数12253 [codeforces 1343B] Balanced Array 奇+奇=偶,奇+偶=奇,偶+偶=偶 总 ...
- CodeForces - 1539F Strange Array(线段树区间合并)
题目链接:点击查看 题目大意:给出一个长度为 nnn 的序列,规定位置 iii 的贡献是:设 x=a[i]x=a[i]x=a[i],选择一个包含 iii 的区间 [l,r][l,r][l,r],将其中 ...
- CodeForces - 1534E Lost Array(bfs+交互)
题目链接:点击查看 题目大意:初始时给出一个长度为 nnn 的序列,每次可以询问 kkk 个位置的异或和,现在需要以最少的询问获得整个序列的异或和 题目分析:因为是异或,我们只关心每个位置被询问的次数 ...
- codeforces 1367B - Even Array
B. Even Array time limit per test2 seconds memory limit per test256 megabytes inputstandard input ou ...
- 【Codeforces】808D Array Division(前后两部分和相等)
http://codeforces.com/contest/808/problem/D 给你一个数组,问:是否可以通过移动一个数字的位置,求只能移动一次,使得这个数组前后部分的和相等,前后部分不一定等 ...
- Codeforces 494D Upgrading Array
http://codeforces.com/contest/494/problem/D 题意:给一个数组,和一个坏质数集合,可以无数次地让1到i这些所有数字除以他们的gcd,然后要求Σf(a[i])的 ...
- CodeForces - 817D Imbalanced Array(单调栈)
题目链接:点击查看 题目大意:给出一个长度为 nnn 的序列,求出所有子区间的最大值与最小值之差的和 题目分析:不难看出最大值和最小值之差的和可以拆开,拆成最大值之和与最小值之和之差,现在问题转换为如 ...
最新文章
- bzoj 4753: [Jsoi2016]最佳团体
- docker oom 排查过程
- 2021牛客暑期多校训练营2
- docker下的Mysql镜像的使用方法
- 20165203 实验一 Java开发环境的熟悉
- mysql+修改数据恢复_MySQL 误操作后数据恢复(update,delete忘加where条件)
- Java ClassLoader基础及加载不同依赖 Jar 中的公共类
- arcgis建立拓扑关系
- 能量谱 matlab,频谱、幅度谱、功率谱和能量谱含义
- tfidf原理及实现
- 国内疫情统计及预测分析系统
- ECMWF气象数据相关介绍
- 高性能网站建设进阶指南:Web开发者性能优化最佳实践 pdf扫描版
- JS 异步编程的解决方案,以及回调地狱的解决方案
- 无人驾驶出租车车队长沙惊艳亮相,BIE保驾护航
- 第三周实验题目2——robots协议
- gif动态图怎么制作?gif动态图在线制作一键搞定
- FFmpeg封装ADTS为MP4
- 关于编程学习的心态与方法
- 三年程序员的实战开发经验之谈-做人做事建议
热门文章
- web前端开发培训学院,前端校招面试题及解析大全,值得收藏!
- ESXi创建的虚机只能ping通自己IP无法ping通网关的问题排查
- 51单片机计数器c语言编程,求一个 89C51 简易计算器的c语言程序 只要加减乘除就行!...
- 18套桁架机械手双轴/图纸龙门架机器人SolidWorks3D模型设计图纸
- found 1 high severity vulnerability in 1481 scanned packages run `npm audit fix` to fix 1 of them.
- ajax php 源码,ThinkPHP Ajax 实例源代码_ThinkPHP教程
- 快速云:云服务器四种部署模式之私有云
- linux 下 批量添加后缀名,Linux下批量修改后缀名
- Codeblock 美化字体和主题
- FM860-GI工业级摄像头安装驱动