1. 程式人生 > >牛客寒假6-C.項鏈

牛客寒假6-C.項鏈

ace struct tps sort esp c++ 貪心 acm 同時

鏈接:https://ac.nowcoder.com/acm/contest/332/C

題意:

小B想給她的新項鏈染色。
現在有m種顏色,對於第i種顏色,小B有a_i單位的顏料,每單位顏料可以染項鏈的一個珠子;
同時,小B對於第i種顏色的喜愛度為b_i。
已知項鏈有n個珠子,求染色後每個珠子的顏色的喜愛度之和的最大值。
(每個珠子只能至多被染一次,不被染色則喜愛度為0)

思路:

貪心即可。

代碼:

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int MAXN = 1e5 + 10;

struct Node
{
int _a;
int _b;
bool operator < (const Node & that) const {
return this->_b > that._b;
}
}node[MAXN];


int main()
{
int n, m;
LL all = 0;
scanf("%d%d",&n,&m);
for (int i = 1;i <= m;i++)
cin >> node[i]._a,all += node[i]._a;
for (int i = 1;i <= m;i++)
cin >> node[i]._b;
sort(node + 1, node + 1 + m);
LL res = 0;
int w = 1;
while (n > 0 && all > 0)
{
if (n >= node[w]._a)
{
res += node[w]._a * node[w]._b;
n -= node[w]._a;
all -= node[w]._a;
w++;
}
else
{
res += n * node[w]._b;
break;
}
}
cout << res << endl;

return 0;
}

牛客寒假6-C.項鏈