leetcode 5979. 全部开花的最早一天


 1 任选两颗A,B两颗种子,pa是种A种子需要的天数,ga是A种子开花需要的天数;
 2 1.考虑先种A,后种B
 3 mina_day=max(pa+ga,pa+pb+gb);
 4 2.先种B,后种A;
 5 minb_day=max(pb+gb,pb+pa+ga);
 6 
 7 不妨设ga>gb;
 8 pa+ga,pa+pb+gb
 9 
10 pb+gb,pb+pa+ga--> minb_day=pb+ga+pa>mina_day;
11 意味着ga>gb时先种A更优;
12 
13 
14  class Solution {
15 public:
16     typedef pair<int,int> pii;
17     static bool cmp(pii &a,pii &b){return a.second>b.second;}
18     int earliestFullBloom(vector<int>& plantTime, vector<int>& growTime) {
19         int n=plantTime.size();
20         vectorseed;
21         for(int i=0;i)seed.push_back({plantTime[i],growTime[i]});
22         sort(seed.begin(),seed.end(),cmp);
23         int day=0,ans=0;
24         for(int i=0;i)
25         {
26             day+=seed[i].first;
27             ans=max(ans,day+seed[i].second);
28         }
29         return ans;
30     }
31 };

相关