洛谷 3932 Chtholly!
2017-10-31 16:55
239 查看
洛谷上居然有Chtholly 的题,不刷完我都不好意思说自己是珂学家!
如果有天你去到斯卡布罗集市,请代我向世界上最幸福的女孩问好。
题目描述:
有一天小妖精们又在做游戏。这个游戏是这样的。
妖精仓库的储物点可以看做在一个数轴上。每一个储物点会有一些东西,同时他们之间存在距离。
每次他们会选出一个小妖精,然后剩下的人找到区间[l,r][l,r]储物点的所有东西,清点完毕之后问她,把这个区间内所有储物点的东西运到另外一个仓库的代价是多少?
比如储物点ii有xx个东西,要运到储物点jj,代价为
x \times \mathrm{dist}( i , j )x×dist(i,j)
dist就是仓库间的距离。
当然啦,由于小妖精们不会算很大的数字,因此您的答案需要对19260817取模。
输入输出格式
输入格式:
第一行两个数表示n,mn,m
第二行n-1n−1个数,第ii个数表示第ii个储物点与第i+1i+1个储物点的距离
第三行nn个数,表示每个储物点的东西个数
之后mm行每行三个数x 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 \le 1000n,m≤1000
对于另外20%的数据,所有储物点间的距离都为1
对于另外20%的数据,所有储物点的物品数都为1
对于100%的数据 , n , m \le 200000 ; a_i , b_i <= 2\cdot 10^9n,m≤200000;a
分析:把式子拆开不难看出可以前缀和优化,于是预处理,然后随便搞搞。注意一定取mod要勤快,能取的地方都取,这样很稳。
# include <iostream> # include <cstdio> # include <cmath> # include <list> # include <cstring> # include <map> # include <ctime> # include <algorithm> # include <queue> using namespace std; typedef long long ll; int read(){ register int f=1,i=0;char ch=getchar(); while(ch<'0'||ch>'9') {if(ch=='-') f=-1;ch=getchar();} while(ch>='0'&&ch<='9') {i=(i<<3)+(i<<1)+ch-'0';ch=getchar();} return f*i; } const int N=200005; const int mod=19260817; ll a ,b ,d ,w ,dw ; int n,m,l,r,x; inline ll MIU(int l,int r){ return (d[r]%mod-d[l-1]%mod+mod)%mod; } inline ll MIUS(int l,int r){ return (dw[r]%mod-dw[l-1]%mod+mod)%mod; } int main(){ freopen("lx.in","r",stdin); n=read(),m=read(); for(int i=2;i<=n;++i) a[i]=read(),a[i]=(a[i]%mod+a[i-1])%mod; for(int i=1;i<=n;++i) b[i]=read(),w[i]=b[i]*a[i]; for(int i=1;i<=n;++i) d[i]=(d[i-1]+b[i])%mod,dw[i]=(dw[i-1]+w[i])%mod; for(int i=1;i<=m;++i) { x=read(),l=read(),r=read(); if(x<=l){cout<<(MIUS(l,r)-MIU(l,r)*a[x]%mod+mod)%mod<<endl;continue;} if(x>=r){cout<<(MIU(l,r)*a[x]%mod-MIUS(l,r)+mod)%mod<<endl;continue;} if(x>l&&x<r){cout<<((a[x]*(MIU(l,x-1)-MIU(x+1,r)+mod)%mod)%mod+ (MIUS(x+1,r)-MIUS(l,x-1)+mod)%mod)%mod<<endl;continue;} } return 0; }
相关文章推荐
- 洛谷P3933 Chtholly Nota Seniorious 【二分 + 贪心 + 矩阵旋转】
- 洛谷10月月赛R2·浴谷八连测R3 -Chtholly- 1、2题题解
- 洛谷10月月赛R2-T2-Chtholly Nota Seniorious
- 洛谷 3932 浮游大陆的68号岛 前缀和
- 洛谷10月月赛R2·浴谷八连测R3 P3933 Chtholly Nota Seniorious
- [P3933][洛谷10月月赛R2·浴谷八连测R3 -Chtholly-]Chtholly Nota Seniorious
- 洛谷3932:浮游大陆的68号岛——题解
- 洛谷 P1373 小a和uim之大逃离
- 洛谷 P1090 合并果子
- 通天之潜水(洛谷 1759)
- 洛谷p1896互不侵犯
- 洛谷 P1383 高级打字机==codevs 3333 高级打字机
- 洛谷—— P3388 【模板】割点(割顶)
- 洛谷 P1120 小木棍 [数据加强版 ]
- 洛谷 P1080 国王游戏
- 洛谷 P2158 [SDOI2008]仪仗队
- 洛谷[1090]合并果子
- 洛谷1771 方程的解
- 洛谷P1432 倒水问题
- 洛谷 P1087 FBI树