牛客寒假6-C.項鏈
阿新 • • 發佈:2019-02-05
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.項鏈