在我的博客食用效果更佳!https://www.cbw2007.tk/articles/luogu-P1051-sol/,文章最初發表於2018年5月28日。更多見在不同的網站瀏覽本站內容
這題雖然是NOIP2005提高組t1,不過難度甚至連 普及-
都不到。此題根本無需STL排序,不知爲各位爲何大佬都寫這麼多,我這位蒟蒻的代碼只有30多行。
此題只需讀一個數據處理一個即可,既省時間,又省內存。代碼如下:
#include<iostream>//頭文件
#include<cstring>
using namespace std;
int main()
{
int n,maxn=0,ans=0;//maxn爲最大獎學金的總數,ans是所有人獎學金的總數
char s[25];//獲得最多獎學金的人的姓名
cin>>n;
for (int i=1; i<=n; i++)
{
char name[25],tf_s,tf_x;//name姓名,tf_s學生幹部,tf_x西部省份學生
int score_p,score_c,l,money=0;//score_p期末平均成績,score_c班級評議成績,money學生獎學金的數量
cin>>name>>score_p>>score_c>>tf_s>>tf_x>>l;
if (score_p>80&&l>=1)//期末平均成績高於80分
money+=8000;
if (score_p>85&&score_c>80)//期末平均成績高於85分,班級評議成績高於80分
money+=4000;
if (score_p>90)//期末平均成績高於90分
money+=2000;
if (score_p>85&&tf_x=='Y')//期末平均成績高於85分的西部省份學生
money+=1000;
if (score_c>80&&tf_s=='Y')//班級評議成績高於80分的學生幹部
money+=850;
ans+=money;//總錢數累加
if (money>max)//如果獎學金最多
{
max=money;//最多獎學金數量爲當前獎學金
strcpy(s,name);//複製名字
}
}
cout<<s<<endl<<max<<endl<<ans;//輸出
return 0;
}
目測別人的時間複雜度:(因爲快排) 我的:
目測別人的輔助空間: 我的:
因爲本人還是個新手OIer,發表的題解還有許多不足之處,如果有人指出,本人將虛心接受。