Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

一直wa,后来发现居然考虑多了,代码如下

Posted by 1805180411 at 2013-04-09 23:43:49 on Problem 3122 and last updated at 2013-04-09 23:44:30
#include<iostream>
#include<cmath>
#include<stdio.h>
#include<string>
using namespace std;

int t;
int n,f;
int pie[10005];
const double pi = 3.14159265359;
const double expp = 1e-6;
int mmin,large;

bool isok(double mid)
{
	int count = 0;
	for(int i = 0;i < n;i++)
	{
		count += (int)(pie[i]*1.0/mid);//count += (int)(pie[i]*1.0/mid + 0.0000000001);这里我多考虑了,一直wa,改了就a了,我想不通,处理double//行数据不应该考虑吗?
	}
	if(count >= f)
		return true;
	return false;
}

void solve()
{
	double low ,high,mid;
	low = 0;
	high = large*large*1.0;
	while(fabs(high - low) > expp)
	{
		mid = (low + high)/2;
		if(isok(mid))
		{
			low = mid;
		}
		else
			high = mid;
	}
	printf("%.4f\n",mid*pi);
	return ;
}
void input()
{
	cin>>n>>f;
	f++;
	large = -1;

	for(int i = 0;i < n;i++)
	{
		cin>>pie[i];
		
		if(large < pie[i])
		{
			large = pie[i];
		}

		pie[i] = pie[i]*pie[i];
	}
	return;
}
int main()
{
	cin>>t;
	while(t--)
	{
		input();
		
		solve();
	}
	return 0;
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator