日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

二维费用 买糖果

發布時間:2025/3/18 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 二维费用 买糖果 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Description

清明君、五一君和六一君三個人是好朋友。

他們很喜歡去一家糖果店買糖果,糖果店有巧克力和草莓兩種口味的糖果出售。清明君喜歡吃巧克力味的糖果,六一君喜歡吃草莓味的糖果,五一君是個吃貨,兩種口味的糖果他都很喜歡吃。店老板把兩種口味的糖果混在一起裝在罐子里,于是每個罐子里每種糖果的數量都可能不相同。

這一天,清明君、五一君和六一君三個人去買糖果。他們的錢只能購買m罐糖果。清明君想要a顆巧克力味的糖果,六一君想要b顆草莓味的糖果,五一君則想要糖果的數量越多越好。五一君想知道在滿足清明君和六一君的要求下,自己最多能吃到多少顆糖果。

Input

輸入包含多組數據。

每組數據,第一行為兩個整數n,m(1<=m<=n<=100),分別表示糖果店里糖果的總罐數和他們能夠買到糖果的罐數。

接下來有n行,每行兩個整數x,y(0<=x,y<=10),表示第i罐糖果里有x顆巧克力味糖果和y顆草莓味糖果。

最后一行為兩個整數a,b。表示清明君想要a顆巧克力味的糖果,六一君想要b顆草莓味的糖果。

Output

每組測試數據輸出一個整數占一行,為五一君最多能吃到糖果的個數。如果沒有能滿足清明君和六一君要求的方案,則輸出-1。

Sample Input

3 2 1 10 3 2 3 4 5 3

Sample Output

4

思路:dp[i][j]代表的i罐糖果巧克力是j顆(j>=a或者<=suma)的情況下的最大草莓糖果

#include <stdio.h> #include <string.h> #include <algorithm> using namespace std; int dp[110][1100],a[110],b[110]; int n, m, x, y; int main() {while(~scanf("%d%d", &n, &m)){int ans=0;for(int i =0; i<n; i++){scanf("%d%d", &a[i], &b[i]);ans+=a[i];}scanf("%d%d",&x, &y);memset(dp, -1, sizeof(dp));dp[0][0]=0;for(int i = 0; i<n; i++){for(int j = m; j>=1; j--){for(int p=ans;p>=a[i]; p--){if(dp[j-1][p-a[i]]==-1)continue;dp[j][p]=max(dp[j-1][p-a[i]]+b[i],dp[j][p]); //當一開始的時候的dp[j][p]==-1.然后就會選中不符合條件的,因為dp[j-1][p-a[i]]+b[i]>0}}}int best=-1;for(int j=x;j<=ans;j++){if(dp[m][j]>=y&&(j+dp[m][j])>best){best=dp[m][j]+j;}}if(best==-1)puts("-1");elseprintf("%d\n",best-(x+y));}return 0; }



?

總結

以上是生活随笔為你收集整理的二维费用 买糖果的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。