zoukankan      html  css  js  c++  java
  • 201812-2 小明放学 Java

    思路:
    红绿灯每种灯亮划分区间,在[0,r]区间内红灯亮,在(r,g+r]区间内绿灯亮,在(r+g,r+g+y]区间内黄灯亮,在划分好区间后只需要判断当小明到达红绿灯时是哪个灯在亮,就可以判断出通过红绿灯的时间

    余数表示在一个新的周期中,灯已经走过的时间。

    import java.util.Scanner;
    
    public class Main {
    	public static void main(String[] args) {
    		Scanner sc = new Scanner(System.in);
    		int r = sc.nextInt();
    		int y =sc.nextInt();
    		int g = sc.nextInt(); 
    		int x = g+r+y;
    		
    		int n = sc.nextInt();
    		long sum = 0;//int会溢出
    		for(int i=0;i<n;i++) {
    			int flag = sc.nextInt();
    			int time = sc.nextInt();
    			long tmp = 0;
    			if(flag == 0) {
    				sum += time;
    			}
    			else {								
    				if(flag == 1) {					//红灯
    					tmp = (sum-time+r)%x;
    				}
    				else if(flag == 2)				//黄灯
    					tmp = (sum-time)%x;
    				else if(flag == 3) {			        //绿灯
    					tmp = (sum-time+r+g)%x;
    				}
    				if(tmp<=r) {					//在[0,r]红灯区间内
    					sum += r-tmp;
    				}
    				else if(tmp>r+g)				//在(r+g,r+g+y]黄灯区间内
    					sum +=x-tmp+r;
    			}
    		}
    		sc.close();
    		System.out.println(sum);
    	}
    }
    
  • 相关阅读:
    读入输出优化
    码表
    windows下bat批处理实现守护进程(有日志)
    cmd批处理常用符号详解
    批处理之 for/f 详解
    WINDOWS XP中用命令行管理用户 net user命令
    VacmMIB
    工作遇到
    snmp之GenericAddress
    snmp4j 之 ArgumentParser
  • 原文地址:https://www.cnblogs.com/yu-jiawei/p/12376014.html
Copyright © 2011-2022 走看看