题目背景

大样例下发链接: https://pan.baidu.com/s/1nuVpRS1 密码: sfxg

浮游大陆的68号岛,位于浮游大陆的边境地带。平时很少有人造访。

岛上被浓厚的森林覆盖。

在这座边境地区不起眼的浮游岛上,建立着神秘的”兵器“管理仓库——妖精仓库。

题目描述

妖精仓库里生活着黄金妖精们,她们过着快乐,却随时准备着迎接死亡的生活。

换用更高尚的说法,是随时准备着为这个无药可救的世界献身。

然而孩子们的生活却总是无忧无虑的,幼体的黄金妖精们过着天真烂漫的生活,自然也无暇考虑什么拯救世界之类的重任。

有一天小妖精们又在做游戏。这个游戏是这样的。

妖精仓库的储物点可以看做在一个数轴上。每一个储物点会有一些东西,同时他们之间存在距离。

每次他们会选出一个小妖精,然后剩下的人找到区间[l,r][l,r][l,r]储物点的所有东西,清点完毕之后问她,把这个区间内所有储物点的东西运到另外一个仓库的代价是多少?

比如储物点iii有xxx个东西,要运到储物点jjj,代价为

x×dist(i,j)x \times \mathrm{dist}( i , j )x×dist(i,j)

dist就是仓库间的距离。

当然啦,由于小妖精们不会算很大的数字,因此您的答案需要对19260817取模。

输入输出格式

输入格式:

第一行两个数表示n,mn,mn,m

第二行n−1n-1n−1个数,第iii个数表示第iii个储物点与第i+1i+1i+1个储物点的距离

第三行nnn个数,表示每个储物点的东西个数

之后mmm行每行三个数x l r

表示查询要把区间[l,r][l,r][l,r]储物点的物品全部运到储物点x的花费

输出格式:

对于每个询问输出一个数表示答案

输入输出样例

输入样例#1:
复制

5 5
2 3 4 5
1 2 3 4 5
1 1 5
3 1 5
2 3 3
3 3 3
1 5 5
输出样例#1: 复制

125
72
9
0
70

说明

对于30%的数据,n,m≤1000n , m \le 1000n,m≤1000

对于另外20%的数据,所有储物点间的距离都为1

对于另外20%的数据,所有储物点的物品数都为1

对于100%的数据 ,n,m≤200000;ai,bi<=2⋅109 n , m \le 200000 ; a_i , b_i <= 2\cdot 10^9n,m≤200000;ai​,bi​<=2⋅109


前缀和的应用。

比如我们要求$x$左边的贡献。

$\large ans=\sum|d[x]-d[i]|*a[i]$

$\large =\sum d[x]*a[i]-d[i]*a[i]$

$\large =d[x]*\sum a[i]-\sum d[i]*a[i]$

$x$右边的同理。

所以我们可以计算$\large \sum a[i]$和$\large \sum d[i]*a[i]$就行了。


#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
#include <cstdlib>
using namespace std;
#define reg register
#define int long long
inline int read() {
int res = ;char ch=getchar();
while(!isdigit(ch)) ch=getchar();
while(isdigit(ch)) res=(res<<)+(res<<)+(ch^), ch=getchar();
return res;
}
#define mod 19260817
#define N 200005
int n, m;
int sigmaA[N], sigmaDa[N];
int d[N], a[N]; signed main()
{
n = read(), m = read();
for (reg int i = ; i <= n ; i ++)
{
d[i] = read();
d[i] = (d[i] + d[i-]) % mod;
}
for (reg int i = ; i <= n ; i ++)
{
a[i] = read();
sigmaA[i] = (sigmaA[i-] + a[i]) % mod;
sigmaDa[i] = (sigmaDa[i-] + d[i] * a[i] % mod) % mod;
}
while(m--)
{
int x = read(), l = read(), r = read();
int ans = ;
if (x < l) {
ans = -d[x] * (sigmaA[r] - sigmaA[l-]) % mod + (sigmaDa[r] - sigmaDa[l-]);
printf("%lld\n", (ans % mod + mod) % mod);
continue;
}
if (x > r) {
ans = d[x] * (sigmaA[r] - sigmaA[l-]) % mod - (sigmaDa[r] - sigmaDa[l-]);
printf("%lld\n", (ans % mod + mod) % mod);
continue;
}
ans = d[x] * (sigmaA[x] - sigmaA[l-]) % mod - (sigmaDa[x] - sigmaDa[l-]);
ans = (ans + (-d[x] * (sigmaA[r] - sigmaA[x]) % mod + (sigmaDa[r] - sigmaDa[x])) % mod) % mod;
printf("%lld\n", (ans % mod + mod) % mod);
}
return ;
}

