这道题实在是不该,我在化式子的时候,多此一举,把式子进行累加,导致自己当时化的式子是错的,这样导致自己卡了很久,也没想到好的思路,赛后重新分析一波,感觉巨™简单。。。难受的一逼。

这道题的关键在于,W这个东西,由于W序列是受L和R区间变化的,它的取值是由f(i,j)决定的,那么我们知道,肯定要把f(l,r)中 r-l+1相同的归到一处去,这是个思路,先不着急,我们可以先把表达式写出来。

f(1,1)+f(1,2)+f(1,3)+f(1,4)+f(1,5)

f(2,2)+f(2,3)+f(2,4)+f(2,5)

f(3,3)+f(3,4)+f(3,5)

f(4,4)+f(4,5)

f(5,5)

竖着看

w1       w2       w3     w4     w5

我们再把式子进行求和

w1  a1+a2+a3+a4+a5

w2 a1+2a2+2a3+2a4+a5

w3 a1+2a3+3a3+2a4+a5

w4 a1+2a2+2a3+2a4+a5

w5 a1+a2+a3+a4+a5

我们发现一个现象,似乎我们wi是一个对称的,并且我们的算法只支持O(n)复杂度,那么肯定由类似递推式子一样的东西,我们猜测,sum[i]=sum[i-1]+....每个wi对应的a也是对称的,在第一个和第二个之间仅仅是加了个区间和,是不是可以有

sum[i]=sum[i-1]+a[n-i+1]-a[i-1]

我们验证一下发现是这样的。

最后。。。求这个式子有可能被mod成小的数,里面有减号应该是sum[i]=(sum[i-1]+a[n-i+1]-a[i-1])%mod

#include<iostream>
#include<string.h>
#include<stdio.h>
#include<algorithm>
#define ll long long
using namespace std;
int a[];
int w[];
int sum[];
const int mod = 1e9+;
int main(){ int n;
while(~scanf("%d",&n)){
for (int i=;i<=n;i++){
scanf("%d",&a[i]);
a[i]=(a[i]+a[i-])%mod;
}
for (int i=;i<=n;i++){
scanf("%d",&w[i]);
}
for (int i=;i<=n;i++){
sum[i]=((ll)sum[i-]+a[n-i+]-a[i-]+mod)%mod;
}
ll ans=;
for (int i=;i<=n;i++){
ans=(ans+(ll)sum[i]*w[i])%mod;
}
printf("%lld\n",ans);
}
return ;
}

Wannafly summer camp Day6 - D 区间权值的更多相关文章

  1. 2018 Wannafly summer camp Day8--区间权值

    区间权值 小Bo有\(n\)个正整数\(a_1\)--\(a_n\),以及一个权值序列\(w_1\)--\(w_n\),现在她定义\(f(l,r)=(\sum_{i=l}^r a_i^2) *w_{r ...

  2. 【bzoj4399】魔法少女LJJ 并查集+权值线段树合并

    题目描述 在森林中见过会动的树,在沙漠中见过会动的仙人掌过后,魔法少女LJJ已经觉得自己见过世界上的所有稀奇古怪的事情了LJJ感叹道“这里真是个迷人的绿色世界,空气清新.淡雅,到处散发着醉人的奶浆味: ...

  3. HDU 6464 权值线段树 && HDU 6468 思维题

    免费送气球 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submi ...

  4. 2019牛客多校第七场E Find the median 权值线段树+离散化

    Find the median 题目链接: https://ac.nowcoder.com/acm/contest/887/E 题目描述 Let median of some array be the ...

  5. BZOJ 3110 ZJOI 2013 K大数查询 树套树(权值线段树套区间线段树)

    题目大意:有一些位置.这些位置上能够放若干个数字. 如今有两种操作. 1.在区间l到r上加入一个数字x 2.求出l到r上的第k大的数字是什么 思路:这样的题一看就是树套树,关键是怎么套,怎么写.(话说 ...

  6. 动态求区间K大值(权值线段树)

    我们知道我们可以通过主席树来维护静态区间第K大值.我们又知道主席树满足可加性,所以我们可以用树状数组来维护主席树,树状数组的每一个节点都可以开一颗主席树,然后一起做. 我们注意到树状数组的每一棵树都和 ...

  7. 【bzoj3110】[Zjoi2013]K大数查询 权值线段树套区间线段树

    题目描述 有N个位置,M个操作.操作有两种,每次操作如果是1 a b c的形式表示在第a个位置到第b个位置,每个位置加入一个数c.如果是2 a b c形式,表示询问从第a个位置到第b个位置,第C大的数 ...

  8. D. Powerful array 离线+莫队算法 给定n个数,m次查询;每次查询[l,r]的权值; 权值计算方法:区间某个数x的个数cnt,那么贡献为cnt*cnt*x; 所有贡献和即为该区间的值;

    D. Powerful array time limit per test seconds memory limit per test megabytes input standard input o ...

  9. 【bzoj3065】带插入区间K小值 替罪羊树套权值线段树

    题目描述 从前有n只跳蚤排成一行做早操,每只跳蚤都有自己的一个弹跳力a[i].跳蚤国王看着这些跳蚤国欣欣向荣的情景,感到非常高兴.这时跳蚤国王决定理性愉悦一下,查询区间k小值.他每次向它的随从伏特提出 ...

随机推荐

  1. 极致精简的webservice集成例子

    极致精简的webservice例子   看了网上好多关于webservice的例子,基本上对初学者来说都是模棱两可云里雾里,现在,我将网上关于webservice的讲解提炼出来,通过一个最简单使用并且 ...

  2. 重启Zabbix Server

    重启zabbix server:systemctl restart zabbix-server #启动服务 systemctl start zabbix-server systemctl start ...

  3. Ubuntu下vim打开文件时,提示请按ENTER或其它命令继续

    最近配置了一下vim,重启后,配置生效.但在用vim打开文件的时候,出现了一个问题:每次用vim打开文件的时候,都会提示请按ENTER或其它命令继续.这个真的很烦人.那么怎么把它消除掉呢? 首先要搞清 ...

  4. IntelliJ IDEA 创建Spring+SpringMVC+mybatis+maven项目

    参考自:https://www.cnblogs.com/hackyo/p/6646051.html 第一步: 创建maven项目 输入项目名和工程id 选择maven 默认就可以了 刚开始时间比较长, ...

  5. nodejs前后分离

    proxy: { '/api': { target: 'http://localhost:3000/', pathRewrite: {'^/api' : ''}, changeOrigin: true ...

  6. Automatically migrating data to new machines kafka集群扩充迁移topic

    The partition reassignment tool can be used to move some topics off of the current set of brokers to ...

  7. mongoDB python 操作

    mongoDB python 操作 import pymongo mongo_client = pymongo.MongoClient(host="127.0.0.1",port= ...

  8. SQL Access Advisor in Oracle Database 10g

    The SQL Access Advisor makes suggestions about indexes and materialized views which might improve sy ...

  9. filter 实现登录状态控制

    每天学习一点点 编程PDF电子书.视频教程免费下载:http://www.shitanlife.com/code 网站需要做用户登录鉴权控制,没有登录的话,不能访问网站,提示需要登录. 实现方式: 使 ...

  10. go标准库的学习-os

    参考https://studygolang.com/pkgdoc 导入方式: import "os" os包提供了操作系统函数的不依赖平台的接口 一开始简单举个例子: packag ...