演算法競賽入門與高階 (三)貪心

2021-08-19 08:33:09 字數 2098 閱讀 9532

有n個人在乙個水龍頭前排隊接水,假如每個人接水的時間為ti,

請程式設計找出這n個人排隊的一種順序,使得n個人的平均等待時間最小。

貪心策略:

第1個人的等待時間為0,第二個人的等待的時間為t[1],第三個人的等待時間為t[1]+t[2]

第n個人的等待時間為前n-1個人接水的時間之和,所以將n個人的接水時間從小到大排序

這就是n個人排隊的順序,使得n個人的平均等待時間最小

#includeusing namespace std; 

const int max=1e5+5;

int t[max],n;

int main()

int tim[101000];

int main()

long long sum=0;

while(q.size()>1)

cout<

#include#include#includeusing namespace std;

int main()

long long sum=0;

make_heap(v.begin(),v.end(),greater());

while(v.size()>1)

cout<

描述:設有n個正整數,將它們聯接成一排,組成乙個最小(最大)的多位整數。

程式輸入:n個數程式輸出:聯接成的多位數例如:n=2時,2個整數32、321連線成的最小整數為:32132

n=3時,3個整數13,312,343,連成的最大整數為34331213。

n=4時,4個整數7,13,4,246連線成的最大整數為7424613。

n=4時,4個整數55、31、312、33 聯接成的最小整數為:312313355

思路:兩個方向:a.先組合,後排序,b.先排序,後組合,但是要注意:a=』321』,b=』32』,

按照標準的字串比較規則因為a>b,所以a+b > b+a ,而實際上』32132』 < 』32321』。 

所以,自定義一種字串的比較規則:

即如果a+b>b+a,則我們認為a>b。

#includeusing namespace std;

bool cmp(string a,string b)

int main()

sort(v.begin(),v.end(),cmp);

for(int i=0;i一些在時間上沒有重疊的事件,可以構成乙個事件序列,如事件。

事件序列包含的事件數目,稱為該事件序列的長度。請程式設計找出乙個最長的事件序列。

用begin[i],end[i]表示事件i的開始時刻和結束時刻,

則問題轉化為求 a1

#include #include using namespace std;

struct node

a[105];

int cmp(node u,node v)

//對節目按照結束時間從小到大排序,

//如果結束的時間相同,則按照開始的

} printf("%d\n",k);//k代表能看的電視的個數!

} return 0;

}

hdu 4221 貪心

給n個活動,每個活動需要一段時間c來完成,並且有乙個截止時間d,

當完成時間t大於截止時間完成時,會扣除t-d分,

讓你找出如何使自己所扣分的最大值最小。

#include#includeusing namespace std;

const int max=1e6+5;

struct nodea[max];

bool cmp(node a,node b)

a[max];

bool cmp(node a,node b)

sort(a+1,a+1+n,cmp);

for(int i=0;i<=n;i++)

printf("%i64d\n",ans);

return 0;

}

演算法競賽入門與高階 (四)二分

在乙個單調有序的集合中查詢元素,每次將集合分為左右兩部分,判斷解在哪個部分中並調整集合上下界,重複直到找到目標元素。例如 在以下序列中查詢55 binary search 返回bool值 判斷查詢元素是否存在 lower bound 返回可插入的最小位置的迭代器 即返回第乙個符合條件的元素位置 up...

三 演算法入門分析 貪心演算法

所謂貪心演算法是指,在對問題求解時,總是做出在當前看來是最好的選擇。也就是說,不從整體最優上加以考慮,他所做出的僅是在某種意義上的區域性最優解。貪心演算法沒有固定的演算法框架,演算法設計的關鍵是貪心策略的選擇。必須注意的是,貪心演算法不是對所有問題都能得到整體最優解,選擇的貪心策略必須具備無後效性,...

演算法競賽入門 洪水

題目意思大概就是,有n m個底面積為10 10的格仔,每個格仔內有各種不同高度的柱子,再有乙個降雨量,來填這些格仔,輸出水面高度,和被淹沒於沒被淹沒的比例。include include include include using namespace std intmain 輸入n m個數,可以看成...