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)\)。(保证数据随机)

思路:

posted @ 2024-10-06 21:17  liruixiong0101  阅读(8)  评论(1编辑  收藏  举报