濟南刷題衝刺 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完全相同均勻分佈在所有資料中。