題目鏈結
time limit:1000 ms memory limit:65536 kb
現有n組人,m個地點,給出每組人的人數,每個地點可容納的最大人數和選擇的**
要求一種方式,使得每組人都到乙個各不相同的地點,最小化選擇的**
每個隊伍的人都要在同乙個地方每個地方只能有乙個隊伍
第一行n,m
第二行n個數,表示每組的人數
接下來m行,每行兩個數,表示可容納的最大人數和選擇的**
輸出最小化選擇的**,無解輸出-1
3 42 3 4
1 22 3
3 44 5
12所有資料小於1e5
將地點按照容納人數由大到小排序,隊伍則按照人數從大到小排序。遍歷地點,將當前地點的**插入multiset,如果當前地點的人數不足以容納該隊伍,則在multiset中最小的(地點對應的)**刪除,如果出現multiset中沒有元素的情況,則說明前面沒有剩餘可以容納這麼多人數的地點了,輸出-1shuchu
因為對multiset的操作不熟悉,導致wa一次
s.erase(s.begin())
刪除第乙個元素
s.erase(*s.begin())
刪除所有與第乙個元素相等的元素
#include
using
namespace
std;
const
int maxn=1e5+5;
int num[maxn];
struct node
;bool cmp(node a,node b)
node a[maxn];
multiset
s;int main(int argc, char
const *argv)
sort(num,num+n,greater());
for(int i=0;icin>>a[i].num>>a[i].price;
}sort(a,a+m,cmp);
a[m].num=0;
a[m].price=0;
long
long ans=0;
int p=0;
for(int i=0;i<=m;i++)
ans+=(long
long)*s.begin();
s.erase(s.begin());
p++;
}s.insert(a[i].price);
if(p==n)
}cout
<<-1
0;}
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個地點,給出每組人的人數,每個地點可容納的最大人數和選擇的 要求一種方式,使得每組人都到乙個各不相同的地點,最小化選擇的 每個隊伍的人都要在同乙個地方每個...
Wannafly挑戰賽15 B 車輛安排
鏈結 題目描述 有n個隊伍,每個隊伍的人數小於等於5,每輛車最多坐5個人,要求乙個隊伍的人都在一輛車上,求最少的車數 輸入描述 第一行n 第二行n個數,表示每個隊伍的人數 輸出描述 輸出最少車數 示例1 輸入3 3 4 5 輸出 備註 n 1e5 每個數小於等於5 貪心 4個人的只能和1個人的拼車 ...