题目知识点
1、本题使用到了差分,因为要求的有牛可能的最大值,所以每头牛初始化为h,a,b之间要互相看得见,所以对中间的值都-1
2、是要对数据进行判重,yxc这边用到了set< pair< int,int> >来存储两个值并判重,但java里面就只能是转化成set里存储对象在判断,这样是不好判断的。我这边转化成set< String>,String=”“+a+b,这样String存储的值是不会重复的。
C++ 代码
import ;
import ;
import ;
public class Main
{
private static int N=10010;
private static int[] height=new int[N];
public static void main(String[] args)
{
Scanner scan=new Scanner();
Set set=new HashSet<>();
int n=();
int p=();
int h=();
int m=();
height[1]=h;
for(int i=0;i
{
int a=();
int b=();
if(a>b)
{
int t=a;
a=b;
b=t;
}
String ts=""+a+b;
if(!(ts))
{
(ts);
height[a+1]--;
height[b]++;
}
}
for(int i=1;i<=n;i++)
{
height[i]+=height[i-1];
(height[i]);
}
();
}
}