赞
踩
题目知识点
1、本题使用到了差分,因为要求的有牛可能的最大值,所以每头牛初始化为h,a,b之间要互相看得见,所以对中间的值都-1
2、是要对数据进行判重,yxc这边用到了set< pair< int,int> >来存储两个值并判重,但java里面就只能是转化成set里存储对象在判断,这样是不好判断的。我这边转化成set< String>,String=”“+a+b,这样String存储的值是不会重复的。
C++ 代码
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;
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(System.in);
Set set=new HashSet<>();
int n=scan.nextInt();
int p=scan.nextInt();
int h=scan.nextInt();
int m=scan.nextInt();
height[1]=h;
for(int i=0;i
{
int a=scan.nextInt();
int b=scan.nextInt();
if(a>b)
{
int t=a;
a=b;
b=t;
}
String ts=""+a+b;
if(!set.contains(ts))
{
set.add(ts);
height[a+1]--;
height[b]++;
}
}
for(int i=1;i<=n;i++)
{
height[i]+=height[i-1];
System.out.println(height[i]);
}
scan.close();
}
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。