蓝桥大使【算法赛】----贪心算法

这里比较的难点在于sort排序的根据是什么,为什么是两人的报酬差,我的理解是当两人报酬差越大,那么总报酬的损失就越大,其实是缺少具体的证明的,但是通过就说明确实是这样。也就不深究证明了。

#include 
#include 
using namespace std;
 long long ans=0;
const int N=100005;
struct node{         //结构体
  int a;
  int b;
};
node a[N];
int main()
{
  int n;
  cin>>n;
  for(int i=1;i<=n;i++){
           cin>>a[i].a>>a[i].b;
  }

  sort(a+1,a+1+n,[](node&n1,node&n2){
    return n1.a-n1.b>n2.a-n2.b;              //根据报酬差的大小排序
  });

  for(int i=1;i<=n;i++){
     ans+=(i<=n/2 ? a[i].a :a[i].b);           //贪心
  }

  cout<

你可能感兴趣的:(算法,学习,贪心算法)