離散化 USACO 1 2 擠牛奶

2021-10-09 00:06:33 字數 1427 閱讀 3229

description

三個農民每天清晨5點起床,然後去牛棚給3頭牛**。第乙個農民在300時刻(從5點開始計時,秒為單位)給他的牛**,一直到1000時刻。第二個農民在700時刻開始,在 1200時刻結束。第三個農民在1500時刻開始2100時刻結束。期間最長的至少有乙個農民在**的連續時間為900秒(從300時刻到1200時刻),而最長的無人**的連續時間(從**開始一直到**結束)為300秒(從1200時刻到1500時刻)。

你的任務是編乙個程式,讀入乙個有n個農民(1 <= n <= 5000)擠n頭牛的工作時間列表,計算以下兩點(均以秒為單位):

• 最長至少有一人在**的時間段。

• 最長的無人**的時間段。

input

line 1: 乙個整數n。

lines 2…n+1: 每行兩個小於1000000的非負整數,表示乙個農民的開始時刻與結束時刻。

output

一行,兩個整數,即題目所要求的兩個答案。

sample input

3

300 1000

700 1200

1500 2100

sample output

900 300
解題思路

離散化

基本思想:先把所有端點座標從小到大排序,將座標值與其序號一一對應。這樣便可以將原先的座標值轉化為序號後,對其應用前一種演算法,再將最後結果轉化回來得解。該方法對於線段數相對較少的情況有效,時間複雜度(n^2)。

–離散化之後,計算過程中加入對最長**時間和最長空白時間

#include

#include

#include

using namespace std;

struct dt

a[6000];

long long n,b[

10020

],ans,ans2,sum,sum2;

int main()

sort

(b+1

,b+2

*n+1);

for(int i=

2;i<=

2*n;i++)}

if(!k)}

printf

("%lld %lld"

,ans,ans2)

;}

SSL 1088 擠牛奶 離散化

time limit 1000ms memory limit 65536k total submit 317 accepted 171 description 三個農民每天清晨5 55點起床,然後去牛棚給3 33頭牛 第乙個農民在300 30030 0時刻 從5 55點開始計時,秒為單位 給他的牛 ...

P1204 擠牛奶(離散化)

題目描述 三個農民每天清晨 5 點起床,然後去牛棚給三頭牛 第乙個農民在 300 秒 從 5 點開始計時 給他的牛 一直到 1000 秒。第二個農民在 700 秒開始,在 1200 秒結束。第三個農民在 1500 秒開始,2100 秒結束。期間最長的至少有乙個農民在 的連續時間為 900 秒 從 3...

USACO1 2 解題報告

以後將會不定期刷usaco的題目。每做完一小章會寫乙份解題報告。這一小章裡面較簡單或者並不是很重要的題目就會直接放在裡面。而比較重要的題目就會單獨寫部落格,在這裡面放鏈結。這一章很簡單,全部都是很基礎的題目。就直接在這裡面一筆帶過。usaco 思路 沒啥好說的。id ssl zyc2 task te...