貪心算法之乘船問題
有n個人,第i個人的重量為w[i],每艘船的最大載重量均為c,且最多只能乘兩個人。用最少的船裝載所有人。
思路:從最輕的開始考慮,讓最輕的和最重的一條船,若超出重量則可判定最重的只能一人一條船
代碼:
#include <iostream> #include <algorithm> using namespace std; int n,m; int a[100]; int main() { cin>>n>>m;//n為人數,m為一條船的最大承重 for(int i=1;i<=n;i++) cin>>a[i]; sort(a+1,a+n+1); int i=1,j=n; int ans=0; while(i<j) { if(a[i]+a[j]>m) j--; else { i++; j--; ans++; } } cout<<ans+n-2*ans<<endl; return 0; }
貪心算法之乘船問題
相關推薦
貪心算法之乘船問題
() str -- while main 兩個 sin i++ pac 有n個人,第i個人的重量為w[i],每艘船的最大載重量均為c,且最多只能乘兩個人。用最少的船裝載所有人。 思路:從最輕的開始考慮,讓最輕的和最重的一條船,若超出重量則可判定最重的只能一人一條船
[C++] 貪心算法之活動安排、背包問題
基本思想 nbsp 考慮問題 最終 jpg 實例 使用 n) 最好的 一、貪心算法的基本思想 在求解過程中,依據某種貪心標準,從問題的初始狀態出發,直接去求每一步的最優解,通過若幹次的貪心選擇,最終得出整個問題的最優解。 從貪心算法的定義可以看出,貪心算法不是從整體
貪心算法之Dijkstra
CI 不能 space const stream out lag 起點 != 貪心算法的主要思想就是通過不斷求解局部最優解,最後求出最優解或者最優解的近似值,不能保證一定為最優解。 Dijistra算法,選取沒有選擇過的點到已經選擇過得點組成的集合中最短的距離的點。然後更新
貪心算法之Prim
nbsp IV min using space 算法 短路徑 最短路徑 AS Prim與Dijistra算法有異曲同工之妙,只不過Dijistra是求最短路徑,每次添加到集合中的是到固定起始點的最短距離,而Prim是求最小生成樹,是整個圖所有權重的最小和,每次添加到集合中的
算法學習——貪心算法之刪數字(求最大值)
size 算法學習 末尾 最小 條件 求最大值 sca 位數 技術 算法描述 在給定的n位數字,刪除其中的k位數字( k < n),使得最後的n-k為數字為最大值(原次序不變) 算法思路 考慮到是要移出數字,我們使用鏈表設計此算法較為方便,鏈表可以直接移出某個位
貪心算法-區間調度問題解之證明
text body font 思想 gpo 排序。 開始時間 選擇 指標 一、貪心算法 定義:一個算法是貪心算法,如果它是通過一些小的步驟來一個求解,並且在每一步根據局部情況選擇一個決定,使得某些主要的指標得到優化。 二、區間調度問題 1. 問題:我們有一組需求{
排序算法之高速排序(Java)
大於 一個數 大小 main div 移動 swap 交換 system //高速排序 public class Quick_Sort { // 排序的主要算法 private int Partition(int[] data, int start, int en
Java與算法之(9) - 直接插入排序
set reat 正是 stat copy boa 派生 creat 人的 直接插入排序是最簡單的排序算法,也比較符合人的思維習慣。想像一下玩撲克牌抓牌的過程。第一張抓到5,放在手裏;第二張抓到3,習慣性的會把它放在5的前面;第三張抓到7,放在5的後面;第四張抓到4,那麽我
Java與算法之(8) - 堆排序
循環 public tar 最大 swap https rgs tool 技術分享 堆是一種特殊的完全二叉樹,其特點是所有父節點都比子節點要小,或者所有父節點都比字節點要大。前一種稱為最小堆,後一種稱為最大堆。 比如下面這兩個: 那麽這個特性有什麽作用?既然題目是堆排序,
Java與算法之(5) - 老鼠走迷宮(深度優先算法)
tail 數字化 boa pop ase lis ext oar tar 小老鼠走進了格子迷宮,如何能繞過貓並以最短的路線吃到奶酪呢? 註意只能上下左右移動,不能斜著移動。 在解決迷宮問題上,深度優先算法的思路是沿著一條路一直走,遇到障礙或走出邊界再返回嘗試別的路徑。 首
Java與算法之(7) - 完全二叉樹
itl 輸出 void 結構 ray 線性 net pop pbo 樹 下圖是一“棵”樹的樣子。樹這個名稱起的很形象,整個數據結構由根、枝、葉組成,其中1為根節點,2、3是1的子節點,4、5、6、8、9、10這幾個沒有子節點的節點稱為葉節點。 節點的度:一個節點的
Java與算法之(6) - 八皇後問題
tools trac ava height com 技術分享 false fis light 在8×8格的國際象棋上擺放八個皇後,使其不能互相攻擊,即任意兩個皇後都不能處於同一行、同一列或同一斜線上,問有多少種擺法。 (文字和圖片來自百度百科) 如果動手來擺放皇後,可以
JavaScript ,Python,java,Go系列算法之選擇排序
javascript java python go系列算法之選擇排序 常見的內部排序算法有:插入排序、希爾排序、選擇排序、冒泡排序、歸並排序、快速排序、堆排序、基數排序等。用一張圖概括:選擇排序 選擇排序是一種簡單直觀的排序算法,無論什麽數據進去都是O(n2) 的時間復雜度。所以用到它的
Java學習筆記——排序算法之O(n²)排序
blog sel != 而是 while bsp 優化 ++ logs 男兒何不帶吳鉤,收取關山五十州。請君暫上淩煙閣,若個書生萬戶侯? ——南園十三首 三種排序法: 1、冒泡法 2、簡單選擇法 3、直接插入法
Java學習筆記——排序算法之進階排序(堆排序與分治並歸排序)
進行 技術分享 ring http 沒有 oid 有序 重復 調整 春蠶到死絲方盡,蠟炬成灰淚始幹 ——無題 這裏介紹兩個比較難的算法: 1、堆排序 2、分治並歸排序 先說堆。 這裏請大家先自行了解完全二叉樹的數據結構。 堆是完全二叉樹。
SparkMLlib學習分類算法之邏輯回歸算法
spl sca class put net lac gradient map ica SparkMLlib學習分類算法之邏輯回歸算法 (一),邏輯回歸算法的概念(參考網址:http://blog.csdn.net/sinat_33761963/article/details
SparkMLlib分類算法之決策樹學習
2.3 數據預處理 true ray score 嚴重 acc 標準化 lambda SparkMLlib分類算法之決策樹學習 (一) 決策樹的基本概念 決策樹(Decision Tree)是在已知各種情況發生概率的基礎上,通過構成決策樹來求取凈現值的期望值大於等於
STL源代碼剖析——STL算法之set集合算法
amp -s out 返回 計算 post ret 差集 ack 前言 本節介紹set集合的相關算法,各自是並集set_union,差集set_difference,交集set_intersection 和對稱差集set_symmetric_difference
SparkMLlib回歸算法之決策樹
ria 之間 feature 輸入 修改 決策樹算法 技術 color 實例 SparkMLlib回歸算法之決策樹 (一),決策樹概念 1,決策樹算法(ID3,C4.5 ,CART)之間的比較: 1,ID3算法在選擇根節點和各內部節點中的分支屬性時,采用信息增益作為評價
貪心算法 Heidi and Library (easy)
define con mit 最長 state dex bre algo == A. Heidi and Library (easy) time limit per test 2 seconds memory limit per test 256 megab