B 儲物點的距離

2022-05-29 08:42:08 字數 1095 閱讀 6045

時間限制: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

125729

070

對於100%的資料n,m <= 200000 , 0 <= ai,bi

<= 2000000000

1 #include2

#define mod 1000000007

3long

long a[300000],d[300000],a[300000],d[300000];4

intmain()510

for(int i=1;i<=n;i++)

1116

long

long

x,l,r;

17while(m--)

1826

else

2734 printf("

%lld\n

",(ans+mod)%mod);35}

36return0;

37 }

view code

儲物點的距離

看似是一道劃分樹的題目,但是因為沒有修改操作,我們直接字首和即可。我們用字首和維護區間的物品總數,以及維護區間物品全部移動到第乙個點的花費。然後就根據 l,r,x之間的關係,推一推式子就行了。ac include define int long long using namespace std co...

lca 點的距離

給定一棵有n個結點的樹,q個詢問,每次詢問點x到點y亮點之間的距離 第一行乙個n,表示有n個節。接下來有n 1行,每行2個整數x,y表示x,y之間有一條連邊。然後乙個整數q,表示有q次詢問,接下來q行每行2個整數x,y表示詢問x到y的距離。輸出q行,每行表示每個詢問的結果 6 1 21 3 2 42...

問題 G 點的距離

問題 g 點的距離 時間限制 5 sec 記憶體限制 128 mb 提交 57 解決 19 提交 狀態 討論版 命題人 add lm edit testdata 題目描述 給定一棵有 n個結點的樹,q個詢問,每次詢問點x到點 y亮點之間的距離 輸入 第一行乙個 n,表示有 n個節。接下來有 n 1行...