閒來無事,差分一下
差分
–
根據我的理解,寫一點差分的東西
差分是什麼?
首先一個數組
1 2 3 4 5 6 7
那麼差分之後
1 1 1 1 1 1 1
懂了嗎哈哈哈哈
就是 存的是
哈哈哈數組名字是不是很傻x
多說無益,先來例題
例題
–
Haybale Stacking
xoj傳送門
題目描述:一些乾草堆,要給m次區間 的乾草堆添加一堆乾草,最後求出中間高度的乾草堆 的高度。
題解:
給 的區間添加乾草,說明 乾草堆比 乾草堆的高度高了1,同理 比 的乾草堆高度減少了1(假設高度遞增)
然後在用前綴和求一下每堆乾草堆的高度,排序出解
#include <bits/stdc++.h>
using namespace std;
int a[1000010],n,m;
int main()
{
scanf("%d%d",&n,&m);
for (int i=1; i<=m; i++)
{
int x,y;
scanf("%d%d",&x,&y);
a[x]++,a[y+1]--;
}
for (int i=1; i<=n; i++)
a[i]+=a[i-1];
sort(a+1,a+n+1);
cout<<a[n/2+1];
}
差分入門而已。。。
明天再寫qwq