hdu3177数值差排序

来源:互联网 发布:json如何取数组 编辑:程序博客网 时间:2024/05/10 19:26

这题为什么不可以对B排序来完成呢?刚开始觉得行,可是

例如

21 2

7 20

1 18

这个就是一个反例,就是说可能有这样的一种情况,那么为什么要用差呢?目的是要确保空间足够大来满足

b的要求,同时也要求a足够的小来确保后来的数值可以符合条件,因此,就有了差排序

Source Code

#include<stdio.h>#include<climits>#include<algorithm>#include<stack>#include<iostream>#include<cmath>#include<set>#include<vector>#include<map>#include<queue>#include<string.h>using namespace std;const int maxn=1010;struct node{   int x;   int y;};node a[maxn];int cmp(node a,node b){   return (a.y-a.x)>(b.y-b.x);}int  main(void){    int t;  scanf("%d",&t);  while(t--)  {         int v,n;     scanf("%d %d",&v,&n);     for(int i=1;i<=n;i++)     {     scanf("%d %d",&a[i].x,&a[i].y);     }     sort(a+1,a+n+1,cmp);         //cout<<a[1].y<<endl;         int flag=0;         for(int i=1;i<=n;i++)         {      if(v<a[i].y||v<a[i].x)      {   flag=1;      break;        }        else        {             v-=a[i].x;}     }     if(!flag)       cout<<"Yes"<<endl;         else            cout<<"No"<<endl;      }    return 0;}/*420 310 203 101 710 21 102 1121 28 201 18*/


0 0
原创粉丝点击