Logo
(追記) (追記ここまで)

33665번 - 트레이드 AI 만들기

시간 제한메모리 제한제출정답맞힌 사람정답 비율
2.8 초 329 MB2001159061.644%

문제

루미는 오랜만에 친구들을 만나 모노폴리 게임을 하기로 했다. 하지만 정작 루미는 모노폴리 게임에서 트레이드를 잘하지 못한다. 계속 지게 되어 분한 루미는 이를 갈고 트레이드 AI를 만들기로 마음 먹었다. 하지만 루미는 AI에 대한 지식이 얕은 편이어서 이번엔 간단한 수준의 트레이드 AI를 개발하기로 했다.

루미의 모노폴리 게임은 10ドル$개의 색상으로 칠해진 여러 도시로 이루어진 맵에서 진행된다. 각 도시는 하나의 색상으로 칠해져 있으며 같은 색상의 도시는 4ドル$개 존재한다. 각 플레이어는 도시를 구매하거나 자신이 소유한 도시를 담보로 은행에서 대출을 받거나 도시와 현금을 다른 플레이어와 트레이드할 수 있다.

트레이드는 아래와 같은 순서로 진행된다.

  1. 트레이드에 참여하는 두 플레이어는 각각 자신이 지불할 현금과 상대로부터 받아올 도시를 제시한다.
  2. 두 플레이어가 제시된 조건을 보고 트레이드를 진행하기 원하면 각자 자신이 제시한 현금을 상대에게 넘겨주고 자신이 제시한 도시를 넘겨받는다.

이때,

  1. 각 플레이어는 자신이 소유하지 않은 도시를 담보 대출의 담보물로 설정할 수 없다.
  2. 각 플레이어는 자신이 소유하고 있는 현금보다 많은 현금을 제시하지 못하며, 상대가 소유하고 있지 않은 도시를 제시할 수 없다.
  3. 트레이드 이후에도 담보 대출의 담보물이 된 도시는 담보 상태가 유지된다. 즉, 자신이 담보 대출의 담보물로 설정한 도시를 상대에게 트레이드로 넘기면 상대가 담보 대출 페널티를 지게 된다.

루미의 트레이드 AI는 아래와 같은 방식으로 재산 가치를 계산한다.

  1. 재산 가치 계산: 플레이어가 소유한 도시의 가치를 색상별로 계산해 재산 가치에 더한다. 어떤 도시도 소유하지 않은 색상의 가치는 0ドル$이다.
  2. 현금 가치 계산: 플레이어가 보유하고 있는 현금의 $A$%를 재산 가치에 더한다. 계산 결과가 정수가 아니라면 소수점 아래는 버린다.
  3. 담보 대출 페널티 계산: 플레이어가 가지고 있는 도시 중 담보 대출의 담보로 설정된 도시마다 $B$의 페널티를 재산 가치에서 차감한다.

루미의 트레이드 AI는 (트레이드 후 자신의 재산 가치 - 트레이드 후 상대의 재산 가치)(트레이드 전 자신의 재산 가치 - 트레이드 전 상대의 재산 가치)보다 크거나 같다면 유리한 트레이드라고 판단하여 트레이드를 수락한다. 모노폴리 게임의 트레이드 상황이 주어지면 루미의 트레이드 AI가 트레이드를 수락할지 예측해 보자.

입력

입력은 총 19ドル$줄로 구성된다.

첫 번째 줄부터 10ドル$개의 줄에 걸쳐 색상별로 도시의 가치를 계산하는데 필요한 정보가 주어진다. $i$번째 줄에서는 $w_{i,1},\cdots ,w_{i,4}$가 공백으로 구분되어 주어진다. $w_{i, j}$는 색상이 $i$인 도시를 $j$개 소유했을 때의 가치를 나타낸다.

11ドル$번째 줄에서는 트레이드 전 자신과 상대가 소유한 도시 현황이 삼진 문자열 형태로 주어진다.

12ドル$번째 줄에서는 트레이드 전 자신과 상대가 트레이드로 제시한 도시 현황이 삼진 문자열 형태로 주어진다.

