2 条题解

  • 103
    @ 2023-6-17 16:40:08

    题解三四条,细节第一条。 若是没有赞,作者两行泪!!!

    #include <cmath>
    #include <cstdio>
    #include <algorithm>
    using namespace std;
    
    const int MAXN = 15005;
    int T;
    int N, L, W;
    struct node {
    	double l, r;
    }P[MAXN];
    int cnt;
    
    int main()
    {
    	while (scanf("%d", &T) != EOF)
    	{
    		for (int i = 1; i <= T; i++)
    		{
    			scanf("%d %d %d", &N, &L, &W);
    			cnt = 0;
    			for (int j = 1; j <= N; j++)
    			{
    				double C, R;
    				scanf("%lf %lf", &C, &R);
    				double x = 1.0 * sqrt((1.0 * R * R) - ((W / 2.0) * (W / 2.0))); 
    				if (R * 2 <= W) continue;
    				++cnt;
    				P[cnt].l = max((double)0, C - x); 
    				P[cnt].r = min((double)L, C + x); 
    			}
    			int ans = 0;
    			double maxr = 0.0;
    			bool check = 0;
    			while (maxr < L)
    			{
    				double nowl = maxr;
    				for (int j = 1; j <= cnt; j++)
    					if (P[j].l <= nowl && P[j].r > maxr) maxr = P[j].r;
    				if (maxr == nowl)
    				{
    					check = 1;
    					break;
    				}
    				++ans;
    			}
    			if (check) printf("-1");
    			else printf("%d", ans);
    			printf("\n");
    		}
    	}
    	return 0;
    }
    
  • 8
    @ 2023-6-16 13:19:50

    对于位置是p,半径是r的装置,根据勾股定理,可以算出 d=r2(W2)2d=\sqrt{r^2-(\frac{W}{2})^2},那么这个装置影响的范围是[pd,p+d][p-d,p+d],然后就和课内的摄像头问题的解法一样了。 需要注意忽略半径小于等于W2\frac{W}{2}的装置。

    核心代码
    
    for (int i = 1; i <= n; i++) {
        cin >> p >> r;
        if (r <= W / 2) {
            n--;
            i--;
            continue;
        }
        double d = sqrt(r * r -  (W / 2) * (W / 2));
        t[i] = {p - d, p + d};
    }
    
    • @ 2023-11-3 21:46:39

      懂了,又不完全懂(娃子刚五年级啊!!!)👀️

    • @ 2023-11-10 23:13:43

      所以说勾股定理到底是个神马玩意,我才六年级啊

    • @ 2023-11-10 23:14:11

      听不懂思密达

    • @ 2024-1-20 12:56:55

      勾股定理是说在直角三角形中,两直角边a,b的平方和,等于斜边c的平方.符号语言:a²+b²=c².

    • @ 2024-1-20 15:31:00

      我也五年级,但已经学到微积分了

    • @ 2024-1-26 22:18:07

      @ 6

    • @ 2024-2-3 9:19:09

      苟巴定理是八年级学的,所以说你学那么早你能听懂吗?@

    • @ 2024-2-11 22:25:05

      这个用不到勾股定理吧……

      知道了圆的直径半径就能求出来了

    • @ 2024-3-30 15:04:03

      你说有没有一种可能,五年级的数学书上就提到过它@

    • @ 2024-5-13 21:06:11

      @陈** 我也五年级,才学到初二的👀️ ,你六。

    • @ 2024-5-18 11:48:34

      勾股定理:a^2 + b^2 = c^2

    • @ 2024-5-19 20:15:48

      看不懂思密达(五年级的我)

    • @ 2024-6-7 20:37:14

      欧拉学到高中的我,任性

  • 1

信息

ID
152
时间
1000ms
内存
256MiB
难度
5
标签
(无)
递交数
1377
已通过
483
上传者