最小化價格 貪心,排序

2021-08-19 21:49:12 字數 1115 閱讀 4317

題目描述

現有n組人,m個地點,給出每組人的人數,每個地點可容納的最大人數和選擇的**

要求一種方式,使得每組人都到乙個各不相同的地點,最小化選擇的**

每個隊伍的人都要在同乙個地方每個地方只能有乙個隊伍

輸入描述:

第一行n,m

第二行n個數,表示每組的人數

接下來m行,每行兩個數,表示可容納的最大人數和選擇的**

輸出描述:

輸出最小化選擇的**,無解輸出-1

示例1

輸入 3 4

2 3 4

1 2

2 3

3 4

4 5

輸出 12

備註:

所有資料小於1e5

思路:因為每個隊伍的人都要在同乙個地方,每個地方只能有乙個隊伍,所以排序即可。

**:

#include

#include

#include

#include

using

namespace

std;

#define mem(a,b) memset(a,b,sizeof(a))

const

int maxn=1e5+9;

priority_queue,greater >q;

int ar[maxn];

struct node

}edge[maxn];

bool cmp(int a,int b)//從大到小

int main()

int t=0;

int flag=1,ans=0;

while(!q.empty())q.pop();

for(int i=0;iwhile(ar[i]<=edge[t].p)

q.push(edge[t].w),t++;

if(q.empty())

ans+=q.top();

q.pop();

}if(flag)

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

else

printf("-1\n");

}return

0;}

貪心演算法 最小化延遲安排

我們假設乙個時間點只能處理乙個任務,處理任務j jj所需處理時長為t jt j tj 且到期時間為d jd j dj 如果任務j jj的開始時間為s js j sj 那麼它的完成時間為fj sj d jf j s j d j fj sj dj 任務j jj的延遲為 lj maxl j max lj ...

Wannafly挑戰賽15 A 最小化價格

現有n組人,m個地點,給出每組人的人數,每個地點可容納的最大人數和選擇的 要求一種方式,使得每組人都到乙個各不相同的地點,最小化選擇的 每個隊伍的人都要在同乙個地方每個地方只能有乙個隊伍 第一行n,m 第二行n個數,表示每組的人數 接下來m行,每行兩個數,表示可容納的最大人數和選擇的 輸出最小化選擇...

Wannafly挑戰賽15 A最小化價格

時間限制 c c 1秒,其他語言2秒 空間限制 c c 32768k,其他語言65536k 64bit io format lld 現有n組人,m個地點,給出每組人的人數,每個地點可容納的最大人數和選擇的 要求一種方式,使得每組人都到乙個各不相同的地點,最小化選擇的 每個隊伍的人都要在同乙個地方每個...