求助求助,此地有蒟蒻一个!!

P1051 [NOIP2005 提高组] 谁拿了最多奖学金

30分
by wch666 @ 2023-10-01 15:47:07


首先,这题用不着```struct```,在每次循环定几个临时变量就行 ``` cin>>name>>s1>>s2>>a>>b>>x; if(s1>80 && x>0) sum+=8000; if(s1>85 && s2>80) sum+=4000; if(s1>90) sum+=2000; if(s1>85 && b=='Y') sum+=1000; if(s2>80 && a=='Y') sum+=850; t+=sum; if(sum>maxm) { maxn=name; maxm=sum; } sum=0; ```
by Max6700 @ 2023-10-01 16:02:14


```cpp #include<bits/stdc++.h> using namespace std; long long n, cnt = 0; struct node { string a; int b, c, id; char d, e; long long f, num; }ans[1005]; bool cmp(node x, node y) { return x.num != y.num ? x.num > y.num : x.id < y.id; } int main() { cin >> n; for(int i = 1; i <= n; i++) { cin >> ans[i].a >> ans[i].b >> ans[i].c >> ans[i].d >> ans[i].e >> ans[i].f;ans[i].id = i; if(ans[i].b > 80 && ans[i].f >= 1) { ans[i].num += 8000; } if(ans[i].b > 85 && ans[i].c > 80) { ans[i].num += 4000; } if(ans[i].b > 90) { ans[i].num += 2000; } if(ans[i].b > 85 && ans[i].e == 'Y') { ans[i].num += 1000; } if(ans[i].c > 80 && ans[i].d == 'Y') { ans[i].num += 850; } } sort(ans + 1,ans + n + 1, cmp); cout << ans[1].a << "\n" << ans[1].num << "\n"; for(int i = 1; i <= n; i++) { cnt += ans[i].num; } cout << cnt; } ``` **求关**
by Leo11 @ 2023-10-01 19:51:36


@Leo11,我的三目运算符学的~~不太好~~...
by wch666 @ 2023-10-04 10:31:17


已关
by wch666 @ 2023-10-05 20:56:32


|