[YbtOJ Dfs] 最大費用

題目描述

商場一共 n 個物品,第 i件物品的價格為 a_i ,每件物品只能買一件,你手上有 m 塊錢。
求最多支出多少錢。

輸入格式

第一行兩個整數(shù) n,m。
接下來 n 個整數(shù),表示 a_i

輸出格式

輸出最多支出是多少錢。

樣例

樣例 1 輸入

3 10
1 2 3

樣例 1 輸出

6

樣例 2 輸入

4 10
4 3 5 11

樣例 2 輸出

9

數(shù)據(jù)范圍與提示

對于 10\% 的數(shù)據(jù), n\leq 10 。
對于 30\% 的數(shù)據(jù), n\leq 20 。
對于 60\% 的數(shù)據(jù), n\leq 30
對于 100\% 的數(shù)據(jù), 1\leq n\leq 40 。


標程

#include <bits/stdc++.h>
using namespace std;
const int maxn=1.3e6;
int n,m,v,u,a[maxn],b[2],c[2][maxn];

void dfs(int bo,int x,int t,int s) {
    //所有的價值組合
    if(x>t) {
        c[bo][++b[bo]]=s;
        return;
    }
    dfs(bo,x+1,t,s);
    dfs(bo,x+1,t,s+a[x]);
}
int main() {
    cin>>n>>m;
    u=n>>1;
    for(int i=1; i<=u; i++)cin>>a[i];
    dfs(0,1,u,0);
    v=n-u;
    for(int i=1; i<=v; i++)cin>>a[i];
    dfs(1,1,v,0);
    sort(c[1]+1,c[1]+b[1]+1);
    int ans=0;
    for(int i=1; i<=b[0]; i++) {
        int x=upper_bound(c[1]+1,c[1]+b[1]+1,m-c[0][i])-c[1]-1;
        ans=max(ans,c[0][i]+c[1][x]);
    }
    cout<<ans<<endl;
    return 0;
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 更多干貨就在我的個人博客 BlackBlog.tech 歡迎關(guān)注!也可以關(guān)注我的csdn博客:黑哥的博客謝謝大家!...
    BlackBlog__閱讀 2,674評論 0 6
  • 題目描述 如題,給出一個網(wǎng)絡圖,以及其源點和匯點,求出其網(wǎng)絡最大流。 輸入輸出格式 輸入格式第一行包含四個正整數(shù)N...
    Ricardo_Y_Li閱讀 7,948評論 2 4
  • 一門武功能否傳承久遠并被發(fā)揚光大,是要看緣分的。一般來說,師傅傳授給徒弟的武功總要打個折扣,于是越往后傳,弟子們的...
    我好菜啊_閱讀 289評論 0 0
  • 火車出站 Problem Description CGY管理著一個火車站的調(diào)度問題,這個車站有個中轉(zhuǎn)站,可以停靠任...
    myleosu閱讀 1,670評論 0 2
  • 久違的晴天,家長會。 家長大會開好到教室時,離放學已經(jīng)沒多少時間了。班主任說已經(jīng)安排了三個家長分享經(jīng)驗。 放學鈴聲...
    飄雪兒5閱讀 7,810評論 16 22

友情鏈接更多精彩內(nèi)容