Vijos P1428 貪婪格爾曼

2021-07-22 17:16:18 字數 1604 閱讀 8580

p1428貪婪格爾曼

accepted

從前有2隻狗,大的叫大狗,小的叫小狗,它們2個合起來就是狗兒們,使用英語的人把它們寫作girlman,傳來傳去,到最後大家決定叫它們格爾曼。它們的叫聲很特別,但是它們十分吝嗇它們的叫聲,你為了聽到它們的叫聲,決定買狗餅乾送給它們吃,不同種類的餅乾能讓它們叫的次數不一樣,同一塊餅乾對於大小格爾曼的效果也不一樣。它們很貪婪,如果你只給其中乙隻格爾曼吃狗餅乾或者給兩隻格爾曼吃的不一樣,有乙隻就會不高興,因此你買狗餅乾的時候總要兩塊兩塊地買,而且現在每類餅乾也只有2塊(想要多的也沒得)。現在不是流行節約型社會嗎?因此你也不能浪費,你要求的是在滿足你要聽格爾曼叫聲次數要求的情況(兩隻格爾曼實際叫的次數都不小於你的要求即可)下的最小花費是多少。

輸入檔案的第一行為3個整數n、s、b,分別表示狗餅乾的類數、你想聽到的小格爾曼的叫聲次數和大格爾曼的叫聲次數,接下來有n行,第i+1行有3個整數si、bi、ci,分別表示第i類狗餅乾能讓小格爾曼叫的次數、能讓大格爾曼叫的次數和該類餅乾的單價。

30%的資料滿足1<=n<=30;

100%的資料滿足1<=n<=1000、1<=s,b<=50、0<=si ,bi ,ci <=2147483647。

輸出檔案只有乙個整數,為滿足你的要求情況下的最小花費。

5 5 10

1 2 5

2 4 10

3 7 8

1 11 36

6 0 18

36

1 second

conan from hnsdfz

覺得這個題很好啊
設dp[i][j]為讓小格爾曼叫i次,大格爾曼叫j次需要的最小花費
詳細題解請看注釋……

**:

#include 

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define maxn (4000 + 20) #define inf 0x3f3f3f3f #define pi acos(-1.0) using namespace std; typedef long long int lli; lli sma[maxn],big[maxn],pri[maxn]; lli dp[maxn][maxn]; int main() dp[0][0] = 0; for(int i = 1;i <= n;i ++) } } printf("%lld\n",dp[s][b] * 2); return 0; }

1428 數列分段

對於給定的乙個長度為nn的正整數數列a i a i 現要將其分成連續的若干段,並且每段和不超過mm 可以等於mm 問最少能將其分成多少段使得滿足要求。第1行包含兩個正整數n,mn,m,表示了數列a i a i 的長度與每段和的最大值 第2行包含nn個空格隔開的非負整數a i a i 如題目所述。乙個...

1428 活動安排問題

input 第一行乙個正整數n n 10000 代表活動的個數。第二行到第 n 1 行包含n個開始時間和結束時間。開始時間嚴格小於結束時間,並且時間都是非負整數,小於1000000000 output 一行包含乙個整數表示最少教室的個數。input示例 3 1 23 4 2 9output示例 2 ...

1428 活動安排問題

有若干個活動,第i個開始時間和結束時間是 si,fi 同乙個教室安排的活動之間不能交疊,求要安排所有活動,最少需要幾個教室?input 第一行乙個正整數n n 10000 代表活動的個數。第二行到第 n 1 行包含n個開始時間和結束時間。開始時間嚴格小於結束時間,並且時間都是非負整數,小於10000...