201812-2 小明放学

201812-2 小明放学
题目
在这里插入图片描述

思路
画个图就可以知道红绿灯之间的关系,比较简单,看在哪个时间段就行了,注意用long保存数据。

import java.util.*;

class Main {

    public static long cal(long val,long r,long gy,long yy){
        if(val<r){
            return r-val;
        }
        else if(r<=val && val<gy){
            return 0;
        }
        else {
            return yy-val+r;
        }
    }
    public static void main(String[] args) {
        Scanner sc= new Scanner(System.in);
        long r=sc.nextInt();
        long y=sc.nextInt();
        long g=sc.nextInt();
        long N=sc.nextInt();

        long gy=r+g;//绿黄临界
        long yy=r+y+g;//最终临界
        long sum=0;//计算所用时间
        for(int i=0;i<N;i++){
            long k=sc.nextInt();
            long t=sc.nextInt();
            if(k==0){
                sum+=t;
            }
            else if(k==1){//红灯
                long gg=(r-t+sum)%yy;
                sum+=cal(gg,r,gy,yy);
            }
            else if(k==2){//黄灯
                long gg=(yy-t+sum)%yy;
                sum+=cal(gg,r,gy,yy);
            }
            else{//绿灯
                long gg=(gy-t+sum)%yy;
                sum+=cal(gg,r,gy,yy);
            }
        }
        System.out.print(sum);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值