洛谷 T314739 成绩统计
样例过了,全wa
#include <bits/stdc++.h>
using namespace std;
struct student{
long long num;
int sco;
};
bool cmp(student a,student b){
if(a.sco==b.sco){
return a.num<b.num;
}
return a.sco>b.sco;
}
int main(){
int n;
student a[109];
cin >>n;
for(int i=1;i<=n;i++){
cin >>a[i].num;
cin >>a[i].sco;
}
sort(a,a+n+1,cmp);
for(int i=1;i<=n;i++){
if(a[i].sco>60){
printf("%011lld",a[i].num);
cout /*<<a[i].num<<*/" "<<a[i].sco<<" "<<endl;
}
}
return 0;
}
根据提供的参考资料,对于优化洛谷题目 T314739 的成绩统计的问题,我可以给出以下解决方案:
根据段落0提供的代码,我们可以看到该解法是通过分别存储三个字符a
、b
、c
,然后根据字符的值进行判断输出的顺序。
这个解法本身没有明显的性能问题,但可以考虑减少不必要的代码和判断,以提高代码的可读性和效率。
优化方案:
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s;
cin >> s;
reverse(s.begin(), s.end());
cout << s << endl;
return 0;
}
这个优化方案将输入的三位数作为字符串处理,并将字符串逆序输出。这样可以直接输出的逆序结果,避免了对字符进行判断和拼接的操作,简化了代码逻辑。
根据段落3提供的代码,我们可以看到该解法是采用递归方式计算将i个球装j个盒子的方案数,并使用记忆化的方式避免重复计算。
这个解法通常用于解决组合计数问题,但与题目中的成绩统计问题关系不大,使用该解法并不合适。
因此,我们可以排除解法3,不采用记忆化递归的方式来优化成绩统计问题。
综上所述,对于优化洛谷题目 T314739 的成绩统计问题,我建议采用解法2中的优化方案,将输入的三位数作为字符串处理,并将字符串逆序输出,以提高代码的可读性和效率。