티스토리 툴바

The Programmer's Laboratory

UVa 591

벽돌 쌓기

설명

Bob은 블럭을 가지고 놀기를 좋아한다. 어느 날 Bob이 블럭을 높이가 다른 여러 개의 벽으로 쌓아 놓고 누나에게 보여 주며, "누나! 나 벽 만들었다~!"라고 자랑스럽게 얘기했다. 하지만 누나는 "벽들 높이가 다 다르잖니. 똑같이 맞춰야지."라며 핀잔을 주었다. 가만히 생각해 본 Bob은 누나 말이 맞는 것 같아 쌓았던 블럭을 모두 높이가 같게 재배열하려고 한다. 하지만 Bob은 매우 게을러서 최소의 이동으로 이를 하고 싶어한다. 블럭은 한 번의 이동 당 하나씩만 움직일 수 있다. 여러분이 도와 줄 수 있을까?

사용자 삽입 이미지



입력 형식


여러 개의 테스트 케이스가 주어질 수 있다. 각 테스트케이스에는 블럭으로 쌓은 벽의 개수 n이 주어지며, 다음 줄에 각 벽에 대해 몇 개의 블럭이 쌓아져 있는지에 대한 정보 hi가 주어진다. (1<=n<=50, 1<=h<=100)
입력되는 데이터는 재배열할 수 있는 형태이므로 블럭 개수가 벽의 개수로 나누어 떨어지는지는 검사할 필요가 없다. n이 0일 경우 프로그램을 종료한다.


출력 형식


각 테스트케이스에 대해 'Set #1'과 같이 몇 번째 테스트 케이스인지를 밝히고, "The minimum number of moves is k."와 같이 최소 이동 횟수를 출력한다. 각 테스트케이스 사이에는 빈 줄을 출력한다.


입력 예제


6
5 2 4 1 7 5
0


출력 예제


Set #1
The minimum number of moves is 5.

원문 보기 : http://icpcres.ecs.baylor.edu/onlinejudge/index.php?option=com_onlinejudge&Itemid=99999999&category=7&page=show_problem&problem=532

Posted by ひまわり
ACM Problems l 2008/01/15 12:31

UVa 228

자원 할당

설명

한 소프트웨어 개발 회사가 생산성을 높이기 위해 새로운 프로그래머들을 고용하려고 한다. 하지만 생산성을 측정하는 것이 어렵기 때문에, 프로그래밍 부서에서 새로 작성한 소스 코드의 줄수를 생산성으로 간주하기로 했다. 회사는 생산성을 최대화시키기 위해서 어떻게 돈과 프로그래머를 각 부서에 할당해야 할 지를 결정할 만한 자원 할당 모델을 찾고자 한다.


각 부서는 필요로 하는 인원과 예산이 따로 있다. 예를 들어, 어떤 부서가 0, 3, 5, 6명의 새로운 프로그래머가 필요하다고 한다면, 이 부서에 1, 2, 4, 7명의 새로운 프로그래머를 배치하면 안된다. 예산도 마찬가지로, $0, $20000, $50000, $90000를 필요로 하는 부서에 이외의 금액을 예산으로 책정할 수 없다. 또한 각 부서마다 새로운 프로그래머와 예산이 할당되었을 때 증가되는 소스코드의 줄 수가 주어진다. 증가되는 소스코드는 양의 값을 가지며, 0명의 새 프로그래머와 $0의 예산이 주어진다면, 증가되는 소스코드는 0줄이다. 위 예제에서는 프로그래머에서 4가지 경우, 예산에서 4가지 경우가 있으므로 총 16가지 경우를 생각해 볼 수 있으며, 각각의 경우에 증가되는 소스코드가 입력될 것이다.


당신은 새 프로그래머와 자원을 각 부서에 가장 효율적으로 배치하는 프로그램을 작성해야 한다. 각 부서마다 몇 명의 프로그래머가 배치될 것이며 얼마의 예산이 할당될 것인가를 결정해야 한다. 각 부서에 배치된 프로그래머의 수의 합은 새로 고용하는 프로그래머의 총 인원수를 넘지 못하며, 예산 또한 책정된 전체 예산을 넘지 못한다. 이 프로그램을 작성하는 방법은 여러 가지가 있는데, 이 중 아무 것이나 사용해도 된다.


입력


몇 개의 테스트케이스가 주어질 수 있다.
입력파일의 첫 세 줄은 다음과 같다.


d : 부서의 개수(0<d<=20)
p : 새로 고용할 프로그래머의 최대 수
b : 부서에 새로 배치할 예산의 최대 액수


위의 3줄 이후에 나오는 정보는 각 부서에 대한 정보이다. 첫 번째 나오는 것은 division #1에 대한 정보이고, 두 번째는 division #2, 세 번째는 division #3...과 같다. 각 부서의 정보는 다음과 같이 구성되어 있다.


