洛谷 / 题目列表 / 题目详情 P1568 赛跑

题目传送门

 

import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Scanner;

/**
 * @Author 陈平安
 * @Date 2022/8/29 9:25
 * @PackageName:PACKAGE_NAME
 * @ClassName: Main
 * @Description: TODO
 * @Version 1.0
 */
public class Main {


    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int num1 = scanner.nextInt();//获取M
        int num2 = scanner.nextInt();//获取N
        //获取数据
//        System.out.println();
//        System.out.println(num1 + " " + num2);//测试数据

        int time = 0;//获取运动的持续时间
        int sum4 = 0;//记录下来每个单位时间下的路程总和
        int sum5 = 0;//记录下来每个单位时间下的路程总和
        int[][] arr = new int[num1][2];
        int[][] arr1 = new int[num2][2];
        //定义接受数据的数组
        ArrayList<Object> list1 = new ArrayList<>();//路程记录数据组合
        ArrayList<Object> list2 = new ArrayList<>();//路程记录数据组合
        for (int i = 0; i < arr.length; i++) {
            arr[i][0] = scanner.nextInt();
            arr[i][1] = scanner.nextInt();
            time += arr[i][1];//得出路程持续的时间

            for (int j = 0; j < arr[i][1]; j++) {
                sum4 += arr[i][0];
                list1.add(sum4);
            }//获取每个单位时间增加的路程总和
        }//获取数组元素

        for (int i = 0; i < arr1.length; i++) {
            arr1[i][0] = scanner.nextInt();
            arr1[i][1] = scanner.nextInt();
            //  time+= arr[i][1];
            for (int j = 0; j < arr1[i][1]; j++) {
                sum5 += arr1[i][0];
                list2.add(sum5);//同理
            }
        }//获取数组元素
//        System.out.println(time);//测试数据
//        System.out.println(list1.toString());
//        System.out.println(list2.toString());//测试数据
        //int count1 = 0;
        int count2 = 0;//用来记录变化次数
        for (int i = 0; i < time - 1; i++) {
//            if ((int) list1.get(i) == (int) list2.get(i)) {
//                continue;
//            }
            if ((int) list1.get(i) <= (int) list2.get(i) &&
                    (int) list1.get(i + 1) > (int) list2.get(i + 1)) {//判断领先顺序的变化
                count2++;
                continue;//减少运行时间和资源的消耗
            }
            if ((int) list1.get(i) >= (int) list2.get(i) &&
                    (int) list1.get(i + 1) < (int) list2.get(i + 1)) {
                count2++;
                continue;
            }
        }
        System.out.println(count2);//输出结果
    }

}

 


import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Scanner;

/**
 * @Author 陈平安
 * @Date 2022/8/29 9:25
 * @PackageName:PACKAGE_NAME
 * @ClassName: Main
 * @Description: TODO
 * @Version 1.0
 */
public class Main {


    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int num1 = scanner.nextInt();//获取M
        int num2 = scanner.nextInt();//获取N
        //获取数据
//        System.out.println();
//        System.out.println(num1 + " " + num2);//测试数据

        int time = 0;//获取运动的持续时间
        int sum4 = 0;//记录下来每个单位时间下的路程总和
        int sum5 = 0;//记录下来每个单位时间下的路程总和
        int[][] arr = new int[num1][2];
        int[][] arr1 = new int[num2][2];
        //定义接受数据的数组
        ArrayList<Object> list1 = new ArrayList<>();//路程记录数据组合
        ArrayList<Object> list2 = new ArrayList<>();//路程记录数据组合
        for (int i = 0; i < arr.length; i++) {
            arr[i][0] = scanner.nextInt();
            arr[i][1] = scanner.nextInt();
            time += arr[i][1];//得出路程持续的时间

            for (int j = 0; j < arr[i][1]; j++) {
                sum4 += arr[i][0];
                list1.add(sum4);
            }//获取每个单位时间增加的路程总和
        }//获取数组元素

        for (int i = 0; i < arr1.length; i++) {
            arr1[i][0] = scanner.nextInt();
            arr1[i][1] = scanner.nextInt();
            //  time+= arr[i][1];
            for (int j = 0; j < arr1[i][1]; j++) {
                sum5 += arr1[i][0];
                list2.add(sum5);//同理
            }
        }//获取数组元素
//        System.out.println(time);//测试数据
//        System.out.println(list1.toString());
//        System.out.println(list2.toString());//测试数据
        //int count1 = 0;
        int count2 = 0;//用来记录变化次数
        for (int i = 0; i < time - 1; i++) {
//            if ((int) list1.get(i) == (int) list2.get(i)) {
//                continue;
//            }
            if ((int) list1.get(i) <= (int) list2.get(i) &&
                    (int) list1.get(i + 1) > (int) list2.get(i + 1)) {//判断领先顺序的变化
                count2++;
                continue;//减少运行时间和资源的消耗
            }
            if ((int) list1.get(i) >= (int) list2.get(i) &&
                    (int) list1.get(i + 1) < (int) list2.get(i + 1)) {
                count2++;
                continue;
            }
        }
        System.out.println(count2);//输出结果
    }

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值