分析
柳神分析:maxn和minn分别保存最高分和最低分。将所有其他组评分中的有效分数累加到g1,最后减去minn和maxn并求平均分,最后求得最终得分。
太巧妙啦!学到就是赚到!
我在我的基础上用了柳神的方法,但是还是有点麻烦,下面附上柳神答案。
题解
#include <bits/stdc++.h>
using namespace std;
int main()
{
#ifdef ONLINE_JUDGE
#else
freopen("1.txt", "r", stdin);
#endif
int n, m, sum, cnt,tmp,max,min;
cin>>n>>m;
vector<int> num(n-1),val;
for(int j=0;j<n;j++)
{
cin>>tmp;
sum=0;cnt=-2;
max=0;min=m+1;
for(int i=0; i<n-1; i++)
{
cin>>num[i];
if(num[i]>=0&&num[i]<=m)
{
if(num[i]>max)
max=num[i];
if(num[i]<min)
min=num[i];
cnt++;sum+=num[i];
}
}
cout<<round((tmp+(sum-max-min)*1.0/cnt)/2)<<endl;
}
return 0;
}
柳神答案
#include <iostream>
using namespace std;
int main() {
int n, m;
cin >> n >> m;
for (int i = 0; i < n; i++) {
int g2, g1 = 0, cnt = -2, temp, maxn = -1, minn = m + 1;
cin >> g2;
for (int j = 0; j < n-1; j++) {
cin >> temp;
if (temp >= 0 && temp <= m) {
if (temp > maxn) maxn = temp;
if (temp < minn) minn = temp;
g1 += temp;
cnt++;
}
}
cout << int((((g1 - minn - maxn) * 1.0 / cnt) + g2) / 2 + 0.5) << endl;
}
return 0;
}