Best Pair
题意:cntx 为x出现次数 f(x,y) = (cntx+cnty)*(x+y); 求不被禁用的最大f(x,y);
思路:按cnt (出现次数)分类 ,最多有 根号n类 再去枚举x,y
//#pragma GCC optimize(2) //#pragma GCC optimize(3,"Ofast","inline") #include#define int long long #define fi first #define se second #define pb push_back #define pii pair #define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); using namespace std; const int inf=8e18; const int maxn=3e5+100; int a[maxn]; vector cnt[maxn]; bool cmp(int a,int b) { return a>b; } signed main() { IOS int tt; cin>>tt; while(tt--) { int n,m; map mp; map mp2; cin>>n>>m; for(int i=1; i<=n; i++) { cin>>a[i]; mp[a[i]]++; } vector v; int mx=0; for(int i=1; i<=m; i++) { int x,y; cin>>x>>y; mp2[ {x,y}]=1; mp2[ {y,x}]=1; } for(auto it:mp) { if(cnt[it.se].empty()) { v.pb(it.se); } cnt[it.se].pb(it.fi); } for(int i=1;i<=n;i++) sort(cnt[i].begin(),cnt[i].end(),cmp); for(int i=0; i mx) { mx=(it1+it2)*(v[i]+v[j]); } break; } } //cout<



