hihoCoder 1116 計算 線段樹

2022-05-18 01:08:21 字數 1041 閱讀 3444

題意 :

描述現在有乙個有n個元素的陣列a1, a2, ..., an。

記f(i, j) = ai * ai+1 * ... * aj。

初始時,a1 = a2 = ... = an = 0,每次我會修改乙個ai的值,你需要實時反饋給我 ∑f(i, j) (1 <= i <= j <= n) 的值 mod 10007。

輸入第一行包含兩個數n(1<=n<=100000)和q(1<=q<=500000)。

接下來q行,每行包含兩個數i, x,代表我把ai的值改為了x。

輸出分別輸出對應的答案,乙個答案佔一行。

#include#include#include#include#include#include#include#includeusing namespace std;

#define inf 0x7fffffff

struct nodea[400010];

void buildtree(int i,int l,int r)

void update(int no,int k,int b)

int mid = (a[no].l +a[no].r) / 2;

if(k<=mid)

update(no<<1,k,b);

else

update((no<<1)+1,k,b);

a[no].value = (a[no<<1].value * a[no*2+1].value)%10007;

a[no].lsum = (a[no*2].lsum + a[no*2].value*a[no*2+1].lsum)%10007;

a[no].rsum = (a[no*2+1].rsum + a[no*2+1].value*a[no*2].rsum)%10007;

a[no].ans = (a[no*2].ans + a[no*2+1].ans + a[no*2].rsum * a[no*2+1].lsum)%10007;

}int main()

} return 0;

}

hihoCoder1079 線段樹 離散化

線段樹 離散化 時間限制 10000ms 單點時限 1000ms 記憶體限制 256mb 描述小hi和小ho在回國之後,重新過起了朝7晚5的學生生活,當然了,他們還是在一直學習著各種演算法 這天小hi和小ho所在的學校舉辦社團文化節,各大社團都在宣傳欄上貼起了海報,但是貼來貼去,有些海報就會被其他社...

hihoCoder 1079(線段樹 離散化)

題目大意 給n個區間,有的區間可能覆蓋掉其他區間,問沒有完全被其他區間覆蓋的區間有幾個?區間依次給出,如果有兩個區間完全一樣,則視為後面的覆蓋前面的。題目分析 區間可能很長,所以要將其離散化。但離散化之後區間就變成了連續的,不再是離散的。也就是葉子由左右端點為u u變成了左右端點為u 1 u,左右兒...

計算幾何 線段

首先是直線相交,這個簡單,就是看斜率,斜率不同則相交。重點分析線段與線段相交,給你兩組座標p1 x1,y1 p2 x2,y2 q1 x3,y3 q2 x4,y4 判斷p1p2與q1q2是否相交 首先可以很快排除下面四種情況 對於第 種情況滿足條件 max q1.x,q2.x max q1.x,q2....