USACO備考衝刺必刷題 | P1460 Healthy Holsteins

2023年12月10日19:40:07 教育 1979

學習C++從娃娃抓起!記錄下USACO(美國信息學奧賽)備考學習過程中的題目,記錄每一個瞬間。

附上匯總貼:USACO備考衝刺必刷題 | P1460 Healthy Holsteins - 天天要聞

#include <bits/stdc++.h>
using namespace std;
int vType, fType, p;
int v[30], f[20][30], sel[20], ans[20];
int minSelCnt = 20;
bool check(int selCnt)  // 定義維他命檢查函數
{
    for (int i=1; i<=vType; i++) {  // 依次遍歷所有維他命種類
        int sum = 0;  // 定義每種維他命的總數,每次循環初始為0
        for (int j=1; j<=selCnt; j++) {  // 依次遍歷選擇的那些飼料
            sum += f[sel[j]][i];  // sum加上選擇的飼料編號的維他命值
        }
        if (sum<v[i]) {  // 如果總和
            return false;
        }
    }
    return true;
}
void dfs(int pos, int cnt)  // 定義dfs函數,pos為飼料編號,cnt為飼料選擇的數量
{
    if (pos > fType) {  // dfs退出條件,直到選到最後一種飼料編號
        if (check(cnt) && cnt < minSelCnt) {  // 如果此時選擇的飼料的每種維他命之和大於最小維他命需要,且選擇數量小於最小選擇數量
            minSelCnt = cnt;  // 更新最小選擇數量
            for (int i=1; i<=cnt; i++) {  // 更新結果數組,即更新為選擇的飼料種類
                ans[i] = sel[i];  
            }
        }
        return;  // 一定要寫!
    }
    sel[cnt+1] = pos;  // 選擇編號為pos的飼料
    dfs(pos+1, cnt+1);  // 繼續選擇pos+1編號的飼料,cnt自增1
    sel[cnt+1] = 0;  // 不選編號為pos的飼料,不選就用0佔位(這句可以忽略,因為下一句dfs中cnt不變,下次執行後會被修改)
    dfs(pos+1, cnt);  // 繼續dfs搜索pos+1編號的飼料,但cnt不增加
}
int main()
{
    cin >> vType;  // 輸入需要的維他命種類數
    for (int i=1; i<=vType; i++) {  // 遍歷維他命種類數
        cin >> v[i];  // 輸入每種維他命的最小量
    }
    cin >> fType;  // 輸入飼料種數
    for (int i=1; i<=fType; i++) {  // for循環遍歷飼料種數
        for (int j=1; j<=vType; j++) {  // for循環遍歷維他命種類數
            cin >> f[i][j];  // 輸入這種飼料各種維他命的值
        }
    }
    dfs(1, 0);  // 使用dfs搜索,起始飼料編號為1,0種選擇
    cout << minSelCnt << " ";
    for (int i=1; i<=minSelCnt; i++) {
        cout << ans[i] << " ";
    }
    return 0;
}

【運行結果】

4
100 200 300 400
3
50  50  50  50
200 300 200 300
900 150 389 399
2 1 3 

教育分類資訊推薦

一所消逝學校的永恆記憶——《我的安鄉四中》首發式側記 - 天天要聞

一所消逝學校的永恆記憶——《我的安鄉四中》首發式側記

紅網時刻新聞 記者 胡丹 安鄉報道一所已經撤銷17年的學校,120多位師生從天南地北奔赴而來,一位企業家全額捐建紀念碑亭,更催生出一部66.7萬字的厚重著作……這一幕,發生在湖南省安鄉縣。5月2日,《我的安鄉四中》首發式隆重舉行。沒有宏大的場館,沒有明星助陣,有的只是一群白髮蒼蒼的校友、幾位年邁的教師,以及他們眼...
華附知識城校區每間宿舍有洗衣機!擴招百人,分數線有望回調 - 天天要聞

華附知識城校區每間宿舍有洗衣機!擴招百人,分數線有望回調

南都訊 記者梁艷燕 實習生蔡梓燁 5月2日,華南師範大學附屬中學(以下簡稱「華附」)在知識城校區舉行校園開放日活動。華附黨委書記姚訓琪面向到場的家長與學子,詳細介紹了學校的整體辦學情況、教育理念及2026年高中招生政策。他直言,今年是讀華附高中的最好機會。諮詢台前圍滿了前來諮詢的家長。今年擴招100人,分數線有...
學生因走路看手機被勸退,連帶4名教師被辭退?大學教育豈能「山大王舞殺威棒」 - 天天要聞

學生因走路看手機被勸退,連帶4名教師被辭退?大學教育豈能「山大王舞殺威棒」

極目新聞評論員 屈旌近日,多名網友發文反映,泉州職業技術大學因學生玩手機,不僅勸退該學生,還辭退了4名教師。網帖中的聊天記錄顯示,2023級學生林某某因未遵守規定,走路看手機,「相關責任教師章某某、輔導員姚某、班主任沈某某、體育老師林某等予以辭退,對該生予以勸退」。疑似該校領導發言稱,「責任老師馬上開除」...
王興興的逆襲之路,很真實 - 天天要聞

王興興的逆襲之路,很真實

一覺醒來,浙江大學和上海大學都沉默了,當年王興興因英語差被浙大拒之門外,轉而去了上海大學讀研,如今,他創辦的宇樹科技因四足機械人火了,連帶他與兩校的故事也被扒出。考研英語差兩分是什麼概念?坐在浙大機械學院招生辦的那位老師,大概覺得自己在維護
合肥工業大學通報「學生涉嫌盜用他人作品參賽獲獎」:其獲獎作品均為網絡下載或購買,該生存在學術不端行為,給予其開除學籍處分 - 天天要聞

合肥工業大學通報「學生涉嫌盜用他人作品參賽獲獎」:其獲獎作品均為網絡下載或購買,該生存在學術不端行為,給予其開除學籍處分

5月2日,合肥工業大學發佈情況通報:近日,學校關注到網上對於學生涉嫌盜用他人作品參賽獲獎的相關反映。學校高度重視,立即成立工作專班核查處理。現通報如下:經查,涉事人員孫某某為我校建築與藝術學院學生。該生化名孫藝,通過網絡平台招募校外人員參加第九屆米蘭設計周-中國高校設計學科師生優秀作品展,以「個人參賽...
榮光綻放!銀川教師秦春娟亮相央視「五一」特別節目 - 天天要聞

榮光綻放!銀川教師秦春娟亮相央視「五一」特別節目

【來源:銀川日報】5月1日晚《中國夢·勞動美——2026五一國際勞動節「心連心」特別節目》在央視三個頻道同時播出銀川市金鳳區良田中學教師秦春娟出現在「奮鬥者說」環節她的一句「任何一個孩子都不能放棄,我希望成為墊起孩子人生的那塊磚。