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

这道题的关键在于,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. C#-循环语句(六)

    for循环 格式: for(表达式1;循环条件;表达式2) { 循环体; } 解释:先执行表达式1,再判断循环条件是否为真,如果为真则执行循环体,执行完成后再执行表达式2 再次判断循环条件,由此一直反 ...

  2. 前后端分离djangorestframework——序列化与反序列化数据

    我们写好后端的代码,要把数据交给前端的展示的,这个数据以什么类型给前端呢?学到这里,我们已经知道这个数据最好是json字符串才行,因为网络间的传输,只认字符串或者二进制,字符串就是我们的数据,二进制就 ...

  3. python根据关键字以及id值爬取图虫网上高质量大图

    import requests import re import os import time print("ready....") def downPic(dirs, keywo ...

  4. tomcat session 共享

    1. nginx+tomcat7+memcached 安装JDK7sudo apt-get install java7-jdk 安装tomcat7Tomcat7下载地址http://mirror.bj ...

  5. [福大软工] Z班 第7次成绩排行榜

    作业要求 http://www.cnblogs.com/easteast/p/7668887.html 评分细则 本次作业评分较为简单,只包含了两个方面的得分,一个是团队任务的计划(10'),一个是采 ...

  6. spring的工厂类

    主要介绍两种工厂接口BeanFactory(老版本,已过时)和ApplicationContext ApplicationContext接口:每次在加载applicationContext.xml的时 ...

  7. 16.Python网络爬虫之Scrapy框架(CrawlSpider)

    引入 提问:如果想要通过爬虫程序去爬取”糗百“全站数据新闻数据的话,有几种实现方法? 方法一:基于Scrapy框架中的Spider的递归爬取进行实现(Request模块递归回调parse方法). 方法 ...

  8. 前端使用node.js+express+mockjs+mysql实现简单服务端,2种方式模拟数据返回

    今天,我教大家来搭建一个简单服务端 参考文章: https://www.jianshu.com/p/cb89d9ac635e https://www.cnblogs.com/jj-notes/p/66 ...

  9. SQLite事务、错误与自动回滚

    BEGIN TRANSACTION begin-stmt: hide commit-stmt: hide rollback-stmt: hide No changes can be made to t ...

  10. 关于HashMap的一些深入探索与理解

    在java中.大家差点儿是离不开对集合的使用的,像Map系列,List系列.Set系列.可是非常多人没有了解过或者研究过这些集合类究竟能够用在什么地方,而且有什么注意的地方.因此本文分Map系列和Li ...