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 

教育分類資訊推薦

匈牙利獲取駕照的成本大幅上漲 - 天天要聞

匈牙利獲取駕照的成本大幅上漲

匈牙利媒體報道:根據中央統計局(KSH)的最新數據,匈牙利考取駕照的平均價格在四年內上漲了 60%,由於汽油、維修費用以及教練費等成本都更加昂貴,使得獲取駕照的費用可能高達 80 萬至 90 萬福林。然而,問題不僅僅是成本普遍上漲,人們對待
新高考為什麼要倡導「教考銜接」?有三個重要原因 - 天天要聞

新高考為什麼要倡導「教考銜接」?有三個重要原因

同舊高考相比,新高考有一個近些年喊得很響的理念——教考銜接。什麼是教考銜接,簡單來說,就是學校教什麼,高考就考什麼。大家知道,舊高考也有一個喊得很響的理念——以考定教。這個理念指揮了高考十幾年,其弊端已經十分明顯。
濱州醫學院:政校企攜手賦能 共促醫學人才高質量就業 - 天天要聞

濱州醫學院:政校企攜手賦能 共促醫學人才高質量就業

中國青年報客戶端訊(中青報·中青網記者 邢婷)近日,濱州醫學院舉辦「就選山東 『醫』往『職』前」2025年春季校園雙選會暨「美好『衛』來 『健』康煙台」醫學人才築夢煙台招聘會。招聘會現場,350家用人單位攜1.2萬個就業崗位進校攬才。該校4300餘名畢業生參加招聘會,2500餘名畢業生與用人單位達成初步就業意向,實現醫...
「百校千企萬崗」,江蘇共青團「送崗直通車」進江科大助力大學生就業 - 天天要聞

「百校千企萬崗」,江蘇共青團「送崗直通車」進江科大助力大學生就業

中國青年報客戶端訊(中青報·中青網記者 李超)4月11日,江蘇共青團「送崗直通車」開進江蘇科技大學舉辦「百校千企萬崗」示範招聘會。這是江蘇共青團青少年民生實事項目之一,聯動各界協同發力,為應屆高校畢業生搭建高質量就業橋樑,助力青年學子實現「好就業、就好業」。江蘇省百校千企萬崗」示範招聘會現場。 主辦方供...
何同學的反討好之困 - 天天要聞

何同學的反討好之困

本文來自微信公眾號:王智遠,作者:王智遠,題圖來自:AI生成事情是這樣:4月11日晚,何同學在微博上分享了自己打車的經歷;他說以前打網約車時,司機讓他給好評,總是嘴上答應,但事後就忘了。他覺得這樣不太好,所以,現在改。如果司機服務真的很棒,他才會主動好評;不然就會直接拒絕;他還提到,自己以前比較愛討好別...
大風天去不了考場,報名費打水飄?教育部教育考試院:這錢,我退! - 天天要聞

大風天去不了考場,報名費打水飄?教育部教育考試院:這錢,我退!

4月11日至13日,受較強冷空氣影響,華北出現歷史同期罕見的持續性大風。其中,河北北部等地局地陣風風力可達12~13級,中央氣象台發布橙色預警,提醒公眾減少戶外活動,多地景點臨時關閉,部分中小學及高校宣布停課或轉為線上教學。△ 社交平台相關話題截圖受此影響,已經報名參加本屆韓國語能力考試(TOPIK)的考生群體對...