1. 程式人生 > >濟南刷題衝刺 Day1 下午

濟南刷題衝刺 Day1 下午

水題(water)

Time Limit:1000ms   Memory Limit:128MB

題目描述

LYK出了道水題。

這個水題是這樣的:有兩副牌,每副牌都有n張。

對於第一副牌的每張牌長和寬分別是xi和yi。對於第二副牌的每張牌長和寬分別是aj和bj。第一副牌的第i張牌能覆蓋第二副牌的第j張牌當且僅當xi>=aj並且yi>=bj。(注意牌不能翻轉)當然一張牌只能去覆蓋最多一張牌,而不能覆蓋好多張。

LYK想讓兩副牌的各n張  一  一  對應疊起來。它想知道第二副牌最多有幾張能被第一副牌所覆蓋。

輸入格式(water.in)

       第一行一個數n。

       接下來n行,每行兩個數xi,yi。

       接下來n行,每行兩個數aj,bj。

輸出格式(water.out)

輸出一個數表示答案。

輸入樣例

3

2 3

5 7

6 8

4 1

2 5

3 4

輸出樣例

2

資料範圍

對於50%的資料n<=10。

對於80%的資料n<=1000。

對於100%的資料1<=n<=100000,1<=xi,yi,aj,bj<=10^9。

夢境(dream)

Time Limit:1000ms   Memory Limit:128MB

題目描述

LYK做了一個夢。

這個夢是這樣的,LYK是一個財主,有一個僕人在為LYK打工。

不幸的是,又到了月末,到了給僕人發工資的時間。但這個僕人很奇怪,它可能想要至少x塊錢,並且當LYK湊不出恰好x塊錢時,它不會找零錢給LYK。

LYK知道這個x一定是1~n之間的正整數。當然摳門的LYK只想付給它的僕人恰好x塊錢。但LYK只有若干的金幣,每個金幣都價值一定數量的錢(注意任意兩枚金幣所代表的錢一定是不同的,且這個錢的個數一定是正整數)。LYK想帶最少的金幣,使得對於任意x,都能恰好拼出這麼多錢。並且LYK想知道有多少攜帶金幣的方案總數

具體可以看樣例。

輸入格式(dream.in)

       第一行一個數n,如題意所示。

輸出格式(dream.out)

輸出兩個數,第一個數表示LYK至少攜帶的金幣個數,第二數表示方案總數。

輸入樣例

6

輸出樣例

3 2

樣例解釋

LYK需要至少帶3枚金幣,有兩種方案,分別是{1,2,3},{1,2,4}來恰好得到任意的1~n之間的x。

輸入樣例2

10

輸出樣例2

4 8

資料範圍

對於30%的資料n<=10。

對於60%的資料n<=100。

對於100%的資料n<=1000。

動態規劃(dp)

Time Limit:2000ms   Memory Limit:128MB

題目描述

LYK在學習dp,有一天它看到了一道關於dp的題目。

這個題目是這個樣子的:一開始有n個數,一段區間的價值為這段區間相同的數的對數。我們想把這n個數切成恰好k段區間。之後這n個數的價值為這k段區間的價值和。我們想讓最終這n個數的價值和儘可能少。

例如6個數1,1,2,2,3,3要切成3段,一個好方法是切成[1],[1,2],[2,3,3],這樣只有第三個區間有1的價值。因此這6個數的價值為1。

LYK並不會做,丟給了你。

輸入格式(dp.in)

       第一行兩個數n,k。

       接下來一行n個數ai表示這n個數。

輸出格式(dp.out)

一個數表示答案。

輸入樣例

10 2

1 2 1 2 1 2 1 2 1 2

輸出樣例

8

資料範圍

對於30%的資料n<=10。

對於60%的資料n<=1000。

對於100%的資料1<=n<=100000,1<=k<=min(n,20),1<=ai<=n。

其中有30%的資料滿足ai完全相同均勻分佈在所有資料中。