5922. 【NOIP2018模拟10.23】sequence 
(File IO): input:sequence.in output:sequence.out

Time Limits: 1000 ms  Memory Limits: 524288 KB  Detailed Limits  

Goto ProblemSet

Description

小 F 是一位 Hack 国的居民,他生活在一条长度为 n 的街道上,这个街道上总共有 n 个商店。每个商店里售卖着不同的 Hack 技能包,每个商店本身也会有个便利值。初始时,每个商店的便利值均为 0。每一天,街道上都会有一些商店优化改造。
具体来说,对于每一天,优化改造的商店都是一个连续的区间 l ∼ r,每次优化改造也会有一个优化参数 k。对于所有 l ≤ i ≤ r ,第 i 个商店的便利值会增加
aaarticlea/png;base64,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" alt=" " />。

小 F 想知道,m 天之后,每个商店的便利值分别是多少。由于小 F 并不喜欢高精度,因此你只需要输出便利值对 10^9 + 7 取模的结果。

 

Input

从文件sequence.in中读入数据。
第 1 行,两个整数 n, m 表示街道的长度与天数。
接下来的 m 行,每行三个整数 l, r, k,表示第 i 天优化改造的商店区间和优化参数。

Output

输出到文件sequence.out中,共 n 行。
每行 1 个整数,表示第 i 个商店的便利值对 109 + 7 取模的结果。
 

Sample Input

5 3
1 4 3
2 5 0
3 4 2 Sample 2
见选手目录下的sequence/sequence2.in与sequence/sequence2.ans。
该组样例的数据范围同第 1 个测试点。
 

Sample Output

1
5
12
24
1 第 1 次操作之后,每个商店的便利值分别为 1, 4, 10, 20, 0。
第 2 次操作之后,每个商店的便利值分别为 1, 5, 11, 21, 1。
第 3 次操作之后,每个商店的便利值分别为 1, 5, 12, 24, 1。
 
做法(摘自JZOJ):可以发现组合数有一个简单的性质,即 C(n k) = C(n−1 k) + C(n−1 k−1) ,我们可以从这 个式子中获得启发。考虑一个下标从 0 开始的数列,这个数列的每个数均为 1。 我们对这个数列做 k 阶前缀和。通过这个简单的式子,容易发现这个数列的第 i 项即为 C(k+i k ) 。于是我们可以得出一个这样的做法。 对于这个数列,维护这个数列的 k 阶差分。对于一次修改操作,我们只需要 在各阶差分数组上修改,最后做一遍 k 阶的前缀和即可。注意差分数组上修改 时,区间边界要相应地减掉一些值。时间复杂度 O(nk),期望得分 100pts。
 #include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define LL long long
#define N 500010
#define rep(i,a,b) for(register int i=a;i<=b;++i)
#define dep(i,a,b) for(register int i=a;i>=b;--i)
using namespace std;
LL mo=1e9+;
int n,m;
LL f[][N],a[N],ans[N];
struct arr{
int l,r,k;
}e[N]; bool cmp(arr x,arr y){
return x.k>y.k;
} int read(){
int s=;
char ch=getchar();
for(;ch<''||ch>'';ch=getchar());
for(;ch>=''&&ch<='';s=s*+ch-'',ch=getchar());
return s;
} int main(){
freopen("sequence.in","r",stdin);
freopen("sequence.out","w",stdout);
n=read(),m=read();
a[]=;
rep(j,,)
rep(i,,n)
a[i]=(a[i]+a[i-])%mo,f[j][i]=a[i];
rep(i,,m) e[i].l=read(),e[i].r=read(),e[i].k=read();
sort(e+,e+m+,cmp);
int l=;
dep(i,e[].k,){
while(l<=m&&e[l].k==i) ++ans[e[l].l],++l;
rep(j,,l-)
ans[e[j].r+]=(ans[e[j].r+]-f[e[j].k-i][e[j].r-e[j].l+])%mo;
rep(j,,n)
ans[j]=(ans[j]+ans[j-]+mo)%mo;
}
rep(i,,n) printf("%lld\n",ans[i]);
}

