题意简述
有一些箭,每个箭有伤害和价钱两种属性。还有一些兔子,每个兔子有一些血量。两个的数量都是2e5规模。如果一个箭的伤害值大于某个兔子的血量值,那么这个箭就能杀死这只兔子。请你用最少的钱杀死所有的兔子。不行输出NO。
思路框架
很明显,对于一只兔子,我们要找能杀死它的箭中最便宜的那个。优先队列维护。
代码
#include <bits/stdc++.h>
using namespace std;
namespace Flandre_Scarlet
{
#define N 255555
#define F(i,l,r) for(int i=l;i<=r;++i)
#define D(i,r,l) for(int i=r;i>=l;--i)
#define Fs(i,l,r,c) for(int i=l;i<=r;c)
#define Ds(i,r,l,c) for(int i=r;i>=l;c)
#define MEM(x,a) memset(x,a,sizeof(x))
#define FK(x) MEM(x,0)
#define Tra(i,u) for(int i=G.Start(u),__v=G.To(i);~i;i=G.Next(i),__v=G.To(i))
#define p_b push_back
#define sz(a) ((int)a.size())
#define iter(a,p) (a.begin()+p)
void R1(int &x)
{
x=0;char c=getchar();int f=1;