直接输出次大值到底对不对啊???

P1199 [NOIP2010 普及组] 三国游戏

不对,所倒数第二大的;电脑肯定会破坏你那最大的那个组合,所以你要找的是次大的组合 ``` #include <iostream> #include <algorithm> using namespace std; int n, mp[510][510], num, ans; int main(){ cin >> n; for (int i = 1; i <= n; i++) { for (int j = i + 1; j <= n; j++) { cin >> num; mp[i][j] = mp[j][i] = num; } sort(mp[i] + 1, mp[i] + n + 1, greater<int>()); ans = max(ans, mp[i][2]); } cout << 1 << endl << ans << endl; return 0; } ``` 题目里说了,默契值都不同,所以这个次优解必定是最优解,因此小涵必胜
by wali_robot @ 2022-05-01 17:53:43


@[halehu](/user/365777) 肯定不行,同意楼上,找出最大值的组合 ```cpp #include <iostream> #include <cstdio> #include <bits/stdc++.h> using namespace std; int i,j,n,ans=0,a[10050][10050]; int cmp(int x,int y){ return x>y; } int main(){ cin>>n; for(i=1;i<=n;i++){ for(j=i+1;j<=n;j++){ cin>>a[i][j]; a[j][i]=a[i][j]; } } for(i=1;i<=n;i++){ sort(a[i]+1,a[i]+1+n,cmp); ans=max(ans,a[i][2]); } cout<<"1"<<endl<<ans; return 0; } ``` ### 这样就行了
by LGSTZ798932 @ 2022-07-30 12:57:25


|