社区讨论
RE,求调
P7426[THUPC 2017] 体育成绩统计参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @miwgm1pa
- 此快照首次捕获于
- 2025/12/08 09:15 3 个月前
- 此快照最后确认于
- 2025/12/11 11:20 3 个月前
CPP
#include<bits/stdc++.h>
using namespace std;
const int N = 1e4 + 5;
const int M = 1e5 + 5;
const int r1[10] = {750,780,810,840,870,910,950,990,1030,1080};
const int r2[10] = {400,417,434,451,470,485,500,515,530,540};
int n,m;
struct input{
string a,d;
char b,e;
int c,f,g,id,ans,cnt,run;
}x[N];
struct haha{
string a,b,c,d,f;
double e;
int g;
}y[M];
bool cmp1(input s,input t){
for(int i = 0;i < 10;i++){
if(s.a[i] != t.a[i]){
return s.a[i] < t.a[i];
}
}
}
bool cmp2(haha s,haha t){
for(int i = 0;i < 10;i++){
if(s.b[i] != t.b[i]){
return s.b[i] < t.b[i];
}
}
}
int run(string s,int k){
int x = 0,y = 0,z = 0,ans = 0;
if(s.size() == 5){
x = s[0] - '0';
y = (s[3] - '0') * 10 + s[4] - '0';
}
else{
x = (s[0] - '0') * 10 + s[1] - '0';
y = (s[3] - '0') * 10 + s[4] - '0';
}
z = x * 60 + y;
if(k == 1){
if(z < 750) ans = 20;
for(int i = 0;i < 10;i++){
if(z > r1[i]){
ans = 20 - (i + 1) * 2;
}
}
}
else{
if(z < 400) ans = 20;
for(int i = 0;i < 10;i++){
if(z > r2[i]){
ans = 20 - (i + 1) * 2;
}
}
}
return ans;
}
bool Run(string a,string b,double c,string d,int e,int k){
int x1 = (a[0] - '0') * 10 + a[1] - '0';
int x2 = (b[0] - '0') * 10 + b[1] - '0';
int y1 = (a[2] - '0') * 10 + a[3] - '0';
int y2 = (b[2] - '0') * 10 + b[3] - '0';
int z1 = (a[4] - '0') * 10 + a[5] - '0';
int z2 = (b[4] - '0') * 10 + b[4] - '0';
int t1 = x1 * 3600 + y1 * 60 + z1;
int t2 = x2 * 3600 + y2 * 60 + z2;
int t = t2 - t1;
int u = (d[0] - '0') * 10 + d[2] - '0';
if(k == 1){
if(c < 3.00 || (c * 1000 / t) < 2 || (c * 1000 / t) > 5 || u > 270 || c * 1000 / e > 1.5){
return 0;
}
}
else{
if(c < 1.50 || (c * 1000 / t) < 2 || (c * 1000 / t) > 5 || u > 270 || c * 1000 / e > 1.5){
return 0;
}
}
return 1;
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin >> n;
for(int i = 1;i <= n;i++){
cin >> x[i].a >> x[i].b >> x[i].c >> x[i].d >> x[i].e >> x[i].f >> x[i].g;
x[i].id = i;
x[i].ans += x[i].c;
if(x[i].e == 'P'){
x[i].ans += 10;
}
if(x[i].b == 'M'){
x[i].ans += run(x[i].d,1);
}
else x[i].ans += run(x[i].d,2);
}
sort(x + 1,x + n + 1,cmp1);
cin >> m;
for(int i = 1;i <= m;i++){
cin >> y[i].a >> y[i].b >> y[i].c >> y[i].d >> y[i].e >> y[i].f >> y[i].g;
}
sort(y + 1,y + m + 1,cmp2);
int t = 1;
for(int i = 1;i <= m;i++){
while(t <= n && x[t].a < y[i].b) t++;
if(t > n) break;
if(x[t].a == y[i].b){
if(x[t].b == 'M'){
if(Run(y[i].c,y[i].d,y[i].e,y[i].f,y[i].g,1)){
x[t].run++;
}
}
else{
if(Run(y[i].c,y[i].d,y[i].e,y[i].f,y[i].g,2)){
x[t].run++;
}
}
}
}
for(int i = 1;i <= n;i++){
if(x[i].run >= 21) x[i].ans += 10;
else if(x[i].run >= 19) x[i].ans += 9;
else if(x[i].run >= 17) x[i].ans += 8;
else if(x[i].run >= 14) x[i].ans += 7;
else if(x[i].run >= 11) x[i].ans += 6;
else if(x[i].run >= 7) x[i].ans += 4;
else if(x[i].run >= 3) x[i].ans += 2;
}
for(int i = 1;i <= n;i++){
int s = x[i].g + x[i].run,sum = 0;
if(s >= 18) sum = 5;
else if(s >= 15) sum = 4;
else if(s >= 12) sum = 3;
else if(s >= 9) sum = 2;
else if(s >= 6) sum = 1;
x[i].ans += sum + x[i].f;
}
for(int i = 1;i <= n;i++){
if(x[i].ans >= 95){
cout << x[i].a << ' ' << x[i].ans << ' ' << "A" << '\n';
}
else if(x[i].ans >= 90){
cout << x[i].a << ' ' << x[i].ans << ' ' << "A-" << '\n';
}
else if(x[i].ans >= 85){
cout << x[i].a << ' ' << x[i].ans << ' ' << "B+" << '\n';
}
else if(x[i].ans >= 80){
cout << x[i].a << ' ' << x[i].ans << ' ' << "B" << '\n';
}
else if(x[i].ans >= 77){
cout << x[i].a << ' ' << x[i].ans << ' ' << "B-" << '\n';
}
else if(x[i].ans >= 73){
cout << x[i].a << ' ' << x[i].ans << ' ' << "C+" << '\n';
}
else if(x[i].ans >= 70){
cout << x[i].a << ' ' << x[i].ans << ' ' << "C" << '\n';
}
else if(x[i].ans >= 67){
cout << x[i].a << ' ' << x[i].ans << ' ' << "C-" << '\n';
}
else if(x[i].ans >= 63){
cout << x[i].a << ' ' << x[i].ans << ' ' << "D+" << '\n';
}
else if(x[i].ans >= 60){
cout << x[i].a << ' ' << x[i].ans << ' ' << "D" << '\n';
}
else cout << x[i].a << ' ' << x[i].ans << ' ' << "F" << '\n';
}
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...