Gym - 101572B-水题&思维漏洞&排序相关-B - Best Relay Team

https://vjudge.net/contest/200122#problem/B
水题,然而错了6发。后来对的时候也不清楚。
看了数据才清楚。。。
给定n个队员的第一棒速度 和其他棒的速度。问你如何调配4个队员,能够使他们更快的胜利。
第2,3,4棒的速度都是一样的,并且数据范围其小无比,所以直接暴力就行。。
我是枚举i队员作为第一棒,然后排序,找前三个 y值最小的, 参加比赛。 然后维护最大值。。
第21组数据,一直wa。wa的很气


sort再里面排,可能有的人还没有被枚举到 作为第一棒队员,就被排序再后面了。导致 枚举结果不全

#include 
using namespace std;
/* 排序
*/
struct Node{
 double x,y;
 string name;
 int id;
}node[1000];
int m;
vector<string>q;
vector<string>v;
bool cmp2(Node a1,Node b1){
   return a1.yint main()
{     cin>>m;
      for(int i=0;icin>>node[i].name;
          //cout<
          cin>>node[i].x>>node[i].y;
         node[i].id=i;
      }
      //cout<<"!!"<
      v.clear();
      double rel=-1;
       sort(node,node+m,cmp2);
      for(int i=0;iint tim=0;
          double ans=node[i].x;
          int bh=node[i].id;
          q.clear();
          q.push_back(node[i].name);
          //开始再这里面sort的
          for(int j=0;jif(tim==3) break;
             int bh2=node[j].id;
             if(bh2==bh) continue;
             q.push_back(node[j].name);
              tim++;
              ans+=node[j].y;
          }
          if(tim<3) continue;
          //cout<
          if(ans1){
              v.clear();
              for(int j=0;jcout<for(int i=0;icout<return 0;
}

你可能感兴趣的:(思维,常用技巧)