ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【AcWing】第61场周赛【2022.07.23】

2022-07-25 19:33:37  阅读:158  来源: 互联网

标签:lf x1 y1 23 double 样例 61 2022.07 include



竞赛链接

A.糖果

题目链接

链接

题目描述

给定三个正整数 a,b,c。

请计算 ⌊a+b+c2⌋,即 a,b,c 相加的和除以 2 再下取整的结果。

输入格式

第一行包含整数 T,表示共有 T 组测试数据。

每组数据占一行,包含三个正整数 a,b,c

输出格式

每组数据输出一行结果,表示答案。

数据范围

前三个测试点满足 1 ≤ T ≤ 10
所有测试点满足 1 ≤ T ≤ 1000,1 ≤ a,b,c ≤ 10^16

输入样例:

4
1 3 4
1 10 100
10000000000000000 10000000000000000 10000000000000000
23 34 45

输出样例:

4
55
15000000000000000
51

难度:简单

时/空限制:1s / 256MB

总通过数:1217
总尝试数:1677

来源:AcWing,第61场周赛

思路

模拟,水题

代码

点击查看代码
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <algorithm>

using namespace std;

typedef long long ll;

void solve()
{
	ll a , b , c;
	cin >> a >> b >> c;
	
	cout << (a+b+c)/2 << endl;
}

int main()
{
	int T;
	cin >> T;
	
	while(T --)
		solve();
		
	return 0;
}

B.指针

题目链接

链接

题目描述

给定一个如下图所示的全圆量角器。

image

初始时,量角器上的指针指向刻度 0。

现在,请你对指针进行 n 次拨动操作,每次操作给定一个拨动角度 ai,由你将指针拨动 ai 度,每次的拨动方向(顺时针或逆时针)由你自由决定。

请你判断,能否通过合理选择每次拨动的方向,使得指针最终仍然指向刻度 0。

输入格式

第一行包含整数 n。

接下来 n 行,每行包含一个整数 ai,表示一次操作的拨动角度。

输出格式

如果可以做到指针最终仍然指向刻度 0,则输出 YES,否则输出 NO。

数据范围

前 4 个测试点满足 1 ≤ n ≤ 3
所有测试点满足 1 ≤ n ≤ 15,1 ≤ ai ≤ 180

输入样例1:

3
10
20
30

输出样例1:

YES

输入样例2:

3
10
10
10

输出样例2:

NO

输入样例3:

3
120
120
120

输出样例3:

``YES```

难度:中等

时/空限制:1s / 256MB

总通过数:960
总尝试数:2549

来源:AcWing,第61场周赛

思路

对于每一个a[i]来说都有两种选择,向左转,或者向右转,因此用dfs

代码

点击查看代码
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <algorithm>

using namespace std;

const int N = 20;

int n;
int a[N];
bool flag = false;

void dfs(int u,int d)//u:次数,d:度数 
{
	if(d % 360 == 0 && u == n)
	{
		flag = true;
		return;
	}
	
	if(u == n)
		return;
	
	
	dfs(u+1,d+a[u]);
	dfs(u+1,d-a[u]);
}

int main()
{
	cin >> n;
	
	for(int i = 0;i < n;i ++)
		cin >> a[i];
	
	dfs(0,0);
	
	if(flag)
		cout << "YES" << endl;
	else
		cout << "NO" << endl;
	
	return 0;
}

C.画圆

题目链接

链接

题目描述

在一个二维平面内,给定一个以 (x1,y1) 为圆心,半径为 R 的圆以及一个坐标为 (x2,y2) 的点。

请你在二维平面上画一个圆,要求:

1. 平面中不存在点满足既在你画的圆上,又在给定的圆外。
2. 给定的点不能在你画的圆内(可以在圆上)。
3. 被给定圆覆盖且不被你画的圆覆盖的区域面积应尽可能小。

请输出你画的圆的圆心坐标以及半径。

输入格式

共一行,包含 5 个整数 R,x1,y1,x2,y2。

输出格式

三个实数 xans,yans,r,其中 (xans,yans) 是你画的圆的圆心坐标,r 是你画的圆的半径。

结果保留六位小数。

数据范围

所有测试点满足 1 ≤ R ≤ 10^5,|x1|,|y1|,|x2|,|y2| ≤ 10^5。

输入样例1:

5 3 3 1 1

输出样例1:

3.767767 3.767767 3.914214

输入样例2:

10 5 5 5 15

输出样例2:

5.000000 5.000000 10.000000

难度:困难

时/空限制 :1s / 256MB

总通过数:708
总尝试数:3450

来源:AcWing,第61场周赛

算法标签

计算几何

思路

根据第二个点的位置,可以分为两种情况
1.第二个点在圆外或圆上
那么最大的圆的位置就是已知圆本身

2.第二个点在圆内
在此情况上,又分为两种情况

  • 输入的第二个点与第一个点//重叠**,则最大圆如图所示
    image
  • 输入的第二点与第一个点不重叠,则最大的圆如图所示
    image

代码

点击查看代码
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <algorithm>

using namespace std;

const double eps = 1e-8;

//浮点数有误差,因此采用cmp函数 
int cmp(double a,double b)
{
    if(fabs(a - b) < eps) return 0;//a == b

    if(a < b) return -1;//a < b

    return 1;// a > b
}

int main()
{
    double x1,y1,x2,y2,r;
    scanf("%lf%lf%lf%lf%lf", &r , &x1 , &y1 , &x2 , &y2 );

    //两点之间的距离 
    double dx = x1 - x2;
    double dy = y1 - y2;
    double d = sqrt(dx*dx + dy*dy);

    //所给的点在圆上或圆外,因此最大的圆就是他本身 
    if(cmp(d,r) >= 0)
        printf("%lf %lf %lf\n" , x1 , y1 , r);
    else
    {
        if(cmp(x1,x2) == 0 && cmp(y1,y2) == 0)//给的两个点重合 
            printf("%lf %lf %lf\n", x1 + r/2 , y1 , r/2);
        else
        {
            double r2 = ( r + d ) / 2;
            double x = x2 + (x1 - x2) / d * r2;
            double y = y2 + (y1 - y2) / d * r2;
            printf("%lf %lf %lf\n" , x , y , r2);
        }
    }

    return 0;
}

标签:lf,x1,y1,23,double,样例,61,2022.07,include
来源: https://www.cnblogs.com/heystar/p/16513139.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有