AtCoder Beginner Contest 057 ABCD题
A - Remaining Time
Time limit : 2sec / Memory limit : 256MB
Score : 100 points
Problem Statement
Dolphin loves programming contests. Today, he will take part in a contest in AtCoder.
In this country, 24-hour clock is used. For example, 9:00 p.m. is referred to as "21 o'clock".
The current time is A o'clock, and a contest will begin in exactly B hours. When will the contest begin? Answer in 24-hour time.
Constraints
- 0≤A,B≤23
- A and B are integers.
Input
The input is given from Standard Input in the following format:
A B
Output
Print the hour of the starting time of the contest in 24-hour time.
Sample Input 1
9 12
Sample Output 1
21
In this input, the current time is 9 o'clock, and 12 hours later it will be 21 o'clock in 24-hour time.
Sample Input 2
19 0
Sample Output 2
19
The contest has just started.
Sample Input 3
23 2
Sample Output 3
1
The contest will begin at 1 o'clock the next day.
题意:没啥好说的
解法:也没啥好说的
#include<bits/stdc++.h>
using namespace std;
int n,m;
int main()
{
cin>>n>>m;
cout<<(n+m)%<<endl;
return ;
}
B - Checkpoints
Time limit : 2sec / Memory limit : 256MB
Score : 200 points
Problem Statement
There are N students and M checkpoints on the xy-plane.
The coordinates of the i-th student (1≤i≤N) is (ai,bi), and the coordinates of the checkpoint numbered j (1≤j≤M) is (cj,dj).
When the teacher gives a signal, each student has to go to the nearest checkpoint measured inManhattan distance.
The Manhattan distance between two points (x1,y1) and (x2,y2) is |x1−x2|+|y1−y2|.
Here, |x| denotes the absolute value of x.
If there are multiple nearest checkpoints for a student, he/she will select the checkpoint with the smallest index.
Which checkpoint will each student go to?
Constraints
- 1≤N,M≤50
- −108≤ai,bi,cj,dj≤108
- All input values are integers.
Input
The input is given from Standard Input in the following format:
N M
a1 b1
:
aN bN
c1 d1
:
cM dM
Output
Print N lines.
The i-th line (1≤i≤N) should contain the index of the checkpoint for the i-th student to go.
Sample Input 1
2 2
2 0
0 0
-1 0
1 0
Sample Output 1
2
1
The Manhattan distance between the first student and each checkpoint is:
- For checkpoint 1: |2−(−1)|+|0−0|=3
- For checkpoint 2: |2−1|+|0−0|=1
The nearest checkpoint is checkpoint 2. Thus, the first line in the output should contain 2.
The Manhattan distance between the second student and each checkpoint is:
- For checkpoint 1: |0−(−1)|+|0−0|=1
- For checkpoint 2: |0−1|+|0−0|=1
When there are multiple nearest checkpoints, the student will go to the checkpoint with the smallest index. Thus, the second line in the output should contain 1.
Sample Input 2
3 4
10 10
-10 -10
3 3
1 2
2 3
3 5
3 5
Sample Output 2
3
1
2
There can be multiple checkpoints at the same coordinates.
Sample Input 3
5 5
-100000000 -100000000
-100000000 100000000
100000000 -100000000
100000000 100000000
0 0
0 0
100000000 100000000
100000000 -100000000
-100000000 100000000
-100000000 -100000000
Sample Output 3
5
4
3
2
1
题意:问最短的集合点是哪个站?如果有多个最短则输出序号最小的
解法:模拟
#include<bits/stdc++.h>
using namespace std;
int n,m;
set<int>q;
int dis(int x1,int y1,int x2,int y2)
{
return abs(x1-x2)+abs(y1-y2);
}
int a1[],b1[],a2[],b2[];
int main()
{
cin>>n>>m;
for(int i=;i<=n;i++)
{
cin>>a1[i]>>b1[i];
}
for(int i=;i<=m;i++)
{
cin>>a2[i]>>b2[i];
}
for(int i=;i<=n;i++)
{
int pos;
int Max=(<<)-;
for(int j=;j<=m;j++)
{
int ans=dis(a1[i],b1[i],a2[j],b2[j]);
//cout<<ans<<endl;
if(ans<Max)
{
pos=j;
// cout<<pos<<endl;
Max=ans;
}
}
cout<<pos<<endl;
}
return ;
}
C - Digits in Multiplication
Time limit : 2sec / Memory limit : 256MB
Score : 300 points
Problem Statement
You are given an integer N.
For two positive integers A and B, we will define F(A,B) as the larger of the following: the number of digits in the decimal notation of A, and the number of digits in the decimal notation of B.
For example, F(3,11)=2 since 3 has one digit and 11 has two digits.
Find the minimum value of F(A,B) as (A,B) ranges over all pairs of positive integers such thatN=A×B.
Constraints
- 1≤N≤1010
- N is an integer.
Input
The input is given from Standard Input in the following format:
N
Output
Print the minimum value of F(A,B) as (A,B) ranges over all pairs of positive integers such thatN=A×B.
Sample Input 1
10000
Sample Output 1
3
F(A,B) has a minimum value of 3 at (A,B)=(100,100).
Sample Input 2
1000003
Sample Output 2
7
There are two pairs (A,B) that satisfy the condition: (1,1000003) and (1000003,1). For these pairs, F(1,1000003)=F(1000003,1)=7.
Sample Input 3
9876543210
Sample Output 3
6
题意:把N分解成a*b,求出a,b中最长的长度,然后所有最长的长度中取最小的
解法:模拟
#include<bits/stdc++.h>
using namespace std;
int n,m;
long long num;
int Max;
int Maxn=;
int main()
{
cin>>num;
for(int i=sqrt(num);i>=;i--)
{
if(num%i==)
{
int ans1=;
int ans2=;
int x=num/i;
int y=i;
while(x)
{
x/=;
ans1++;
}
while(y)
{
y/=;
ans2++;
}
Max=max(ans1,ans2);
Maxn=min(Max,Maxn);
}
}
cout<<Maxn<<endl;
return ;
}
D - Maximum Average Sets
Time limit : 2sec / Memory limit : 256MB
Score : 400 points
Problem Statement
You are given N items.
The value of the i-th item (1≤i≤N) is vi.
Your have to select at least A and at most B of these items.
Under this condition, find the maximum possible arithmetic mean of the values of selected items.
Additionally, find the number of ways to select items so that the mean of the values of selected items is maximized.
Constraints
- 1≤N≤50
- 1≤A,B≤N
- 1≤vi≤1015
- Each vi is an integer.
Input
The input is given from Standard Input in the following format:
N A B
v1
v2
...
vN
Output
Print two lines.
The first line should contain the maximum possible arithmetic mean of the values of selected items. The output should be considered correct if the absolute or relative error is at most 10−6.
The second line should contain the number of ways to select items so that the mean of the values of selected items is maximized.
Sample Input 1
5 2 2
1 2 3 4 5
Sample Output 1
4.500000
1
The mean of the values of selected items will be maximized when selecting the fourth and fifth items. Hence, the first line of the output should contain 4.5.
There is no other way to select items so that the mean of the values will be 4.5, and thus the second line of the output should contain 1.
Sample Input 2
4 2 3
10 20 10 10
Sample Output 2
15.000000
3
There can be multiple ways to select items so that the mean of the values will be maximized.
Sample Input 3
5 1 5
1000000000000000 999999999999999 999999999999998 999999999999997 999999999999996
Sample Output 3
1000000000000000.000000
1
题意:求最大的平均值,再求出选a到选b个有几种选法可以得到最大平均值
解法:dp[i][j] 从i中选取了j个的和,sum[i][j] 从i中选取j个有多少种
#include <bits/stdc++.h>
using namespace std;
long long dp[][],sum[][];
long long a[];
long long n,l,r;
int main()
{
for(int i=;i<=;i++)
{
sum[][i]=;
sum[i][]=;
sum[i][i]=;
}
for(int i=;i<=;i++)
{
for(int j=;j<=;j++)
{
dp[i][j]=-;
}
}
dp[][]=;
cin>>n>>l>>r;
for(int i=;i<=n;i++)
{
cin>>a[i];
}
for(int i=;i<=n;i++)
{
dp[i][]=;
for(int j=;j<=i&&j<=r;j++)
{
long long x=dp[i-][j];
long long y=dp[i-][j-]+a[i];
if(x==y)
{
dp[i][j]=x;
sum[i][j]=sum[i-][j]+sum[i-][j-];
}
else if(x>y)
{
dp[i][j]=x;
sum[i][j]=sum[i-][j];
}
else
{
dp[i][j]=y;
sum[i][j]=sum[i-][j-];
}
}
}
int pos=;
long long k=;
for(int i=l;i<=r&&i<=n;i++)
{
if(pos==)
{
pos=i;
k=sum[n][i];
}
else if(dp[n][i]*pos>dp[n][pos]*i)
{
pos=i;
k=sum[n][i];
}
else if(dp[n][i]*pos==dp[n][pos]*i)
{
k+=sum[n][i];
}
}
printf("%.6f\n",dp[n][pos]*1.0/pos*1.0);
cout<<k<<endl;
return ;
}
AtCoder Beginner Contest 057 ABCD题的更多相关文章
- AtCoder Beginner Contest 068 ABCD题
A - ABCxxx Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement This contes ...
- AtCoder Beginner Contest 053 ABCD题
A - ABC/ARC Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement Smeke has ...
- AtCoder Beginner Contest 069 ABCD题
题目链接:http://abc069.contest.atcoder.jp/assignments A - K-City Time limit : 2sec / Memory limit : 256M ...
- AtCoder Beginner Contest 070 ABCD题
题目链接:http://abc070.contest.atcoder.jp/assignments A - Palindromic Number Time limit : 2sec / Memory ...
- AtCoder Beginner Contest 051 ABCD题
A - Haiku Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement As a New Yea ...
- AtCoder Beginner Contest 052 ABCD题
A - Two Rectangles Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement The ...
- AtCoder Beginner Contest 054 ABCD题
A - One Card Poker Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement Ali ...
- AtCoder Beginner Contest 058 ABCD题
A - ι⊥l Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement Three poles st ...
- AtCoder Beginner Contest 050 ABC题
A - Addition and Subtraction Easy Time limit : 2sec / Memory limit : 256MB Score : 100 points Proble ...
随机推荐
- java使用默认线程池踩过的坑(三)
云智慧(北京)科技有限公司 陈鑫 重新启动线程池 TaskManager public class TaskManager implements Runnable { -.. public TaskM ...
- Android系统开发入门
Android操作系统 Android是一个基于Linux.使用java作为程序接口的操作系统. 他提供了一些工具,比如编译器.调试器.还有他自己的仿真器(DVM — Dalvik Virtual M ...
- POJ1077 Eight —— 经典的搜索问题
题目链接:http://poj.org/problem?id=1077 Eight Time Limit: 1000MS Memory Limit: 65536K Total Submission ...
- ewasm项目初探
为了改进EVM1.0,以太坊的新一代虚拟机项目ewasm (github.com/ewasm)将支持WebAssembly(wasm),wasm在性能,扩展性,开发工具,社区都更有优势.除以太坊外,一 ...
- contents属性
CALayer 有一个属性叫做contents,这个属性的类型被定义为id,意味着它可以是任何类型的对象.在这种情况下,你可以给contents属性赋任何值,你的app仍然能够编译通过.但是,在实践中 ...
- Android自定义控件实现带有清除按钮的EditText
首先声明我也是参考了别人的思路,只是稍微做了下修改,增加显示密码与隐藏密码,没有输入字符串时让EditText进行抖动,废话少说这里附上效果图 效果很赞有木有 那么怎么实现这种效果呢?那就跟着我一起来 ...
- android项目 res/ 目录内支持的资源目录详解
表 1. 项目 res/ 目录内支持的资源目录 目录 资源类型 animator/ 用于定义属性动画的 XML 文件. anim/ 定义渐变动画的 XML 文件.(属性动画也可以保存在此目录中,但是为 ...
- linux编程 fmemopen函数打开一个内存流 使用FILE指针进行读写访问
fmemopen()函数打开一个内存流,使你可以读取或写入由buf指定的缓冲区.其返回FILE*fp就是打开的内存流,虽然仍使用FILE指针进行访问,但其实并没有底层文件(并没有磁盘上的实际文件,因为 ...
- SPOJ:Eagle and Dogs(求树上每个点最远可以走到哪里---树的直径||DP)
Eagle (AKA Mohamed Ahmed) lives in a city consists of n intersections connected by n-1 roads, in a w ...
- 「HAOI2015」「LuoguP3178」树上操作(树链剖分
题目描述 有一棵点数为 N 的树,以点 1 为根,且树点有边权.然后有 M 个操作,分为三种: 操作 1 :把某个节点 x 的点权增加 a . 操作 2 :把某个节点 x 为根的子树中所有点的点权都增 ...