美文网首页
CCF201809-02,买菜

CCF201809-02,买菜

作者: 云淡风轻_935f | 来源:发表于2018-11-30 23:17 被阅读0次
    (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);
        }
    }
    

    相关文章

      网友评论

          本文标题:CCF201809-02,买菜

          本文链接:https://www.haomeiwen.com/subject/ctnkcqtx.html