농부 존의 농장은 N (1 <= N <= 100,000) 분야의 긴 행으로 구성되어 있습니다. 각 필드는 젖소의 특정 번호를 포함, 1 <2000 = ncows <=
FJ 그 블록 내에서 필드 당 젖소의 평균 수를 극대화하기 위해 이러한 필드의 연속 그룹 주위에 울타리를 구축하고자합니다. 블록을 포함해야 적어도 F (1 <= F <= N) F는 입력으로서 주어진 필드.
제약 주어진 평균을 극대화 울타리의 위치를 계산합니다.
기입
* 선 1 개의 공간 분리 정수, N 및 F.
* 라인 2..N + 1의 각 행은 하나의 정수이고, 소 필드의 수를 포함한다. 2 호선 3 호선 필드 2의 수를 제공, 등, 필드 1에서 젖소의 수를 제공합니다.
수출
* 1 호선 : 1000 시간은 최대 average.Do 단지 1000 * ncows / nfields 인 정수를 인쇄, 반올림 수행하지 않습니다 하나의 정수입니다.
문제 해결 방안을 : 타이틀의 길이보다 크거나 각 이진수 1E6 절반 접두사 및 판정을 시작 길이 L의 평균으로부터 감산되어 ~ I는 1E6로부터 시작하는 연속 최대 평균 F 찾을 동일한 의미 최소값을 감산하기 전에 볼 IL 0보다 크지
1 #INCLUDE <iostream> 2 #INCLUDE <cstdio> 3 #INCLUDE <CString을> 4 #INCLUDE <알고리즘> 5 #DEFINE의 EPS를 1E-6 6 이용 스페이스 성병; 7 CONST 이중 INF = 0x3f3f3f3f * 1.0 ; 8 INT의 N, m; 9 개 번 도착 [ 100005 ]; 10 배 합 [ 100005 ]; 11 12 부울 검사 ( 이중 NUM) { 13 번 미네소타 =INF] 14 대 ( INT I = 1. ; I <= N-; I는 ++ ) { 15 SUM [I] = SUM [I- 1. ] + ARR은 [I] - NUM; 16 } . 17 번 ANS; 18 인 위해 ( INT I = m; I <= N-; I ++) { /// 0 이상일 m 동일보다 크지 않은 길이를 참조 19. 미네소타 = 분 (미네소타, SUM [IM]) // 최소 이전 IM (20)가 ANS = SUM [ I] -m; // 21은 IF (ANS> = 0 ) 창 에 해당하는 ] // 이 달성 평균 22 } (23) 돌아 거짓 ; 24 } 25 26 공극 계산 () { 27 번 왼쪽 1e- = 6 ; 28 번 우측 = 1E6; 29 일 동안 (왼쪽 + EPS < 오른쪽) { 30 배 중간 = (좌측 + 우측) / 2 ; 31 일 경우 (체크 (MID)의) 왼쪽 = 미드; (32) 다른 권리 = 중간; 33 } 34 의 printf ( " % D \ 없음 " ( INT ) (오른쪽 * 1000 )); 35 } 36 37 38 INT 의 main () { 39 는 scanf ( " %의 D % d에 " , N, m); (40) 에 대한이 ( int로 I = 1 (scanf와에게 내가 ++; i가 N = <) " %의 LF을 " & 도착 [I]); 41 계산 (); 42 반환 0 ; 43 }