打卡第五天

2021-08-28 12:19:33 字數 974 閱讀 5546

給你一堆具有長度和重量的木頭,讓你去機器裡加工,機器會有乙個一分鐘的set時間,首次加工需要set一次,當連續放入的木頭不滿足後者的長度和重量都大於等於前者時,機器需要set一下,讓你求出最短的set時間(不用求出序列)

三、思路分析

我們會非常直觀的想到從小到大進行排序,但很遺憾,長度和重量我們都必須考慮,我們無法對兩個主元進行排序操作,但是要讓機器set時間最短,其必然要滿足某乙個元素如長度是從小到大排序的,這是最優解的必要條件,那我們便可以對長度進行排序,對重量進行貪心。

確定使用貪心策略,最關鍵的有兩步,一步即設計貪心策略,二即證明由貪心得到的區域性最優解最優解即為整體最優解

貪心策略:排序之後掃瞄一遍stick,將滿足條件的stick標記為vis[i] = 1,即已經被使用,不滿足條件的stick為未使用,(需要注意的是當遇到不滿足的stick時,掃瞄比較應當是比較不符合前乙個與不符合後乙個)掃瞄到尾部之後,再從第乙個未使用的stick開始,掃瞄一遍全部未使用的stick重複之前的操作,直到全部stick都被使用,每掃瞄一次計數+1

證明:貪心策略所得到為每一次盡可能大的子串,每次對子串取盡可能大,所得到即為最少的子串個數

#include

#include

#include

#include

using namespace std;

const int n = 5005;

struct stick

a[n];

int vis[n];

bool cmp(stick a, stick b)

int main()

cout << endl;

int st=0, cnt=0;

vis[0] = 1;

while(stelse}}

if(flag) break;

}cout << cnt << endl;

}return 0;

}

python打卡第五天

當不按順序提供預設引數時,需要把引數名寫上去 定義預設引數要牢記 預設引數必須指向不變物件 設計不變物件是因為不變物件一旦建立就不能修改,減少了由於修改資料導致的錯誤,而且由於物件不變,多工環境下同時讀取物件不需要加鎖。因此在程式設計時盡量使用不變物件 可變引數 可變引數是要求在引數前加個 號,引數...

c 學習 打卡第五天

include stdafx.h include using namespace std class mouse mouse const mouse m mouse int mouse num 0 void fn mouse m int main fn a cout mouse num endl r...

打卡(第五天)氣泡排序法

氣泡排序是對陣列的數進行排序。排序就是演算法重複的走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來,這樣越大的元素會經由交換慢慢 浮 到數列的頂端。氣泡排序演算法 的運作如下 1.比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。2.對每一組相鄰的元素作同樣的工作,從開始...