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...