EOJ1600公路巡邏

2021-10-03 12:24:55 字數 1577 閱讀 6010

單點時限: 10.0 sec

記憶體限制: 256 mb

在一條沒有分岔的高速公路上有 n 個關口,相鄰兩個關口之間的距離都是 10km。所有車輛在這條高速公路上的最低速度為 60km/h,最高速度為 120km/h,並且只能在關口處改變速度。

巡邏的方式是在某個時刻 ti 從第 ni 個關口派出一輛巡邏車勻速駛抵第 (ni+1) 個關口,路上耗費的時間為 ti 秒。

兩輛車相遇是指它們之間發生超車或者兩車同時到達某關口(同時出發不算相遇)。

巡邏部門想知道一輛於 6 點整從第 1 個關口出發去第 n 個關口的車(稱為目標車)最少會與多少輛巡邏車相遇,請程式設計計算之。假設所有車輛到達關口的時刻都是整秒。

輸入格式

輸入第一行為兩個用空格隔開的整數,分別為關口數 n 和巡邏車數 m。(1第一次看這個題感覺應該是dp,然後考慮了很多種寫法,但是一直因為擔心自己的寫法不夠優秀會tle所以很糾結

後來發現只要把巡邏車輛按照出發點分開時間就差不多了,比我想象的要簡單

至於如何判斷相遇——畫個x-t函式影象你自己就明白了

#include

#include

#include

#include

#include

#define rt long long

using

namespace std;

inline rt read()

while

(isdigit

(ch)

)return u*v;

}struct car

an[310];

char as[10]

;rt dp[55]

[86400

],l[55]

,r[55

],n,m;

intmain()

memset

(dp,

0x3f

,sizeof

(dp));

dp[1]

[21600]=

0;for(

int i=

1;i)for

(int j=

21600

;j<

86400

;j++)if

(dp[i]

[j]!=dp[0]

[0])

} rt minn=dp[0]

[0],ans;

for(

int i=

21600

;i<

86400

;i++)if

(dp[n]

[i][i],ans=i;

printf

("%lld\n"

,minn)

; rt hour=ans/

3600

; ans%

=3600

; rt minute=ans/60;

ans%=60

;printf

("%02d%02d%02d"

,hour,minute,ans)

;return0;

}

EOJ 莫干山奇遇

出題人當然是希望出的題目有關oxx,於是想方設法給題目配上一些有關oxx的背景故事,使得它看起來不那麼無趣。但有的時候卻無法引入合適的小姐姐,使得oxx顯得非常可憐。所以出題人刪除了故事,只留下乙個枯燥乏味的數學問題。故事已刪除 給乙個長度為n的序列a1,a2,an,求乙個長度為m的序列b1,b2,...

EOJ 2794 鍊錶

大概是在10000 10的矩陣裡找兩行,兩列,使得兩行中的對應列是相同的。思路 在長列中hash,建立hash陣列,表示這個hash i 的i前乙個位置,建立鍊錶next i 指向hash value i 這樣就能o n 的找到所有相同的數的乙個鍊錶。然後搜尋兩列的時候比較當前指向的位置,當前比較短...

EOJ 3256 拼音魔法

time limit per test 1.0 seconds time limit all tests 1.0 seconds memory limit 256 megabytes 魔法學校小學一年級有一種題。就是給乙個字的拼音,給乙個聲調,讓你正確地注音。但魔法老師給了巨量的題,你不用魔法根本不...