每年有兩種操作,一是詢問[l,r]內的土地這些年來的總產量,二是為[l,r]內的每一塊地的年產量加1。
思路:假設x[i]表示一塊土地第x[i]年增加年產量,則若詢問年為y,總共更新了z次操作,那麼這些年來的總產量為:
若將y看為第z+1次更新操作的話,
將該式子展開化簡即為:
那麼我們只需要用線段樹維護兩個東西,乙個是區間加1操作,另乙個是區間更新的總年份和。
而前面的b陣列只需要乙個字首和就行。
#includeusing namespace std;
typedef long long ll;
const int maxn=1e5+7;
ll lazy1[maxn<<2|1],lazy2[maxn<<2|1];
//年產量增量和,更新年份和;
ll sum1[maxn<<2|1],sum2[maxn<<2|1];
void pushdown(int l,int r,int k)
if(lazy2[k])
}void pushup(int k)
void build()
void updata(int l,int r,int l,int r,int k,int y)
pushdown(l,r,k);
int mid=(l+r)>>1;
if(l<=mid) updata(l,r,l,mid,k<<1,y);
if(r>mid) updata(l,r,mid+1,r,k<<1|1,y);
pushup(k);
}int thisy;
ll myfind(int l,int r,int l,int r,int k)
pushdown(l,r,k);
ll res=0;
int mid=(l+r)>>1;
if(l<=mid) res+=myfind(l,r,l,mid,k<<1);
if(r>mid) res+=myfind(l,r,mid+1,r,k<<1|1);
pushup(k);
return res;
}ll x[maxn];
char s[3];
int main()
build();
scanf("%d",&m);
for(int i=1;i<=m;++i)
else
}printf("\n");
}return 0;
}
2023年西安邀請賽
這是我到大學來第一次去校外參加比賽,還是蠻興奮的。路上火車轉地鐵,地鐵轉大巴,暈暈暈。到了西北工業大學後,先領服裝 隊員牌,然後照相。在大廳裡,能看到很多人,穿著一樣的橙色的衣服,當時就感覺acm這條道路上是不缺同道人的,熱身賽以及正式賽的時候這種感覺更加強烈。領完東西後就回酒店了,午飯是在西工大食...
SDUT 2023年SDUTACM暑假集訓階段總結
2020年sdutacm暑假集訓階段總結 9 501計科1902杜廣優 一 學習內容 暑假新學了哪些專題,每個專題刷了多少題 1 揹包高階 6 2 字典樹 3 3 線段樹 3 4 線段樹掃瞄線 1 5 數論基礎 5 6 kmp 5 7 exkmp 1 8 manacher 1 9 二分圖最大權 3 ...
HDU5017 2023年西安網路賽K題
第三場網路賽又水掉了 說下這題吧。題意很簡單,就是求橢球面a x 2 b y 2 c z 2 d yz e zx f xy 1到原點距離的最小值。比賽開始時就看到了這題,結果開始的思路完全錯浪費了好多時間,甚至還以為是精度問題。到了最後才終於想出做法,無奈沒時間敲。賽後敲一下子就ac了,只能說略可惜...