codeforces 407C Curious Array

UPD: 我觉得这个做法比较好理解啊


参考题解:https://www.cnblogs.com/ChopsticksAN/p/4908377.html

1、杨辉三角可以由多维前缀和求得。

2、“搭顺风车”的思想。

3、// 右端点减去的那个数可以用组合数学的方法思考。

#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define mp make_pair
#define pb push_back
#define rep(i, a, b) for(int i=(a); i<(b); i++)
#define sz(x) (int)x.size()
#define de(x) cout<< #x<<" = "<<x<<endl
#define dd(x) cout<< #x<<" = "<<x<<" "
typedef long long ll;
typedef pair<int, int> pii;
typedef vector<int> vi; const int N=101010, P=1e9+7; int n,m;
int a[N];
ll b[111][N], jc[N], inv[N]; ll kpow(ll a,ll b) {
ll res=1;
while(b) {
if(b&1) res=res*a%P;
a=a*a%P;
b>>=1;
}
return res;
} ll upd(ll &a, ll b) {
a=(a+b)%P;
if(a<0) a+=P;
} void init() {
jc[0]=1;
rep(i,1,N) jc[i]=jc[i-1]*i%P;
inv[N-1]=kpow(jc[N-1], P-2);
for(int i=N-2;~i;--i) inv[i]=inv[i+1]*(i+1)%P;
} ll C(int n,int m) {
return jc[n]*inv[m]%P*inv[n-m]%P;
} int main() {
init();
while(~scanf("%d%d",&n,&m)) {
///init
memset(b,0,sizeof(b));
///read
rep(i,1,n+1) scanf("%d",a+i);
int ma=0;
rep(i,0,m) {
int l,r,k;scanf("%d%d%d",&l,&r,&k);
ma=max(ma, k);
upd(b[k+1][l], 1);
rep(j,1,k+2) upd(b[j][r+1], -C(k-j+r-l+1, k+1-j));
}
///solve
for(int i=ma;~i;--i) {
ll pre=0;
rep(j,1,n+1) {
upd(pre, b[i+1][j]);
upd(b[i][j], pre);
}
}
rep(i,1,n+1) printf("%lld%c",(a[i]+b[0][i])%P," \n"[i==n]);
}
return 0;
}

codeforces 407C Curious Array的更多相关文章

  1. CodeForces 408E Curious Array(组合数学+差分)

    You've got an array consisting of n integers: a[1], a[2], ..., a[n]. Moreover, there are m queries, ...

  2. Codeforces 408 E. Curious Array

    $ >Codeforces \space 408 E. Curious Array<$ 题目大意 : 有一个长度为 \(n\) 的序列 \(a\) ,\(m\) 次操作,每一次操作给出 \ ...

  3. Codeforces 482B Interesting Array(线段树)

    题目链接:Codeforces 482B Interesting Array 题目大意:给定一个长度为N的数组,如今有M个限制,每一个限制有l,r,q,表示从a[l]~a[r]取且后的数一定为q,问是 ...

  4. Codeforces 1077C Good Array 坑 C

    Codeforces 1077C Good Array https://vjudge.net/problem/CodeForces-1077C 题目: Let's call an array good ...

  5. codeforces 482B. Interesting Array【线段树区间更新】

    题目:codeforces 482B. Interesting Array 题意:给你一个值n和m中操作,每种操作就是三个数 l ,r,val. 就是区间l---r上的与的值为val,最后问你原来的数 ...

  6. codeforces 797 E. Array Queries【dp,暴力】

    题目链接:codeforces 797 E. Array Queries   题意:给你一个长度为n的数组a,和q个询问,每次询问为(p,k),相应的把p转换为p+a[p]+k,直到p > n为 ...

  7. Curious Array Codeforces - 407C(高阶差分(?)) || sequence

    https://codeforces.com/problemset/problem/407/C (自用,勿看) 手模一下找一找规律,可以发现,对于一个修改(l,r,k),相当于在[l,r]内各位分别加 ...

  8. Curious Array CodeForces - 407C (高阶差分)

    高阶差分板子题 const int N = 1e5+111; int a[N], n, m, k; int C[N][111], d[N][111]; signed main() { scanf(&q ...

  9. codeforces 86D : Powerful array

    Description An array of positive integers a1, a2, ..., an is given. Let us consider its arbitrary su ...

随机推荐

  1. mysql 索引使用策略及优化

    索引使用策略及优化 MySQL的优化主要分为结构优化(Scheme optimization)和查询优化(Query optimization).本章讨论的高性能索引策略主要属于结构优化范畴.本章的内 ...

  2. R语言多元素向量

    使用冒号运算带有数值数据(数值的增加为1) # Creating a sequence from 5 to 13. v <- 5:13 print(v) # Creating a sequenc ...

  3. vue nextTick深入理解-vue性能优化、DOM更新时机、事件循环机制

    一.定义[nextTick.事件循环] nextTick的由来: 由于VUE的数据驱动视图更新,是异步的,即修改数据的当下,视图不会立刻更新,而是等同一事件循环中的所有数据变化完成之后,再统一进行视图 ...

  4. [转]NancyFx/Nancy

    本文转自:https://github.com/NancyFx/Nancy/wiki/Documentation Getting Started Introduction Exploring the ...

  5. jquery对象与dom对象之间互相转换的方法

    本文主要讲述jquery对象和js里的dom对象之间互相转换的方法,使jquery对象可以直接使用js里的方法,或js里的dom对象使用jquery里的方法. jquery对象和dom对象是不一样的, ...

  6. Java学习--JavaWeb简介

  7. Linux**系统实现log日志自动清理

    Linux系统实现log日志自动清理 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: ...

  8. sql语句优化总结

    sql语句优化总结 数据库优化的几个原则: 1.尽量避免在列上做运算,这样会导致索引失败: 2.使用join是应该用小结果集驱动大结果集,同时把复杂的join查询拆分成多个query.不然join的越 ...

  9. nginx+uwsgi部署flask应用后只能在本机访问解决办法,ipv4 和ipv6

    我的系统是centos7 nginx监听8888端口 在window下  :telnet 192.168.81.224 8888  发现连接不上, 端口22能连上 关闭224的防火墙就好了 syste ...

  10. PoPo数据可视化周刊第2期

    羡辙在bilibili开课啦 就在这个月,不知道是不是受了 @Jannchie见齐 的影响,羡辙竟然在bilibili开授Echarts课程,目前已开课两节. [滚城一团]的 ECharts 训练营 ...