메뉴 건너뛰기

app

[풀이] 머리가 굳었을 때 풀어보는 문제

suritam92012.11.19 05:22조회 수 2927댓글 0

  • 1
    • 글자 크기

요즘 수학이던 과학이던 생각하는 걸 너무 귀찮게 생각하고 있어, 생각하는 연습을 하기 위해 문제를 풀었다.


그나마 능숙한(?) PHP로 했는데, " java, c++, scalar, js, rb. haskell 만 지원"  한다.


걍. 버림. 뭐,,. 어차피 허접한 코드니... php가 설치된 서버 terminal 에서


$ php [파일명]

으로 실행시킨다.


fest.jpg


<?php

function read() {

    $fp=fopen("/dev/stdin", "r");

    $input=fgets($fp, 255);

    fclose($fp);

  return str_replace("n", "", $input);   // 개행 처리

            //return $input;

}

function fest($arr, $l, $s){

//$s 시작 포인트

//$l 연속된 위치까지

$arr_sz=count($arr);

$sum=0;

for($i=$s;$i<$l+$s;$i++){

$sum=$arr[$i]+$sum;

}

return $sum;

}

   print("input C ? ");

   $c_val = read();

if(is_int(intval($c_val)) && $c_val>0){

$c_val_int=1;

$c_val_num=intval($c_val);

}else{

$c_val_int=0;

}

if($c_val_int){

while($c_val_num--){

  print("input N L ? ");

  $n_l_val = read();

  $n_l_val_list=explode(" ",$n_l_val);

  if(count($n_l_val_list)==2){

  $n_val=intval($n_l_val_list[0]);

  $l_val=intval($n_l_val_list[1]);

  if($n_val>=$l_val)

  $n_l_val_clear=1;

  }else{

  $n_l_val_clear=0;

  }

if($n_l_val_clear){

  print("input cost ? ");

  $cost_val = read();

  $cost_val_list=explode(" ",$cost_val);

$s_limit=$n_val-$l_val+1;

$s_val=0;

$sum_str="";

$sum_list=array();

if(count($cost_val_list)==$n_val){

while($s_limit--){

$sum_list[]=fest($cost_val_list, $l_val, $s_val++);

}

$sol_list[]=round(min($sum_list)/$l_val,10);

}else{

print("n ------------you should input count(cost)==N-------------- n");

$c_val_num++;

}

}else{

print("n ------------you should input N>=L and two args-------------- n");

$c_val_num++;

}

}

$c_s_l=count($sol_list);

$j=0;

while($c_s_l--){

echo $sol_list[$j++]."n";

}

print("end processn");

}

?>


아래 경로에 있는 문제를 풀어보았다.


http://prague.algospot.com/judge/problem/read/FESTIVAL


록 페스티벌

문제 정보

문제

커다란 공연장을 빌려서 록 페스티벌을 개최하려고 합니다. 이 페스티벌은 여러 날 동안 진행되며, 하루에 한 팀의 밴드가 공연장에서 콘서트를 하게 됩니다. 전체 밴드를 몇 팀 섭외할 지는 아직 결정하지 않았지만, 페스티벌의 간판 스타인 L개의 팀은 이미 섭외가 끝난 상태입니다. 따라서 페스티벌은 최소 L일 이상 진행하게 됩니다.

이번에 사용할 공연장은 하루 빌리는 데 드는 비용이 매일 매일 다릅니다. 때문에 공연 일정을 잘 정해서 공연장 대여 비용을 줄이려고 합니다. 앞으로 N일간의 공연장 대여 비용을 알고 있다고 합시다. 이 중 L일 이상을 연속해서 대여하되, 공연장을 하루 빌리는 데 드는 평균 비용을 최소화하려면 어떻게 공연장을 빌려야 할까요?

예를 들어 앞으로 6일간 공연장을 빌리는 데 드는 비용이 각 {3, 1, 2, 3, 1, 2}라고 합시다. 이미 세 팀을 섭외했다고 하면, 3일 대신 4일 동안 공연을 진행해서 평균 비용을 더 저렴하게 할 수 있습니다. 3일 동안의 평균 대여 비용을 최소화하는 방법은 2일째부터 4일째까지 공연장을 대여하는 것인데, 이 때 하루 평균 (1+2+3)/3 = 2의 비용이 듭니다. 반면 2일째부터 5일째까지 공연장을 대여하면 평균 비용이 (1+2+3+1)/4 = 7/4밖에 되지 않습니다.

입력

입력의 첫 줄에는 테스트 케이스의 수 C (C ≤ 100)가 주어집니다. 각 테스트 케이스의 첫 줄에는 공연장을 대여할 수 있는 날들의 수 N (1 ≤ N ≤ 1000)과 이미 섭외한 공연 팀의 수 L (1 ≤ L ≤ 1000, L ≤ N)이 주어집니다. 그 다음 줄에는 N개의 숫자로 공연장 대여 비용이 날짜별로 주어집니다. 모든 비용은 100 이하의 자연수입니다.

출력

입력에 주어지는 각 테스트 케이스마다 한 줄에 최소의 평균 대여 비용을 출력합니다. 10-7 이하의 절대/상대 오차가 있는 답은 정답 처리됩니다.

예제 입력

2
6 3
1 2 3 1 2 3 
6 2 
1 2 3 1 2 3

예제 출력

1.75000000000
1.50000000000

suritam9 (비회원)
  • 1
    • 글자 크기

댓글 달기

이전 1 2 3 4 5 6 7 8 9 10... 14다음
첨부 (1)
fest.jpg
10.6KB / Download 32
위로