[Luogu3932] 浮游大陆的68号岛的更多相关文章

  1. P3932 浮游大陆的68号岛

    P3932 浮游大陆的68号岛 妖精仓库的储物点可以看做在一个数轴上.每一个储物点会有一些东西,同时他们之间存在距离. 每次他们会选出一个小妖精,然后剩下的人找到区间[l,r]储物点的所有东西,清点完 ...

  2. P3932 浮游大陆的68号岛 【线段树】

    P3932 浮游大陆的68号岛 有一天小妖精们又在做游戏.这个游戏是这样的. 妖精仓库的储物点可以看做在一个数轴上.每一个储物点会有一些东西,同时他们之间存在距离. 每次他们会选出一个小妖精,然后剩下 ...

  3. 线段树 洛谷P3932 浮游大陆的68号岛

    P3932 浮游大陆的68号岛 题目描述 妖精仓库里生活着黄金妖精们,她们过着快乐,却随时准备着迎接死亡的生活. 换用更高尚的说法,是随时准备着为这个无药可救的世界献身. 然而孩子们的生活却总是无忧无 ...

  4. noip模拟赛 浮游大陆的68号岛

    题目描述 妖精仓库里生活着黄金妖精们,她们过着快乐,却随时准备着迎接死亡的生活. 换用更高尚的说法,是随时准备着为这个无药可救的世界献身. 然而孩子们的生活却总是无忧无虑的,幼体的黄金妖精们过着天真烂 ...

  5. [洛谷P3932]浮游大陆的68号岛

    题目大意:有一行物品,每两个物品之间有一个距离.每个物品有一个价值.现在问你若干问题,每个问题问你把l~r所有物品全部搬到物品x处需要多少价值. 把物品a搬到物品b处的价值为物品a的价值乘a到b的距离 ...

  6. LuoguP3932 浮游大陆的68号岛 题解

    Content 在一个无限长的数轴上有 \(n\) 个点.第 \(i\) 个点上面有 \(a_i\) 件物品,且第 \(i\) 个点到第 \(i+1\) 个点的距离为 \(b_i\). 定义从第 \( ...

  7. noip2017考前整理(未完)

    快考试了,把我以前写过的题回顾一下.Noip2007 树网的核:floyd,推出性质,暴力.Noip2008 笨小猴:模拟Noip2008 火柴棒等式:枚举Noip2008 传纸条:棋盘dpNoip2 ...

  8. nzhtl1477-ただいま帰りました ( bfs )

    nzhtl1477-ただいま帰りました 题目描述 珂学题意: 你是威廉!你要做黄油蛋糕给珂朵莉吃~! 68号岛有n个商店,有的商店直接有小路连接,小路的长度都为1 格里克告诉了你哪些地方可能有做黄油蛋 ...

  9. bzoj1487 [HNOI2009]无归岛

    Description Neverland是个神奇的地方,它由一些岛屿环形排列组成,每个岛上都生活着之中与众不同的物种.但是这些物种都有一个共同的生活习性:对于同一个岛 上的任意两个生物,他们有且仅有 ...

随机推荐

  1. ios 把数组对象转成json字符串存起来

    1第一步是我们获取数据源 一般我们都是从接口请求数据 NSArray *subColumnsArray = nil; NSDictionary *dict = [NSJSONSerialization ...

  2. 复习0824js

    编程思想: 面向过程:凡事亲力亲为,所有事情的过程都要清楚,注重的是过程. 面向对象:提出需求,找到对象,对象解决这个问题,我们要结果,注重的是结果. 面向对象的特性:封装,继承,多态: JS: 是一 ...

  3. [c++] 面试题之犄角旮旯 第壹章

    记录C/C++语言相关的问题. 算法可视化:https://visualgo.net/en <data structure and algorithm in c++> By Adam 有免 ...

  4. Basler acA2500-14gm 连接采图报错处理

    新购 Basler acA2500-14gm 相机,使用从官方网站下载的 pylon v6 版本连接测试,报错: Type    Time    Source    MessageError    2 ...

  5. 【linux】【jenkins】自动化部署一 安装jenkins及Jenkins工作目录迁移

    系统环境:Centos7 https://jenkins.io/zh/download/ 下载对应系统的jenkins 一.安装jdk8.0 jenkins安装需要jdk8or11,根据jenkins ...

  6. spring bean的生命周期与springmvc的生命周期

    配置在Spring中的Bean在Spring容器中从加载到销毁会经历那些过程呢?如果实现一些特定的Spring接口,这些特定接口的方法会在什么时候被调用呢?本文简单介绍一下这些过程. Bean在Spr ...

  7. CAS详细登录流程(转)

    转:https://www.cnblogs.com/lihuidu/p/6495247.html 4.CAS的详细登录流程 上图是3个登录场景,分别为:第一次访问www.qiandu.com.第二次访 ...

  8. 阿里云服务器CentOS6.9防火墙启动无效--iptables消失

    iptables 是与最新的 3.5 版本 Linux 内核集成的 IP 信息包过滤系统.如果 Linux 系统连接到因特网或 LAN.服务器或连接 LAN 和因特网的代理服务器, 则该系统有利于在 ...

  9. jQuery三级联动效果代码(省、市、区)

    很长时间都不用jquery了,有人问我jquery写三级联动的插件我就写好了发出来吧,正好需要的人都可以看看. 一.html代码 <!DOCTYPE html> <html> ...

  10. Java 学习笔记之 线程interrupt方法

    线程interrupt方法: interrupt方法是用来停止线程的,但是他的使用效果并不像for+break那样,马上就停止循环. 调用interrupt()其实仅仅是在当前线程中打了一个停止标记, ...