日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

CCF2018年:小明放学C++答案

發布時間:2023/12/14 c/c++ 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CCF2018年:小明放学C++答案 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目背景

  漢東省政法大學附屬中學所在的光明區最近實施了名為“智慧光明”的智慧城市項目。具體到交通領域,通過“智慧光明”終端,可以看到光明區所有紅綠燈此時此刻的狀態。小明的學校也安裝了“智慧光明”終端,小明想利用這個終端給出的信息,估算自己放學回到家的時間。

問題描述

  一次放學的時候,小明已經規劃好了自己回家的路線,并且能夠預測經過各個路段的時間。同時,小明通過學校里安裝的“智慧光明”終端,看到了出發時刻路上經過的所有紅綠燈的指示狀態。請幫忙計算小明此次回家所需要的時間。

輸入格式

  輸入的第一行包含空格分隔的三個正整數 r、y、g,表示紅綠燈的設置。這三個數均不超過 106。
  輸入的第二行包含一個正整數 n,表示小明總共經過的道路段數和路過的紅綠燈數目。
  接下來的 n 行,每行包含空格分隔的兩個整數 k、t。k=0 表示經過了一段道路,將會耗時 t 秒,此處 t 不超過 106;k=1、2、3 時,分別表示出發時刻,此處的紅綠燈狀態是紅燈、黃燈、綠燈,且倒計時顯示牌上顯示的數字是 t,此處 t 分別不會超過 r、y、g。

輸出格式

  輸出一個數字,表示此次小明放學回家所用的時間。

樣例輸入

30 3 30
8
0 10
1 5
0 11
2 2
0 6
0 3
3 10
0 3

樣例輸出

46

樣例說明

  小明先經過第一段路,用時 10 秒。第一盞紅綠燈出發時是紅燈,還剩 5 秒;小明到達路口時,這個紅綠燈已經變為綠燈,不用等待直接通過。接下來經過第二段路,用時 11 秒。第二盞紅綠燈出發時是黃燈,還剩兩秒;小明到達路口時,這個紅綠燈已經變為紅燈,還剩 11 秒。接下來經過第三、第四段路,用時 9 秒。第三盞紅綠燈出發時是綠燈,還剩 10 秒;小明到達路口時,這個紅綠燈已經變為紅燈,還剩兩秒。接下來經過最后一段路,用時 3 秒。共計 10+11+11+9+2+3 = 46 秒。

評測用例規模與約定

  有些測試點具有特殊的性質:
  * 前 2 個測試點中不存在任何信號燈。
  測試點的輸入數據規模:
  * 前 6 個測試點保證 n ≤ 103。
  * 所有測試點保證 n ≤ 105。

#include <iostream> typedef long long ll; //用long long,用int會爆掉內存 using namespace std;int main() {ll r, y, g;cin >> r >> y >> g;ll n;cin >> n;int input[n][2];int k, t;ll result = 0;ll temp = 0;for (int i = 0; i < n; i++){cin >>k >> t;input[i][0] = k;input[i][1] = t;}for (int i = 0; i < n; i++){temp = result%(r + y + g);if (input[i][0] == 0){result = result + input[i][1]; }else if(input[i][0] == 1){if(temp < input[i][1]){result = result + input[i][1] - temp; }else if(temp < input[i][1] + g){continue;}else if(temp < input[i][1] + g + y){result = result + input[i][1] + g + y - temp + r;}else{result = result + r + y + g + input[i][1] - temp;}}else if(input[i][0] == 2){if(temp < input[i][1]){result = result + input[i][1] - temp + r; }else if(temp < input[i][1] + r){result = result + r + input[i][1] - temp;}else if(temp < r + input[i][1] + g){continue;}else{result = result + r + y + g - temp + r + input[i][1];}}else if(input[i][0] == 3){if (temp < input[i][1]){continue;}else if(temp < input[i][1] + y){result = result + input[i][1] + y - temp + r;}else if(temp < input[i][1] + y + r){result = result + input[i][1] + y + r - temp;}else{continue;}}}cout << result;return 0; }

?

總結

以上是生活随笔為你收集整理的CCF2018年:小明放学C++答案的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。