列表

详情


NC213188. 每日咕咚

描述


为了让每天的锻炼任务变得更加有趣,农农和林林给ZAFU的学生们制定了一个
有趣的跑步规则,内容如下:
        
         1、假定现在有N个学生在操场跑步
         2、在一开始的时候,N个学生需要排成一列,前后间距为 X,那么队列总长为 (N-1)* X
         3、处于队尾的学生会加速追赶前面的学生,在这个过程中其余学生保持平均速度 V 不变,(队尾的同学超过所有同学后,比第二名同学领先X的间距时才视为完成一次追赶,此时当前的队尾同学才开始追赶)
         当所有学生都完成一次追赶之后,锻炼结束。 
        
         现在告知每一位学生在不同位置追赶时的速度 Uij,请你帮助计算学生们完成锻炼的期望时长。 
        

            

输入描述

 N X V
U11---------U1N
----------------
----------------
UN1--------UNN
1 <= N <= 500 (N为正整数)
0 < X <= 10000 (X为浮点数)
0 < V <= 1000  (V为浮点数) 
V + 1 < Uij <= 2000  (Uij为浮点数) 

输出描述

RES (表示期望时长,保留两位小数)

示例1

输入:

2 2.00 1.00
2.00 3.00
3.00 2.00

输出:

6.00

说明:

共有两名学生
可行的排列有
【1, 2】 此时时长为 (2.00 * 2)/ (2.00 - 1.00)+ (2.00 * 2) / (2.00 - 1.00)= 8.00
【2, 1】 此时时长为 (2.00 * 2) /(3.00 - 1.00)+ (2.00 * 2) / (3.00 - 1.00)= 4.00
期望时长为 6.00

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C(clang11) 解法, 执行用时: 180ms, 内存消耗: 372K, 提交时间: 2020-11-13 15:52:53

#include"stdio.h"
main()
{
	int N,i,j,sum=1;
	double x,v,a,num=0,st=0;
	scanf("%d %lf %lf",&N,&x,&v);


   
	for(i=0;i<N;i++)
	{
		for(j=0;j<N;j++)
		{
			scanf("%lf",&a);
			num+=(double)(x*N)/(a-v);
		}
		
	}
	st=num/N;
	printf("%.2lf",st);


}

Python3(3.9) 解法, 执行用时: 426ms, 内存消耗: 2740K, 提交时间: 2020-10-24 15:13:49

n, x, v = map(float, input().split(' '))
n = int(n)
res = 0.0
for i in range(0, n):
    temp = map(float, input().split(' '))
    for e in temp:
        res += (x * n) / (e - v)

res /= float(n)
print(("%.2f" % res))

C++ 解法, 执行用时: 632ms, 内存消耗: 504K, 提交时间: 2022-03-26 15:36:59

#include<iostream>
using namespace std;
int n;
double x,v,ans,t;
int main()
{
	cin>>n>>x>>v;
	for(int i=1;i<=n;++i)
	for(int j=1;j<=n;++j)
	cin>>t,ans+=n*x/(t-v);
	printf("%.2f\n",ans/n);
}

上一题