比赛时毫无想法.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相关推荐

  1. Codeforces 1054D Changing Array

    Codeforces 1054D Changing Array 做法:给定一个序列,每个数可以把在2进制k位下取反,也可以不变,在改变后,这个序列异或和不为0的区间的个数.考虑如何求出尽可能少的异或为 ...

  2. CodeForces - 1610B Kalindrome Array

    B. Kalindrome Array time limit per test1 second memory limit per test256 megabytes An array [b1,b2,- ...

  3. codeforces EDU suffix array

    本文以codeforces EDU suffix array为资料 content introdcution suffix array height array lcp problems & ...

  4. [codeforces 1343B] Balanced Array 奇+奇=偶,奇+偶=奇,偶+偶=偶

    Codeforces Round #636 (Div. 3)   比赛人数12253 [codeforces 1343B]   Balanced Array   奇+奇=偶,奇+偶=奇,偶+偶=偶 总 ...

  5. CodeForces - 1539F Strange Array(线段树区间合并)

    题目链接:点击查看 题目大意:给出一个长度为 nnn 的序列,规定位置 iii 的贡献是:设 x=a[i]x=a[i]x=a[i],选择一个包含 iii 的区间 [l,r][l,r][l,r],将其中 ...

  6. CodeForces - 1534E Lost Array(bfs+交互)

    题目链接:点击查看 题目大意:初始时给出一个长度为 nnn 的序列,每次可以询问 kkk 个位置的异或和,现在需要以最少的询问获得整个序列的异或和 题目分析:因为是异或,我们只关心每个位置被询问的次数 ...

  7. codeforces 1367B - Even Array

    B. Even Array time limit per test2 seconds memory limit per test256 megabytes inputstandard input ou ...

  8. 【Codeforces】808D Array Division(前后两部分和相等)

    http://codeforces.com/contest/808/problem/D 给你一个数组,问:是否可以通过移动一个数字的位置,求只能移动一次,使得这个数组前后部分的和相等,前后部分不一定等 ...

  9. Codeforces 494D Upgrading Array

    http://codeforces.com/contest/494/problem/D 题意:给一个数组,和一个坏质数集合,可以无数次地让1到i这些所有数字除以他们的gcd,然后要求Σf(a[i])的 ...

  10. CodeForces - 817D Imbalanced Array(单调栈)

    题目链接:点击查看 题目大意:给出一个长度为 nnn 的序列,求出所有子区间的最大值与最小值之差的和 题目分析:不难看出最大值和最小值之差的和可以拆开,拆成最大值之和与最小值之和之差,现在问题转换为如 ...

最新文章

  1. bzoj 4753: [Jsoi2016]最佳团体
  2. docker oom 排查过程
  3. 2021牛客暑期多校训练营2
  4. docker下的Mysql镜像的使用方法
  5. 20165203 实验一 Java开发环境的熟悉
  6. mysql+修改数据恢复_MySQL 误操作后数据恢复(update,delete忘加where条件)
  7. Java ClassLoader基础及加载不同依赖 Jar 中的公共类
  8. arcgis建立拓扑关系
  9. 能量谱 matlab,频谱、幅度谱、功率谱和能量谱含义
  10. tfidf原理及实现
  11. 国内疫情统计及预测分析系统
  12. ECMWF气象数据相关介绍
  13. 高性能网站建设进阶指南:Web开发者性能优化最佳实践 pdf扫描版
  14. JS 异步编程的解决方案,以及回调地狱的解决方案
  15. 无人驾驶出租车车队长沙惊艳亮相,BIE保驾护航
  16. 第三周实验题目2——robots协议
  17. gif动态图怎么制作?gif动态图在线制作一键搞定
  18. FFmpeg封装ADTS为MP4
  19. 关于编程学习的心态与方法
  20. 三年程序员的实战开发经验之谈-做人做事建议

热门文章

  1. web前端开发培训学院,前端校招面试题及解析大全,值得收藏!
  2. ESXi创建的虚机只能ping通自己IP无法ping通网关的问题排查
  3. 51单片机计数器c语言编程,求一个 89C51 简易计算器的c语言程序 只要加减乘除就行!...
  4. 18套桁架机械手双轴/图纸龙门架机器人SolidWorks3D模型设计图纸
  5. found 1 high severity vulnerability in 1481 scanned packages run `npm audit fix` to fix 1 of them.
  6. ajax php 源码,ThinkPHP Ajax 实例源代码_ThinkPHP教程
  7. 快速云:云服务器四种部署模式之私有云
  8. linux 下 批量添加后缀名,Linux下批量修改后缀名
  9. Codeblock 美化字体和主题
  10. FM860-GI工业级摄像头安装驱动