n : 새로 배치할 수 있는 프로그래머의 수의 가지수
x1 x2 x3...xn : 새로 배치할 수 있는 프로그래머 수(공백으로 구분된다)
k : 새로 배치할 수 있는 예산 액수의 가지수
b1 b2 b3...bn : 배치할 수 있는 예산의 액수(공백으로 구분된다)
n*k 크기의 정수 배열 : i행 j열의 데이터는 xi명의 프로그래머와 bj의 예산을 새로 배치했을 때 증가하는 소스코드의 줄 수이다.


새 프로그래머와 예산을 어떤 부서에도 배치하지 않는 것도 물론 가능하다. 이 경우에는 증가하는 소스코드의 줄 수가 0이 될 것이다.


만약 d에 0이 입력될 경우 파일의 끝으로 간주하면 된다. 각 테스트케이스는 새로운 줄로 시작한다.


출력


각 테스트케이스에 대해 problem #1, problem #2와 같이 몇 번째 테스트케이스인지 밝혀야 한다. 각 테스트케이스마다 새로 투자할 돈의 총 액수와 새로 배치할 프로그래머의 수를 출력하고, 이로 인해 증가되는 생산성(증가되는 소스코드의 줄 수)은 얼마인지 출력한다. 이후 각 부서별로 얼마의 돈과 프로그래머를 배치할 것인지와 이로 인해 증가하는 소스코드의 줄 수를 출력한다. 부서와 부서 사이에는 빈 줄이 존재해야 한다. 출력은 출력 예제를 참고하여 가능한 한 읽기 쉬운 형태로 해야 한다.


입력 예제

10
90000
4
0 2 5 6
4
0 20000 50000 70000
0   10000    20000    50000
60000   20000    10000    40000
20000   10000    30000    40000
30000   10000    40000    30000
5
0 1 3 4 8
3
0 40000 80000
0   50000   30000
50000   40000   60000
20000   30000   50000
80000   90000   50000
30000   40000   70000
3
0  4  6
5
0  50000  30000  40000  50000
0  30000  50000  60000  30000
10000  20000  30000  40000  50000
20000  30000  40000  50000  60000
0


출력 예제


Optimal resource allocation problem #1


Total budget: $80000
Total new programmers: 6
Total productivity increase: 210000


Division #1 resource allocation:
Budget:  $0
Programmers: 2
Incremental lines of code: 60000


Division #2 resource allocation:
Budget:  $40000
Programmers: 4
Incremental lines of code: 90000


Division #3 resource allocation:
Budget:  $40000
Programmers: 0
Incremental lines of code: 60000

원문 보기 : http://icpcres.ecs.baylor.edu/onlinejudge/index.php?option=com_onlinejudge&Itemid=8&category=4&page=show_problem&problem=164

Posted by ひまわり
ACM Problems l 2008/01/15 01:18
PROLAB을 조금 더 활성화시켜 볼 생각입니다.
PROLAB이 마치 소수 집단의 게시판 정도로 사용되는 것 같은 감이 있어 앞으로 이와 같은 글의 경우 임의로 판단하여 자진 수정 권고를 하고 반응이 없을 경우 통보 후 삭제하도록 하겠습니다. Computer Programming이나 O/S, S/W, H/W 등 컴퓨터에 관한 모든 정보나 지식, 자료 등을 올리는 것으로 하겠습니다.
또한, 태그를 달 때에는 꼭 필요한 것만 달도록 하기 바랍니다. 예를 들어, Programmer's Laboratory라는 태그가 필요한 글에 Programmer, Programmer's, Programmer's Laboratory, Laboratory, Lab, Prolab 과 같이 단어를 쪼개서 태그를 달지 않도록 해 주시기 바랍니다. 가장 큰 Programmer's Laboratory와 PROLAB만 태그로 달아도 충분하기 때문입니다.
또한 글 주소의 경우 항상 영어나 숫자로 해 주시기 바랍니다.
Posted by ひまわり
분류없음 l 2008/01/06 01:57


Posted by 악마의9시저주
분류없음 l 2007/09/20 16:03
이 레지스트리를 원하는 프로그램으로 변경하면 부팅시 Shell로 Explorer 대신에 등록한 프로그램이 실행됩니다. 악용하지 마세요.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon 여기에 있는 Shell이라는 값.

개인 블로그에는 조만간 제가 포스팅할 터니이 선수치지 마세요.
Posted by ひまわり
분류없음 l 2007/09/19 08:44
http://clubbox.co.kr/lovetodays
Posted by 악마의9시저주
분류없음 l 2007/09/18 00:08
The programmer's Laboratory 가 열렸습니다!

우리 팀들!!!!!!!

제대로 합시다!!
Posted by 악마의9시저주
분류없음 l 2007/09/03 00:08
1 

카테고리

분류 전체보기 (7)
ACM Problems (2)

달력

«   2012/05   »
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    
tistory!get rss Tistory Tistory 가입하기!