#[csu 1671 經營小賣部](
暑假很多店都關門了,還堅持營業的店可以收攬大多數客戶。
每個商品有自己的進價和售價,你可以根據自己的要求以進價購入任意數量的商品,
並全部以售價賣出。
但是部分商品要求小賣部要有對應設施,
比如冰淇淋和飲料要求有冰箱,粽子和速食麵要求有微波爐。
那麼,如何才能得到最大利潤?
多組資料,第一行有乙個整數
t ,表示有
t 組資料。
( t<=100
) 以下每組資料
第一行有 四
個整數x,n,p1
和 p2。x是你們的資金總數
(1<=
x <=
1000
) 。n 表示
商品種類數
(1<=
n <=
100) ,p1和p2分別
表示冰箱和微波爐的**
(1<=
p1,p2
<=
1000
) 。之後n行每行三個整數,c1,c2(
1<=
c1,c2
<=
1000)和a,分別表示這個商品的進價、售價和對裝置的要求(a為0表示無需求,a為1表示需要冰箱,a為2表示需要微波爐)。
乙個整數,表示最大的利潤。
210 3 1 1
1 2 0
1 3 1
2 4 2
10 3 1 1
5 6 0
3 5 1
5 11 2
176
lvv
現有資金x元,現在要購進n種商品,進價為c1,售價為c2。
同理,需要冰箱的話也得購買。要怎麼利用現有資金來購進商品。使得利潤最大化?
商品數目未定,總資金確定。可以很容易看出來這是乙個完全揹包問題。
把資金看成揹包,來往裡面放商品。
需要對只有空調、只要微波爐、兩個都要、兩個都不要四種情況分別做完全揹包。取最大值即為最大利潤。
#include
#include
#include
#include
#include
using
namespace
std;
int t,x,n,p1,p2,c1,c2,a,ans,sum;
int dp[10005];
struct nodes[105];//定義每個商品
int main()
ans=0;
//兩個都不買
memset(dp,0,sizeof(dp));
for(int j=0;j<=x;j++)
for(int i=0;iif(j>=s[i].jinjia&&s[i].xuqiu==0)
ans=max(ans,dp[j]-j);
}//買冰箱
memset(dp,0,sizeof(dp));
for(int j=0;j<=x-p1;j++)
for(int i=0;iif(j>=s[i].jinjia&&s[i].xuqiu!=2)
ans=max(ans,dp[j]-j-p1);
}//買微波爐
memset(dp,0,sizeof(dp));
for(int j=0;j<=x-p2;j++)
for(int i=0;iif(j>=s[i].jinjia&&s[i].xuqiu!=1)
ans=max(ans,dp[j]-j-p2);
}//兩個都買
memset(dp,0,sizeof(dp));
for(int j=0;j<=x-p1-p2;j++)
for(int i=0;iif(j>=s[i].jinjia)
ans=max(ans,dp[j]-j-p1-p2);
}cout
0;}
1671 凡事都要簽到啦
現在有學生的資訊,有語數外三門課程的成績,需要你幫我排序,排序的要求是,按照平均分從大到小排序,平均分一樣的按照數學分數從大到小,數學分數還是一樣的話,按照語文的分數從大到小排序,語文分數一樣的按照外語分數從小到大排序。第一行乙個整數n n 5000 接下來n行每一行三個整數表示,數學,英語,語文的...
mycat1 6 7 1 實現讀寫分離
說明 配置mycat 讀寫分離前需要先配置mysql主從複製架構,mycat官網推薦mysql主從模式和pxc模式。環境 centos7 mysql5.7 mycat1.6.7.1 配置賬號 對資料庫進行授權等允許使用者訪問那些資料庫。server.xml 123456 user testdb tr...
1671 設計前中後佇列
題目描述 請你設計乙個佇列,支援在前,中,後三個位置的 push 和 pop 操作。請你完成 frontmiddleback 類 frontmiddleback 初始化佇列。void pushfront int val 將 val 新增到佇列的 最前面 void pushmiddle int val...