洛谷 P2879 [USACO07JAN]区间统计Tallest Cow
先假设所有牛都是最大高度
两头牛能相望就要把他们之间的都削掉一截
于是就成了前缀和与差分问题
坑人的是 可能有重复输入
无缘无故把他们削两次 他们会恨你的
所以要判重
#include <iostream>
#include <cstdio>
#include <map>
using namespace std;
int n,h,m,t;
int l,r;
int a[10005];
map<int,int> mp[10005];
inline int read()
{
char c;
int x=0,f=1;
do{
c=getchar();
if(c=='-')
f=-1;
}while(c<'0' || c>'9');
do{
x=x*10+c-'0';
c=getchar();
}while(c>='0' && c<='9');
return f*x;
}
int main(){
n=read(),m=read(),h=read(),t=read();
while(t--)
{
l=read(),r=read();
if(l>r)//注意要交换
swap(l,r);
if(mp[l][r])//判重
continue;
mp[l][r]=1;
a[l+1]++;
a[r]--;
}
for(int i=1;i<=n;++i)
{
a[i]+=a[i-1];
printf("%d\n",h-a[i]);
}
return 0;
}