原题链接: P1051 谁拿了最多奖学金 - 洛谷 | 计算机科学教育新生态
这题虽然是NOIP2005提高组t1,不过难度甚至连 普及-
都不到。此题根本无需STL排序,不知为各位为何大佬都写这么多,我这位蒟蒻的代码只有30多行。
此题只需读一个数据处理一个即可,既省时间,又省内存。代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| #include<iostream>//头文件 #include<cstring> using namespace std; int main() { int n,maxn=0,ans=0; char s[25]; cin>>n; for (int i=1; i<=n; i++) { char name[25],tf_s,tf_x; int score_p,score_c,l,money=0; cin>>name>>score_p>>score_c>>tf_s>>tf_x>>l; if (score_p>80&&l>=1) money+=8000; if (score_p>85&&score_c>80) money+=4000; if (score_p>90) money+=2000; if (score_p>85&&tf_x=='Y') money+=1000; if (score_c>80&&tf_s=='Y') money+=850; ans+=money; if (money>max) { max=money; strcpy(s,name); } } cout<<s<<endl<<max<<endl<<ans; return 0; }
|
目测别人的时间复杂度:$O(n log_2 n)$(因为快排) 我的:$O(n)$
目测别人的辅助空间:$O(n)$ 我的:$O(1)$
因为本人还是个新手OIer,发表的题解还有许多不足之处,如果有人指出,本人将虚心接受。