zoukankan      html  css  js  c++  java
  • B.储物点的距离

    时间限制:C/C++ 1秒,其他语言2秒
    空间限制:C/C++ 131072K,其他语言262144K
    64bit IO Format: %lld

    题目描述


     一个数轴,每一个储物点会有一些东西,同时它们之间存在距离。
    每次给个区间[l,r],查询把这个区间内所有储物点的东西运到另外一个储物点的代价是多少?
    比如储物点i有x个东西,要运到储物点j,代价为x * dist( i , j )
    dist就是储物点间的距离。 


    输入描述:

    第一行两个数表示n,m

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

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

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

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

    输出描述:

    对于每个询问输出一个数表示答案
    答案对1000000007取模
    示例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

    输出

    125
    72
    9
    0
    70

    备注:

    对于100%的数据n,m <= 200000 , 0 <= ai,bi <= 2000000000

     1 #include<stdio.h>
     2 #define mod 1000000007
     3 long long a[300000],d[300000],A[300000],D[300000];
     4 int main()
     5 {
     6     long long N,M;
     7     scanf("%lld%lld",&N,&M);
     8     for(int i=2;i<=N;i++)
     9     {scanf("%lld",&d[i]);d[i]=(d[i]+d[i-1])%mod;}
    10     for(int i=1;i<=N;i++)
    11     {
    12         scanf("%lld",&a[i]);
    13         A[i]=(a[i]+A[i-1])%mod;
    14         D[i]=(a[i]%mod*d[i]%mod+D[i-1])%mod;
    15     }
    16     long long x,l,r;
    17     while(M--)
    18     {
    19         scanf("%lld%lld%lld",&x,&l,&r);
    20         long long ans,ans1;
    21         if(x<=l) ans=(D[r]-D[l-1]+mod)%mod-d[x]*(A[r]-A[l-1]+mod)%mod;
    22         else if(x>=r) 
    23         {
    24             ans=d[x]*(A[r]-A[l-1]+mod)%mod-(D[r]-D[l-1]+mod)%mod;
    25         }
    26         else
    27         {
    28             ans=d[x]*(A[x]-A[l-1]+mod)%mod-(D[x]-D[l-1]%mod)%mod;
    29             ans1=(D[r]-D[x-1]+mod)%mod-d[x]*(A[r]-A[x-1]%mod)%mod;
    30             //if(ans1<0) ans1=-ans1;
    31             //if(ans<0) ans=-ans;
    32             ans=(ans1+ans)%mod;
    33         }
    34         printf("%lld
    ",(ans+mod)%mod);
    35     }
    36     return 0;
    37 }
    View Code

    作者:ACRykl —— O ever youthful,O ever weeping!

    出处:http://www.cnblogs.com/ACRykl/

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    2.2 Scala基础知识
    Linux---用户及权限管理类命令
    Linux---进程控制类命令
    Linux---vim编辑文本文件
    Linux---文件压缩与解压缩命令
    Linux---查找命令
    Linux---基本目录与文件命令
    nginx配置技巧汇总
    Go 内嵌静态资源
    go语言的time.Sleep
  • 原文地址:https://www.cnblogs.com/ACRykl/p/8068087.html
Copyright © 2011-2022 走看看