1. 程式人生 > >8.22--練習賽F題--Muddy roads (模擬)

8.22--練習賽F題--Muddy roads (模擬)

原題:

Farmer John has a problem: the dirt road from his farm to town has suffered in the recent rainstorms and now contains (1 <= N <= 10,000) mud pools. 

Farmer John has a collection of wooden planks of length L that he can use to bridge these mud pools. He can overlap planks and the ends do not need to be anchored on the ground. However, he must cover each pool completely. 

Given the mud pools, help FJ figure out the minimum number of planks he needs in order to completely cover all the mud pools. Input * Line 1: Two space-separated integers: N and L 

* Lines 2..N+1: Line i+1 contains two space-separated integers: s_i and e_i (0 <= s_i < e_i <= 1,000,000,000) that specify the start and end points of a mud pool along the road. The mud pools will not overlap. These numbers specify points, so a mud pool from 35 to 39 can be covered by a single board of length 4. Mud pools at (3,6) and (6,9) are not considered to overlap. 
Output * Line 1: The miminum number of planks FJ needs to use. Sample Input
3 3
1 6
13 17
8 12
Sample Output
5
Hint INPUT DETAILS: 

FJ needs to use planks of length 3 to cover 3 mud pools. The mud pools cover regions 1 to 6, 8 to 12, and 13 to 17. 

OUTPUT DETAILS: 

FJ can cover the mud pools with five planks of length 3 in the following way: 
                   111222..333444555....

                   .MMMMM..MMMM.MMMM....

                   012345678901234567890
題意:鋪路問題。給出n段長度的起止位置,要求用長為l的木板鋪路,最少用多少塊木板可以鋪完。

思路:

既然給出n個泥坑的起止位置,而且不重合,那麼就按照開始的位置進行排序。

排序後從頭開始鋪木板。具體見程式碼。

原始碼:

#include <iostream>
#include <cstring>
#include <algorithm>
#include <stdio.h>
#include <cmath>
#define MAX 100000
using namespace std;
struct DIS
{
    int s,e;
}dis[MAX];
bool cmp(DIS a,DIS b)
{
    return a.s < b.s;
}
int main()
{
    int n,l;
    scanf("%d%d",&n,&l);
    for (int i = 1; i <= n; i++)
    {
        scanf("%d%d",&dis[i].s,&dis[i].e);
    }
    sort(dis + 1, dis + 1 + n,cmp);
    int sum = 0;//sum表示總共需要的木板
    int length = 0;
    for (int i = 1; i <= n; i++)
    {
        if (length >= dis[i].e)//如果當前長度大於泥坑的末端,則上一塊木板可以鋪完,continue;
            continue;
        length = max(dis[i].s,length);//否則看是否鋪開新的泥坑。即比較當前長度和下一個泥坑開始的長度。
        while (length < dis[i].e)//這裡就是鋪下一個泥坑,直到當前長度鋪完當前長度的泥坑。
        {
            sum += 1;
            length += l;
        }
    }
    printf("%d\n",sum);
    return 0;
}


相關推薦

8.22--練習賽F--Muddy roads 模擬

