2024-10-6 模拟赛总结
\(100+80+100+0=280\),暴力又写挂了。
比赛链接:http://172.45.35.5/d/HEIGETWO/homework/67025b796735d3863dc7f60d
或者 http://yl503.yali.edu.cn/d/HEIGETWO/homework/67025b796735d3863dc7f60d
A - fountain
题意:
给定一条线段和一个圆,求线段上任意一点到圆上任意一点的最大距离和最小距离。(保证圆与线段没有交,且圆心到线段的垂足在线段上)
思路:
乱搞几何题。
代码:
#include <bits/stdc++.h>
using namespace std;
int T, r;
long double ans;
struct P {
int x, y;
};
P A, B, C;
long double dis(P A, P B) { return sqrt(pow(A.x - B.x, 2) + pow(A.y - B.y, 2)); }
long double L(P A, P B, P C) {
long double p = (dis(A, B) + dis(B, C) + dis(A, C)) / 2;
return sqrt(p * (p - dis(A, B)) * (p - dis(A, C)) * (p - dis(B, C))) * 2 / dis(A, B);
}
int main() {
freopen("fountain.in", "r", stdin);
freopen("fountain.out", "w", stdout);
ios::sync_with_stdio(0), cin.tie(0);
for (cin >> T; T; T--) {
cin >> A.x >> A.y >> B.x >> B.y >> C.x >> C.y >> r;
cout << fixed << setprecision(2) << L(A, B, C) - r << ' ' << max(dis(B, C), dis(A, C)) + r << '\n';
}
return 0;
}
B - light
题意:
给定长度为 \(m\) 的数组 \(a_i\),设 \(F(x)\) 为对于每一个 \(i\),将 \(x\gets \lceil\frac{x}{a_i}\rceil\times a_i\),\(x\) 最后的值,求 \(F(1),F(2),\cdots,F(n)\)。(保证数据随机)