CCF201809-02,买菜
2018-11-30 本文已影响0人
云淡风轻_935f
(9QN@TQ)8D)~`K$NHJCZV8Q.png
算法1
我自己写的,感觉不是很简洁,反正就是一直比较时间。
import java.util.Scanner;
public class sell1 {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int[] a=new int[n];
int[] b=new int[n];
int[] c=new int[n];
int[] d=new int[n];
for(int i=0;i<n;i++){
a[i]=sc.nextInt();
b[i]=sc.nextInt();
}
for(int i=0;i<n;i++){
c[i]=sc.nextInt();
d[i]=sc.nextInt();
}
int tH=0,tW=0,sum=0;
while(tH!=n&&tW!=n){
if(c[tW]>b[tH]){
tH++;
}
else if(c[tW]>a[tH]){
a[tH]=c[tW];
if(b[tH]>=d[tW]){
sum=sum+d[tW]-c[tW];
tW++;
}
else{
sum=sum+b[tH]-a[tH];
tH++;
}
}
else if(d[tW]<a[tH]){
tW++;
}
else{
c[tW]=a[tH];
if(b[tH]>=d[tW]){
sum=sum+d[tW]-c[tW];
tW++;
}
else{
sum=sum+b[tH]-a[tH];
tH++;
}
}
}
System.out.println(sum);
}
}
算法2
大致意思就是,用一个数组t记录这个时间段装车的人数,初始为0,遍历小H和小W的装车时间,装车时间段人数加1,最后数组t中装车人数大于1(2次)的时间即为所求,因为这个时间段两人都在装车,可以聊天
import java.util.Scanner;
public class sell11 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int n = input.nextInt();
int[] t = new int[1000000];
int count = 0;
for (int i = 0; i < n * 2; i++) {
int a = input.nextInt();
int b = input.nextInt();
for (int j = a; j < b; j++)
t[j]++;
}
for (int i : t)
if (i > 1)
count++;
System.out.println(count);
}
}