1 条题解
-
1
Sol
其实就是中等的模拟。代码只是变量比较长。
造数据才是大模拟!cyx 为了造数据更容易甚至改了题面。但尽管如此数据生成的代码与 std 的长度相差不大。
我们对于每个记录,按照题意描述检查一下,如果过了就打上标记,并计算时间差得到该题的罚分。被 hack 就取消标记。出现非 CE 或 非 WA on 1 就把这题分数按规定减去 。
Code
/* Auther: cyx2009 Luogu: 516346 QQ: 2176807108 */ #include <bits/stdc++.h> using namespace std; int n, m, k; string Problem_Name[2520]; struct Submission { string Time, Verdict, Problem; int Minute; } CYX_Submission[25020], ZJS_Submission[25020]; string Start_Time; int INT_Start_Time; long long CYX_Score, ZJS_Score; int ZJS_WA[2520]; int CYX_WA[2520]; bool ZJS_Hacked[2520]; bool CYX_Hacked[2520]; bool ZJS_AC[2520]; bool CYX_AC[2520]; int ZJS_Problem_Score[2520]; int CYX_Problem_Score[2520]; map<string, int> Name_to_Id; int Time_String_to_Int(string Time) { int HH, MM, Minute; HH = (Time[0] - '0') * 10 + (Time[1] - '0'); MM = (Time[3] - '0') * 10 + (Time[4] - '0'); Minute = HH * 60 + MM; return Minute; } int Get_Int_Submission_Time(string Time) { int Minute = Time_String_to_Int(Time); return Minute < INT_Start_Time ? Minute + 24 * 60 - INT_Start_Time : Minute - INT_Start_Time; } int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin >> n >> m >> k; for (int i = 1; i <= k; i++) { cin >> Problem_Name[i]; Name_to_Id[Problem_Name[i]] = i; } cin >> Start_Time; INT_Start_Time = Time_String_to_Int(Start_Time); for (int i = 1; i <= n; i++) { cin >> ZJS_Submission[i].Time >> ZJS_Submission[i].Problem >> ZJS_Submission[i].Verdict; ZJS_Submission[i].Minute = Get_Int_Submission_Time(ZJS_Submission[i].Time); } for (int i = 1; i <= m; i++) { cin >> CYX_Submission[i].Time >> CYX_Submission[i].Problem >> CYX_Submission[i].Verdict; CYX_Submission[i].Minute = Get_Int_Submission_Time(CYX_Submission[i].Time); } for (int i = 1; i <= n; i++) { if (ZJS_Submission[i].Verdict == "Hacked") { if (!ZJS_Hacked[Name_to_Id[ZJS_Submission[i].Problem]]) { CYX_Score += 100; ZJS_Hacked[Name_to_Id[ZJS_Submission[i].Problem]] = 1; ZJS_AC[Name_to_Id[ZJS_Submission[i].Problem]] = 0; } } else if (ZJS_Submission[i].Verdict == "CompileError") { continue; } else if (ZJS_Submission[i].Verdict.size() >= 23 && ZJS_Submission[i].Verdict.substr(0, 21) == "Wrongansweronpretest(") { if (ZJS_Submission[i].Verdict[21] == '1') continue; ZJS_WA[Name_to_Id[ZJS_Submission[i].Problem]]++; } else if (ZJS_Submission[i].Verdict == "PretestsPassed") { ZJS_AC[Name_to_Id[ZJS_Submission[i].Problem]] = 1; ZJS_Problem_Score[Name_to_Id[ZJS_Submission[i].Problem]] = max( Name_to_Id[ZJS_Submission[i].Problem] * 150, Name_to_Id[ZJS_Submission[i].Problem] * 500 - ZJS_Submission[i].Minute * Name_to_Id[ZJS_Submission[i].Problem] * 2 - ZJS_WA[Name_to_Id[ZJS_Submission[i].Problem]] * 50); ZJS_WA[Name_to_Id[ZJS_Submission[i].Problem]]++; } } for (int i = 1; i <= m; i++) { if (CYX_Submission[i].Verdict == "Hacked") { if (!CYX_Hacked[Name_to_Id[CYX_Submission[i].Problem]]) { ZJS_Score += 100; CYX_Hacked[Name_to_Id[CYX_Submission[i].Problem]] = 1; CYX_AC[Name_to_Id[CYX_Submission[i].Problem]] = 0; } } else if (CYX_Submission[i].Verdict == "CompileError") { continue; } else if (CYX_Submission[i].Verdict.size() >= 23 && CYX_Submission[i].Verdict.substr(0, 21) == "Wrongansweronpretest(") { if (CYX_Submission[i].Verdict[21] == '1') continue; CYX_WA[Name_to_Id[CYX_Submission[i].Problem]]++; } else if (CYX_Submission[i].Verdict == "PretestsPassed") { CYX_AC[Name_to_Id[CYX_Submission[i].Problem]] = 1; CYX_Problem_Score[Name_to_Id[CYX_Submission[i].Problem]] = max( Name_to_Id[CYX_Submission[i].Problem] * 150, Name_to_Id[CYX_Submission[i].Problem] * 500 - CYX_Submission[i].Minute * Name_to_Id[CYX_Submission[i].Problem] * 2 - CYX_WA[Name_to_Id[CYX_Submission[i].Problem]] * 50); CYX_WA[Name_to_Id[CYX_Submission[i].Problem]]++; } } for (int i = 1; i <= k; i++) { if (ZJS_AC[i]) { ZJS_Score += ZJS_Problem_Score[i]; } if (CYX_AC[i]) { CYX_Score += CYX_Problem_Score[i]; } } cout << ZJS_Score << " " << CYX_Score << endl; if (CYX_Score > ZJS_Score) { cout << "cyx" << endl; } else if (ZJS_Score > CYX_Score) { cout << "zjs" << endl; } else { cout << "Wow!Same!" << endl; } return 0; }
- 1
信息
- ID
- 715
- 时间
- 1500ms
- 内存
- 256MiB
- 难度
- 4
- 标签
- 递交数
- 76
- 已通过
- 9
- 上传者