原題: Farmer John has a problem: the dirt road from his farm to town has suffered in the recent rainstorms and now contains (1 <= N &l

容斥定理 -- 第九屆ACM山東省賽F Four-tuples SDUT4219

Four-tuplesTime Limit: 2000 msMemory Limit: 524288 KiBOutputFor each test case, output one line containing one integer, representing the a

2018.8.22 練習賽

stdio.h 一行 fine content urn 整數 i++ class status T1 井字棋 題意:給定一井字棋殘局,問結果 狀壓記憶化暴搜,博弈 1 #include<stdio.h> 2 #include<

ACM-ICPC 2018 瀋陽賽區網路預賽 F Fantastic Graph 有源匯的上下界可行流

題意 給你兩個集合X,Y,X集合有N個點,Y集合有M個點,輸入一個上下界down,up,現在有K條邊,輸入K條邊(u,v)。每選擇一條邊(u,v),u和v點的權值就+1,問能否通過選擇一些邊(每條邊只能選一次)使得所有點的權值都在[down,up]之間。 思路 有源匯的

ACM-ICPC 2018 瀋陽賽區網路預賽 F Fantastic Graph上下界網路流

                                                    Fantastic Graph "Oh, There is a bipartite graph.""Make it Fantastic." X wants to che

2018年山東省第九屆acm省賽 F Four-tuples離散數學 容斥定理

Four-tuplesTime Limit: 2000 ms Memory Limit: 524288 KiBProblem DescriptionGiven l1, r1, l2, r2, l3, r3, l4, r4, please count the number of

Linux 4.10.8 根文件系統制作---環境搭建

zxvf fstab project 根據 構建 yaffs http tar.bz2 onf 一、工具   制作工具為busybox   下載地址:https://busybox.net/   解壓:    二、制作文件系統   進入目錄,執行make menuconfi

總結——電影ssoi

style urn 題解 sso pyw -c 有一個 boa stc 題目: 題目背景 SOURCE:NOIP2014-SXYZ T2 題目描述 小美去看電影,發現這個電影票很神奇,有一個編號 (x,y) 表示為第 x 排第 y 位。 小美是個聰明的女孩子,她有自己

8/11 TF聽力及閱讀訓練2

以及 練習 原理 最好的 什麽是 視頻 密度 並且 能夠 什麽是聽力訓練,什麽是訓練。 有一篇知乎的回答非常好,我很喜歡。 作者:梁躍鏈接:https://www.zhihu.com/question/20407472/answer/83390431來源:知乎著作權歸作者所

MySQL 8.0.2復制新特性翻譯

ogl 防止 將不 地址 arc -- 等待 download 日誌 譯者:知數堂星耀隊 MySQL 8.0.2復制新特性 MySQL 8 正在變得原來越好,而且這也在我們MySQL復制研發團隊引起了一陣熱潮。我們一直致力於全面提升MySQL復制,通過引入新的和一些有趣

總結——mokiabzoj1176

output 引號 pac print nod %d 每次 題解 針對 題目: 維護一個W*W的矩陣,初始值均為S.每次操作可以增加某格子的權值,或詢問某子矩陣的總權值.修改操作數M<=160000,詢問數Q<=10000,W<=2000000. In

總結——arrayssoj

blog cst iostream data- 兩個 () logs clas size 題目: 題目描述 給定 2 個正整數序列 A1, A2,序列長度分別為 L1, L2。你可以進行以下的一次操作:1. 選擇兩個數 K1,K2(1≤K1≤L1, 1≤K2≤L2);2.

安徽省小學組省賽2014年第一 木板面積C++

Go 範圍 logs 保留 童鞋 dash ~~ 輸入數據 std 1.木板面積(area) 一年一次的夏令營又要開始了,卡卡西和小夥伴們早就做好了準備,滿心期待著這趟快樂之旅。在一個陽光明媚的清晨,卡卡西在老師的帶領下來到了這次夏令營的首站——&

探果庫實踐

7月 題目 bsp tle 頁面 alt get blank 決定 在這個上面已經花了很長一段時間,還沒有真實的接觸一個用戶,不確定這些時間是不是付諸東流。 現在決定把這個過程記錄下來。 網站首頁 :www.tamguo.com 章節頁面:http://www.tamg

牛客網錯集系列

目錄   1.高優先順序的執行緒比低優先順序的執行緒執行得更快。() 2.下列哪些語句關於 java 記憶體回收的說明是正確的? 3.Java的跨平臺特性是指它的原始碼可以在多個平臺執行。 4.關於多執行緒 5. 假設 a&nb

牛客網錯集系列

目錄 1.關於Integer的一個問題 2.關於泛型的一道題 3.關於Integer型別超過128時的一道題 4.以下哪一個不是賦值符號? 5.關於try/catch/finally 6.關於for迴圈的執行順序問題 7.下面程式碼的輸出結果是什麼? 8.多執行緒

牛客網錯集系列

目錄 1.在開發中使用泛型取代非泛型的資料型別(比如用ArrayList取代ArrayList),程式的執行時效能會變得更好。() 2.關於異常丟擲 3.list是一個ArrayList的物件,哪個選項的程式碼填到//todo delete處,可以在Iterator遍歷的過程中正確並

牛客網錯集系列

1.java基本型別的預設值和取值範圍  int      0        -2^31—-2^31-1 short   0 &

Constructing RoadsHDU

                         

Codeforces-629E Famil Door and Roads期望

題意 給定一棵 n n n 個節點的樹, m m m 個詢問,每一個詢問包含兩個引數 a,b