JZOJ 5922. sequence的更多相关文章

  1. JZOJ 5185. 【NOIP2017提高组模拟6.30】tty's sequence

    5185. [NOIP2017提高组模拟6.30]tty's sequence (Standard IO) Time Limits: 1000 ms  Memory Limits: 262144 KB ...

  2. [JZOJ 5437] [NOIP2017提高A组集训10.31] Sequence 解题报告 (KMP)

    题目链接: http://172.16.0.132/senior/#main/show/5437 题目: 题解: 发现满足上述性质并且仅当A序列的子序列的差分序列与B序列的差分序列相同 于是我们把A变 ...

  3. oracle SEQUENCE 创建, 修改,删除

    oracle创建序列化: CREATE SEQUENCE seq_itv_collection            INCREMENT BY 1  -- 每次加几个              STA ...

  4. Oracle数据库自动备份SQL文本:Procedure存储过程,View视图,Function函数,Trigger触发器,Sequence序列号等

    功能:备份存储过程,视图,函数触发器,Sequence序列号等准备工作:--1.创建文件夹 :'E:/OracleBackUp/ProcBack';--文本存放的路径--2.执行:create or ...

  5. DG gap sequence修复一例

    环境:Oracle 11.2.0.4 DG 故障现象: 客户在备库告警日志中发现GAP sequence提示信息: Mon Nov 21 09:53:29 2016 Media Recovery Wa ...

  6. Permutation Sequence

    The set [1,2,3,-,n] contains a total of n! unique permutations. By listing and labeling all of the p ...

  7. [LeetCode] Sequence Reconstruction 序列重建

    Check whether the original sequence org can be uniquely reconstructed from the sequences in seqs. Th ...

  8. [LeetCode] Binary Tree Longest Consecutive Sequence 二叉树最长连续序列

    Given a binary tree, find the length of the longest consecutive sequence path. The path refers to an ...

  9. [LeetCode] Verify Preorder Sequence in Binary Search Tree 验证二叉搜索树的先序序列

    Given an array of numbers, verify whether it is the correct preorder traversal sequence of a binary ...

随机推荐

  1. struts2的常量

    常量名 常量值 说明 struts.i18n.encoding UTF-8 应用中使用的编码 struts.objectFactory.spring.autoWire name 和spring框架整合 ...

  2. poj 3107 树重心

    http://acm.hust.edu.cn/vjudge/problem/18069 和poj 1655差不多:http://www.cnblogs.com/qlky/p/5780933.html ...

  3. MySQL慢查询分析工具pt-query-digest详解

    一.简介 pt-query-digest是用于分析mysql慢查询的一个工具,它可以分析binlog.General log.slowlog,也可以通过SHOWPROCESSLIST或者通过tcpdu ...

  4. android libs库中的armeabi-v7a,armeabi和x86

    以下内容转载于:http://blog.csdn.net/liumou111/article/details/52949156 1.区别: 这三者都表示的是CPU类型,早期的Android系统几乎只支 ...

  5. 安装office提示Office 16 Click-to-Run Extensibility Component

    今天安装office时,提示Office 16 Click-to-Run Extensibility Component或者Office 15 Click-to-Run Extensibility C ...

  6. Linux学习_按时间顺序解压多个文件,搜索文件中的内容

    ls的结果按时间数据先排序,再取末尾5个文件,再调用tar命令 ls -1 | sort -u | tail -5 |xargs -n1 tar xzvf 利用grep命令从文件中搜索. grep - ...

  7. 如何用代码填充S/4HANA销售订单行项目的数量字段

    我的任务是用代码生成S/4HANA销售订单(Sales Order)的行项目,并且填充对应的quantity(数量)值. 最开始我用了下面的代码,把quantity的值写入item字段target_q ...

  8. 修改Windows下的Memcached下的服务端口

    在命令模式下,可以使用 memcached -p 12000 去指定端口,可服务安装后,却总是只有 -d runservice 的参数. 通过修改注册表来达到这个修改端口的目的. 在 HKEY_LOC ...

  9. 了解iOS上的可执行文件和Mach-O格式

    http://www.cocoachina.com/mac/20150122/10988.html http://www.reinterpretcast.com/hello-world-mach-o ...

  10. matlab中padarray函数在numpy、python中的实现

    a = np.arange(6) a = a.reshape((2, 3)) print np.lib.pad(a, 1, 'symmetric') 运行结果: [[ ] [ ] [ ] [ ]]