题目分类(解题报告按此顺序编写):
- 签到题:H
- 前期题:A、C、F、G、I
- 中期题:E、J
- 后期题:D、B
H —— “Happy New Year!”
题解
-
考点:手速和冷静。
-
输出题目即可。
AC-Code
#include <bits/stdc++.h>
using namespace std;
int main() {
cout << "\"Happy New Year!\"" << endl;
return 0;
}
A —— Audio
题解
-
考点:计算几何基础。
-
由平方反比定律,发现响度相同时只与距离有关,所以我们只需要求一点,使得该点到三角形三个顶点距离相同,即求三角形的外心。
-
推导过程即联立任意两边的垂直平分线,求垂直平分线的交点即可。
AC-Code
#include <bits/stdc++.h>
using namespace std;
int main() {
double x1, y1, x2, y2, x3, y3;
while (cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3) {
double a = ((y2 - y1) * (y3 * y3 - y1 * y1 + x3 * x3 - x1 * x1) - (y3 - y1) * (y2 * y2 - y1 * y1 + x2 * x2 - x1 * x1)) / (2.0 * ((x3 - x1) * (y2 - y1) - (x2 - x1) * (y3 - y1)));
double b = ((x2 - x1) * (x3 * x3 - x1 * x1 + y3 * y3 - y1 * y1) - (x3 - x1) * (x2 * x2 - x1 * x1 + y2 * y2 - y1 * y1)) / (2.0 * ((y3 - y1) * (x2 - x1) - (y2 - y1) * (x3 - x1)));
double r2 = (x1 - a) * (x1 - a) + (y1 - b) * (y1 - b);
printf("%.3f %.3f\n", a, b);
}
return 0;
}
C —— Channels
题解
-
考点:前缀和思想,容斥的思想。
-
计算 [ 1 , r ] [1,r] [1,r]的答案减去 [ 1 , l − 1 ] [1,l-1] [1,l−1]的答案即可,不过需要注意其端点可能在广告的时刻哦!
-
具体计算方法:即只需要考虑如何计算 [ 1 , x ] [1,x] [1,x]的答案。
AC-Code
#include <bits/stdc++.h>
using namespace std;
#define ll long long
ll solve(ll t){
ll ans = t / 60 * 50;
ans += ((t % 60) <= 50) ? (t % 60) : 50;
return ans;
}
int main(){
ll t1,t2;
while(cin >> t1 >&