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

歡迎訪問 生活随笔!

生活随笔

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

java

交替领先的赛跑(洛谷P1568题题解,Java语言描述)

發布時間:2025/3/15 java 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 交替领先的赛跑(洛谷P1568题题解,Java语言描述) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目鏈接

P1568題目鏈接

分析

開始我想的是畫高中物理(哦不甚至是初中)的v-t圖像和s-t圖像,試圖分析,后來發現可能是我太笨了?反正沒法寫代碼,就冷靜下來思考思考怎么處理。

這題很不友好的是沒給總里程、總時間的任何一個。
還有,一定要先給完一個人再給第二個,就必須存數組,費空間。
更過分的是,二者不同步,給的是一段一段的,除非細化到每一秒,否則沒法步調一致……
只能開大數組咯……

開三個大數組,第一個先記錄SH每時刻的路程,再讀一下KC的每一時刻的路程,在記錄每時刻路程結束的時候得到總路程。

為什么比較的時候要賦值為1和2,而不是直接利用初始化的0呢?
因為我們從1開始記錄,0時刻是0:0,可能(其實根據多個測試點,是一定的)會WA……

再給一下最后-1的理由:
因為flag[0]=0,而falg[1]不可能為0,只可能為1或2,所以flag[0]到flag[1]多加了1,所以要減掉1。

AC代碼(Java語言描述)

import java.util.Scanner;public class Main {private static int[] sh_array = new int[1000010], kc_array = new int[1000010], flag = new int[1000010];private static Scanner scanner = new Scanner(System.in);private static int init(int[] array, int num) {int temp_v, temp_t, pointer = 0;for(int i = 0; i < num; i++) {temp_v = scanner.nextInt();temp_t = scanner.nextInt();for(int j = 1; j <= temp_t; j++) {array[pointer+j] = array[pointer+j-1] + temp_v;}pointer += temp_t;}return pointer;}public static void main(String[] args) {int n = scanner.nextInt(), m = scanner.nextInt(), pointer = 0, counter = 0;pointer = init(sh_array, n);init(kc_array, m);scanner.close();for(int i = 1; i <= pointer; i++) {if(sh_array[i] >= kc_array[i]) {flag[i] = 1;} else {flag[i] = 2;}if(flag[i-1] != flag[i]) {counter++;}}System.out.println(counter-1);} }

總結

以上是生活随笔為你收集整理的交替领先的赛跑(洛谷P1568题题解,Java语言描述)的全部內容,希望文章能夠幫你解決所遇到的問題。

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