• CSP 201812-2 小明放学


      问题描述:


    解题思路:

    1. 由于数据的量较大,需要使用long long来存储结果,否则会爆掉结果只能得到一部分的分
    2. 可以类比时钟,将红绿灯的变换当成时钟的运转,这样用模运算来断定红绿灯在到达时处于什么颜色
    3. 注意看前一题上学,我做的时候没看,导致以为黄灯能直接走,卡了很久

      代码实现:

     

     1 #include<iostream>
     2 
     3 using namespace std;
     4 
     5 int n;
     6 int dur[3];
     7 int light;//当前是什么灯
     8 int cost;//这段路程要花多少时间
     9 int wait;
    10 long long sum=0;//总时间
    11 
    12 void getwait(int l,int remain)
    13 {
    14     int j;
    15     if(l==1)
    16         j=0;
    17     else if(l==2)
    18         j=2;
    19     else
    20         j=1;
    21     int arit = (sum+dur[j]-remain)%(dur[2]);//处于什么段
    22     //判断是不是红灯
    23     if(arit<dur[0])
    24         wait = dur[0]-arit;
    25     //是不是黄灯
    26     else if(arit>=dur[1])
    27         wait=dur[0]+dur[2]-arit;
    28     else
    29         wait = 0;
    30 }
    31 int main()
    32 {
    33     cin>>dur[0]>>dur[2]>>dur[1];
    34     dur[1]+=dur[0];
    35     dur[2]+=dur[1];
    36     cin>>n;
    37     while(n--)
    38     {
    39         cin>>light>>cost;
    40         if(!light)//单纯的走一段路
    41         {
    42             sum+=cost;
    43         }else{
    44             getwait(light,cost);
    45             sum+=wait;
    46         }
    47 
    48     }
    49     cout<<sum;
    50     return 0;
    51 }

    总结:

      需要注意题中所给的条件

      观察数据的大小,判断是否会超出存储范围。

    一条有梦想的咸鱼
  • 相关阅读:
    java 单例模式-饿懒汉模式
    Java注解
    Java集合
    Java数据类型
    java实现多线程三种方法
    Java并发 线程池
    spring ioc(反转控制)
    事件驱动的Java框架
    js 标签属性与导航
    input 标签和a标签实现超链接的区别
  • 原文地址:https://www.cnblogs.com/Crossea/p/11285921.html
Copyright © 2020-2023  润新知