NOIP模擬 聚會

2021-08-28 16:10:46 字數 1185 閱讀 5208

描述

在成都的一條街道上,一共有 nn戶人家,每個家庭有 xixi 個人,他們和諧的生活在 一起,作為全國和諧街道,他們經常會小範圍組織活動,每次活動會選擇一戶作為聚點, 並要求某些家庭參加,為了方便通知,村長每次邀請位置連續的家庭。因為每戶人數不 同,每個家庭之間有一定距離,村長希望你計算出每次邀請的家庭的移動代價。第 ii個家 庭移動到家庭 jj的代價是:xi∗dis(i,j)xi∗dis(i,j)

dis(i,j)dis(i,j)表示ii 到jj的距離,村長一共安排了 mm 次聚會,每次邀請[li,ri][li,ri]的家庭參加

輸入第一行兩個數表示 n,m

第二行 n-1 個數,第 i 個數表示第 i 個家庭與第 i+1 個家庭的距離 di

第三行 n 個數,表示每個家庭的人數 xi

之後 m 行每行三個數 x l r,表示查詢要把區間 [l,r]的家庭移動到 x 點的代價和

輸出對於每個詢問輸出乙個數表示答案,對 19260817 取模

樣例輸入

5 52 3 4 5

1 2 3 4 5

1 1 5

3 1 5

2 3 3

3 3 3

1 5 5

樣例輸出

1257290

70提示

對於 30%的資料, n,m≤1000

對於另外 20%的資料,所有家庭間的距離都為 1

對於另外 20%的資料,所有家庭人數都為 1

對於 100%的資料 , n,m≤200000;xi,di <=2*10^9

**:

#include #define int long long

using namespace std;

const int mod=19260817;

const int max=200005;

int n,m,ans,pos[max],num[max],sum1[max],sum2[max];

inline int get_int()

inline void print(int x)

inline int calc1(int x,int l,int r)

inline int calc2(int x,int l,int r)

inline void solve()

}signed main()

NOIP模擬 聚會

題目 在成都的一條街道上,一共有 n n n戶人家,每個家庭有 x i xi xi 個人,他們和諧的生活在 一起,作為全國和諧街道,他們經常會小範圍組織活動,每次活動會選擇一戶作為聚點,並要求某些家庭參加,為了方便通知,村長每次邀請位置連續的家庭。因為每戶人數不 同,每個家庭之間有一定距離,村長希望...

NOIP模擬 修路

這題第一眼看上去有些懵逼,還以為是dp。第二眼,哦,這麼裸的最小生成樹,2分鐘打完,拍都沒對,自信100分。最終100分。每條邊的權值減去連個節點的權值,所有的邊做一次最小生成樹就好了。include include include include include define fo i,a,b f...

NOIP模擬 項鍊

經過一番周折,bob找到了alice,為了安慰alice驚魂未定的心,bob決定給alice買一條手鍊,這條手鍊由m個珍珠組成,每個珍珠上刻著不同的小寫字母。當alice看到一些字母按照一定的順序排列成的字串時,就會產生一定的愉悅值。bob現在可以在這m個珍珠上刻上字母,現在他想知道,如何刻字母可以...