G Apreciación Musical

https://ac.nowcoder.com/acm/contest/3005/G

título Descripción

A medida que el instructor del curso "Apreciación de la Música", cepillar su curso como una buena clase de crédito ha sido muy bien acogida. Pero este semestre, la escuela ha desarrollado un nuevo estándar de excelencia en la lección (el número de puntuaciones de más de 90 puntos) se limita al 10%!

Para hacer frente a este ajuste, se requiere que todos los estudiantes tienen que escribir un documento, y el uso de un algoritmo aleatorio jugó una puntuación entre 0-90, el resultado no puede ser un número entero. Azar en este documento significa, para cualquier par de igual longitud en el intervalo [0,90] Este intervalo cerrado, una puntuación de probabilidad que están presentes en la misma. Al final, el marcador lo que representó el porcentaje del tiempo, su curso excelente tasa de sólo el 10% espera? Para asegurar que todos los estudiantes por lo general obtienen puntuaciones más altas de 90 puntos.

pensamiento

Ratio ocupada calificación final media para cada relación de x, se determina si o no factible. Juicio enfoque viable es buscar el número deseado de excepcional. La relación x pueden averiguar por lo general resultados ocupados, por lo general resultados si × (1,0 - x) es mayor que o igual a 90, que la persona que debe ser excelente, suma = suma + 1, si esta condición no es satisfecha, de aproximadamente 90 a encontrar una diferencia la cantidad de puntos, determinado de acuerdo con la diferencia del original y última proporción grado x, siempre que la puntuación es igual o mayor que este, y entre 90 son factibles, así que los resultados del intervalo es de (90 - s), basado en este intervalo de 0-90 la proporción de gente va a buscar a esta buena probabilidad p, p = suma +, y el tamaño de la suma final del valor esperado es el número de buen juicio y las expectativas de n / 10, y luego cambiar el límite de la mitad

/*************************************************************************
	> File Name: G.cpp
	> Author: amoscykl
	> Mail: [email protected] 
	> Created Time: 2020年02月12日 星期三 23时09分03秒
 ************************************************************************/

#include<bits/stdc++.h>
using namespace std;
const int N = 101000;
double a[N];
int n;
#define eps 1e-8
bool check(double x){
	double sum = 0;
	double temp = 1.0 - x;
	for (int i = 1; i <= n; i++){
		if (a[i] * temp >= 90)sum++;
		else{
			double need = 90 - a[i] * temp;
			need /= x;
			need = (90 - need) / 90.0;
			sum += need;
		}
	}
	return sum <= n / 10;
}
int main()
{
	scanf("%d", &n);
	for (int i = 1; i <= n; i++)scanf("%lf", &a[i]);
	double l = 0.0;
	double r = 1.0;
	double res = -1.0;
	while (r - l > eps){
		double mid = (l + r) / 2;
		if (check(mid)){
			res = mid;
			r = mid;
		}
		else l = mid;
	}
	printf("%.2lf%c", res * 100, '%');
	return 0;
}

 

Publicados 204 artículos originales · elogios ganado 13 · Vistas a 10000 +

Supongo que te gusta

Origin blog.csdn.net/weixin_43701790/article/details/104288964
Recomendado
Clasificación