1. 程式人生 > >最優裝載問題(貪心)

最優裝載問題(貪心)


問題簡述:給出n個物體,第i個物體重量為wi。選擇儘量多的物體,是的總重量不超過C。

分析:最簡單的一種了,排序,依次選擇每一個物體,直到無法裝下為止。

附程式碼如下:

#include <bits/stdc++.h>
using namespace std;
int a[10010];

int main()
{
    int n, sum = 0, maxn, k = 0;
    while(cin >> n >> maxn)
    {
        for(int i = 0; i < n; i++)
        {
            scanf("%d", &a[i]);
        }
        sort(a, a+n);
        for(int i = 0; i < n; i++)
        {
            sum += a[i];
            if(sum <= maxn)
            {
                k++;
            }
            else
            {
                sum -= a[i];
                break;
            }
        }
        printf("%d %d", k, sum);
    }
    return 0;
}


相關推薦

裝載貪心演算法

演算法設計例題:最優裝載(貪心) memory limit: 32768KB    time limit: 1000MS accept: 24    submit: 68 Description 有一批集裝箱要裝上一艘載重量為C的輪船。其中集裝箱i的重量為wi。最

分解貪心

Description:設n是一個正整數。現要求將n分解為若干個自然數的和,且使這些自然數的乘積最大。對於給定的正整數n,程式設計計算最優分解方案。 Sample Input: 10 Sa

裝載部分揹包問題,貪心,c++

最優裝載 總時間限制: 1000ms 記憶體限制: 65536kB 描述 給定一個最大載重量為M的卡車和N種食品,有食鹽,白糖,大米等(假設它們都是散裝且大貨車只受重量限制不受體積限制)。已知第i種食品的最多擁有Wi公斤,其商品價值為Vi元/公斤,程式設計

分解貪心演算法

#include<stdio.h> #include<stdlib.h> int main(){ int n,i,sum=0; int diff,result,j=0; scanf("%d",&n); int *arr = (int

求兩個不等長、有序陣列a和b的中位數的排除法

求兩個排序陣列A和B的中位數 最優解 O(log (m+n)) 不斷刪除個 k/2個數,然後 k = k/2 不斷刪掉陣列中肯定不是第k小的那些數字,從而能夠不斷地減小陣列,在這個過程中,我們要找的那個數字的序號(k)也會不斷地減小。 陣列中的哪些數字可以刪除

淺析 AngularJS 全球化方案

本節是最後一節關於AngularJS的國際化和本地化方案討論,具體會和大家聊下目前有哪些第三方庫,以及優缺點。 首先談談國際化,AngularJS自帶國際化支援,提供了一些語言的國際化資原始檔檔案,具體的覆蓋面,大家可以去官網查詢。 下面聊聊怎麼使用這些資原始檔,一般來說

貪心演算法裝載

貪心演算法 貪心本質:一個貪心演算法總是作出當前最好的選擇,也就是說,它期望通過區域性最優選擇從而得到全域性最優的解決方案。 貪心演算法祕籍: (1)貪心策略 首先確定貪心策略,選擇當前看上去最好的一個方案。 (2)區域性最優解 根據貪心策略,一步一步地得到區域性最優解。 (3)全域

裝載問題貪心

問題簡述:給出n個物體,第i個物體重量為wi。選擇儘量多的物體,是的總重量不超過C。 分析:最簡單的一種了,排序,依次選擇每一個物體,直到無法裝下為止。 附程式碼如下: #include <bits/stdc++.h> using namespace std;

裝載問題貪心基礎

最優裝載問題。給出n個物體,第i個物體重量為w[i]。選擇儘量多的物體,使得總重量不超過C。 【分析】 由於只關心物體的數量,所有裝重的沒有裝輕的划算。只需把所有物體按重量從小到大排序,一次

高效演算法設計_貪心裝載問題,部分揹包問題,乘船問題

最優裝載問題 題目:有一批集裝箱要裝上一艘載重量為c的輪船。其中集裝箱i的重量為Wi。 輸入: 100 6 100 20 25 25 20 20 輸出: 20 20 20 25 25 100 1 1 1 1 0 0 思路:最優裝載問題要求確定在

裝載問題貪心

問題描述: 有一批集裝箱要裝上一艘載重量為c的輪船。其中集裝箱i的重量為Wi。最優裝載問題要求確定在裝載體積不受限制的情況下,將盡可能多的集裝箱裝上輪船。 問題可以描述為: 式中,變數xi = 0 表示不裝入集裝箱 i,xxi = 1 表示裝入集裝箱 i。

11091 自然數分解問題貪心

11091 最優自然數分解問題 時間限制:1000MS  記憶體限制:65535K 提交次數:0 通過次數:0  題型: 程式設計題   語言: C++;C;VC;JAVA Description 問題描述:設n是一個正整數。 (1)現在將n分解為若干個互不相

[POJ 2728]Desert King0-1分數規劃/比率生成樹

eat ice finall nec clu bool ann channels try Description David the Great has just become the king of a desert country. To win the respec

bzoj2539 丘比特的煩惱、黑書P333 二分圖匹配

def 等於 ostream while 感情 deb valentine 區分 匹配 丘比特的煩惱 題目描述 Description   隨著社會的不斷發展,人與人之間的感情越來越功利化。最近,愛神丘比特發現,愛情也已不再是完全純潔的了。這使得丘比特很是苦惱,

noip 2009 貿易短路+反向長路

輸出 main 路線 ins 城市 mes 部分 cst don 題目描述 C 國有 n 個大城市和 m 條道路,每條道路連接這 n 個城市中的某兩個城市。任意兩個城市之間最多只有一條道路直接相連。這 m 條道路中有一部分為單向通行的道路,一部分為雙向通行的道路,雙向通行

【洛谷 P1073】 貿易 Tarjan縮點+拓撲排序

多行 stdout sin pre lin get tar getchar || 題目鏈接 先\(Tarjan\)縮點,記錄每個環內的最大值和最小值。 然後跑拓撲排序,\(Min[u]\)表示到\(u\)的最小值,\(ans[u]\)表示到\(u\)的答案,\(Min\)和

貪心演算法-裝載問題

最優裝載問題。給出n個物體,第i個物體重量為w[i]。選擇儘量多的物體,使得總重量不超過C。  【分析】  由於只關心物體的數量,所有裝重的沒有裝輕的划算。只需把所有物體按重量從小到大排序,一次選擇每個物體,直到裝不下為止。這是一種典型的貪心演算法,只顧眼前,但能得到最優解。 -

單源短路徑Dijkstra——貪心演算法

  Dijkstra演算法是解單源最短路徑問題的貪心演算法。其基本思想是,設定頂點集合點集合S並不斷地做貪心選擇來擴充這個集合。一個頂點屬於集合S當且僅當從源到該頂點的最短路徑長度已知。初始時,S中僅含有源。設u是G的其一頂點。把從源到u且中間只經過S中頂點的路稱為從源到u的特殊

貪心-裝載問題

有一批集裝箱,要裝上一艘載重量為c的輪船。其中集裝箱i的重量為wi。 最優裝載問題要求確定在裝載體積不受限制的情況下,將盡可能多的集裝箱裝上輪船。 最優裝載問題問題的形式描述: •問題的形式描述是:給定c>0,wi>0,1≤i≤n,求n元0-1向量   &nb

控制泛函

LQR (linear quadratic regulator)即線性二次型調節器,其物件是現代控制理論中以狀態空間形式給出的線性系統,而目標函式為物件狀態和控制輸入的二次型函式。 LQR 的直觀推導及簡單應用            &