描述
在成都的一條街道上,一共有 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個珍珠上刻上字母,現在他想知道,如何刻字母可以...