11ドル$번째 줄부터 2ドル$개의 줄에 걸쳐 주어지는 문자열은 다음과 같은 형식을 따른다.

  • 길이는 40ドル$자이다.
  • 11ドル$번째 줄에서 4ドル(i-1)+j$번째 자릿수는 색상이 $i$인 도시 중 $j$번째 도시를 소유한 플레이어를 나타낸다. 자신이 소유한 경우에는 1ドル,ドル 상대가 소유한 경우에는 2ドル,ドル 둘 중 누구의 소유도 아닌 경우 0ドル$이다.
  • 12ドル$번째 줄에서 4ドル(i-1)+j$번째 자릿수는 색상이 $i$인 도시 중 $j$번째 도시를 트레이드에서 제시한 플레이어를 나타낸다. 자신이 트레이드에서 제시한 상대의 도시인 경우에는 1ドル,ドル 상대가 트레이드에서 제시한 자신의 도시인 경우에는 2ドル,ドル 둘 중 누구도 트레이드에서 제시하지 않은 경우 0ドル$이다.

13ドル$번째 줄에서는 트레이드 전 자신과 상대가 소유한 도시 중 담보 대출의 담보물로 설정된 도시 현황이 이진 문자열 형태로 주어진다.

13ドル$번째 줄에 주어지는 문자열은 다음과 같은 형식을 따른다.

  • 길이는 40ドル$자이다.
  • 4ドル(i-1) +j$번째 자릿수는 색상이 $i$인 도시 중 $j$번째 도시가 담보 대출의 담보물로 설정된 도시인지 나타낸다. 담보 대출의 담보물로 설정된 도시라면 1ドル,ドル 아니라면 0ドル$이다.

14ドル$번째 줄과 15ドル$번째 줄에서는 트레이드 전 자신과 상대가 보유하고 있는 현금이 한 줄에 하나씩 차례대로 주어진다.

16ドル$번째 줄과 17ドル$번째 줄에서는 이번 트레이드에서 자신과 상대가 제시한 현금이 한 줄에 하나씩 차례대로 주어진다.

18ドル$번째 줄에는 트레이드 AI가 계산에서 사용하는 현금 가치의 가중치 $A$가 주어진다.

19ドル$번째 줄에는 트레이드 AI가 계산에서 사용하는 담보 대출 페널티 $B$가 주어진다.

출력

루미의 트레이드 AI가 트레이드를 수락한다면 YES, 수락하지 않는다면 NO를 출력한다.

제한

  • 0ドル\leq w_{i,1},\cdots ,w_{i,4}\leq 255$
  • 트레이드 전 자신과 상대가 보유하고 있는 현금, 이번 트레이드에서 제시한 현금은 모두 0ドル$ 이상 10ドル,円 000$ 이하이다.
  • 0ドル \leq A \leq 100$
  • 0ドル \leq B \leq 255$
  • 입력으로 주어지는 수는 모두 정수이다.

예제 입력 1

3 156 156 156
8 17 227 227
17 35 198 198
18 36 171 171
11 23 197 197
17 38 255 255
16 32 192 192
26 193 193 193
12 40 112 180
10 65 65 65
1200000000000000000000000000000000000000
2100000000000000000000000000000000000000
0000000000000000000000000000000000000000
10000
10000
0
0
5
5

예제 출력 1

YES

예제 입력 2

3 156 156 156
8 17 227 227
17 35 198 198
18 36 171 171
11 23 197 197
17 38 255 255
16 32 192 192
26 193 193 193
12 40 112 180
10 65 65 65
0000111000000000000000000000000000000000
0000222000000000000000000000000000000000
0000111000000000000000000000000000000000
1300
1500
0
1500
5
5

예제 출력 2

NO

예제 입력 3

255 255 255 255
10 234 234 234
12 235 235 235
20 40 217 217
21 41 218 218
22 42 219 219
35 70 135 225
36 71 136 226
37 72 137 227
38 73 138 228
1000120011001120122022201112112212222222
2000210020002000200011102000220001001111
1000010001001000100010000010001010011100
10000
10000
2000
4000
10
14

예제 출력 3

YES

힌트

출처

Contest > BOJ User Contest > Happy Birthday Lumi! > Happy Birthday Lumi! 2025 C번

(追記) (追記ここまで)

출처

대학교 대회

  • 사업자 등록 번호: 541-88-00682
  • 대표자명: 최백준
  • 주소: 서울시 서초구 서초대로74길 29 서초파라곤 412호
  • 전화번호: 02-521-0487 (이메일로 연락 주세요)
  • 이메일: contacts@startlink.io
  • 통신판매신고번호: 제 2017-서울서초-2193 호

AltStyle によって変換されたページ (->オリジナル) /