Coder’s High 2014 풀이

34
Coder’s High 2014 해법 설명 프레젠테이션 Coder’s High 2014 해법 설명 프레젠테이션 August 30, 2014

Transcript of Coder’s High 2014 풀이

Page 1: Coder’s High 2014 풀이

Vu  Pham

Coder’s  High  2014

해법설명 프레젠테이션

Coder’s    High    2014    해법 설명 프레젠테이션

August  30,  2014

Page 2: Coder’s High 2014 풀이

Vu  Pham

문제 : https://www.acmicpc.net/problem/10211제출수 :    125정답수 :    56    (44.8%)첫정답자 :  RiKang@고려대 (RiKang,  이승재)

(2m  42s)

출제 :    myungwoo (전명우)  분류 : Greedy  +  Implementation

PA.  MaximumSubarray

Coder’s    High    2014    해법 설명 프레젠테이션

Page 3: Coder’s High 2014 풀이

Vu  Pham

for (int i=1;i<=N;i++){s  +=  X[i];if (m  <  s)  m  =  s;if  (s  <  0)  s  =  0;

}

PA.  MaximumSubarray

Coder’s    High    2014    해법 설명 프레젠테이션

Page 4: Coder’s High 2014 풀이

Vu  Pham

문제 : https://www.acmicpc.net/problem/10212제출수 :    773정답수 :    38    (4.9%)첫정답자 :  0YES  @한양대 (hj_929,  이현지)  

(44m  34s)

출제 :    kriii (김경근)  분류 : Ad-­‐hoc

PB.  Mystery

Coder’s    High    2014    해법 설명 프레젠테이션

Page 5: Coder’s High 2014 풀이

Vu  Pham

여러가지방법이있는데,

1)    srand(&a);  후랜덤쓰기

2)    puts(((int)(&a)>>20)%2?”Yonsei”:”Korea”);

3)    fopen이사용가능하므로적절히쓰기

등등…

PB.  Mystery

Coder’s    High    2014    해법 설명 프레젠테이션

Page 6: Coder’s High 2014 풀이

Vu  Pham

문제 : https://www.acmicpc.net/problem/10213제출수 :    104정답수 :    8    (7.692%)첫정답자 :  cki86201  @서울과고(cki86201,  박상수)  

(20m  24s)

출제 :    kcm1700    (김찬민)  분류 : Convex-­‐Hull

PC.  XhCompany

Coder’s    High    2014    해법 설명 프레젠테이션

Page 7: Coder’s High 2014 풀이

Vu  Pham

(1,A[1])(2,A[1]+A[2])(3,A[1]+A[2]+A[3])…(N,A[1]+A[2]+…+A[N])

여기서두점을이었을때의기울기가밀도가됩니다.

적절히컨벡스헐을이용하여구할수있습니다.

PC.  XhCompany

Coder’s    High    2014    해법 설명 프레젠테이션

Page 8: Coder’s High 2014 풀이

Vu  Pham

문제 : https://www.acmicpc.net/problem/10214제출수 :      112정답수 :      88    (78.6%)첫정답자 :    HisPSPartner @KAIST  (etaehyun4,  이태현)

(1m  4s)

출제 :    xhae (류현종)분류 :    Implementation,  Ad-­‐hoc

A.  Baseball

Coder’s    High    2014    해법 설명 프레젠테이션

Page 9: Coder’s High 2014 풀이

Vu  Pham

Solution  1

for (int i =  0;  i <  9;  i++){cin >>  score[0]  >>  score[1];yonsei +=  score[0];korea +=  score[1];

}

if (yonsei >  korea)  cout <<  "Yonsei\n";else if (korea >  yonsei)  cout <<  "Korea\n";else cout <<  "Draw\n";

A.  Baseball

Coder’s    High    2014    해법 설명 프레젠테이션

Page 10: Coder’s High 2014 풀이

Vu  Pham

Solution  2

while (T-­‐-­‐)  cout <<  "Yonsei\n";

A.  Baseball

Coder’s    High    2014    해법 설명 프레젠테이션

Page 11: Coder’s High 2014 풀이

Vu  Pham

F.  MeatsOnTheGrill

문제 : https://www.acmicpc.net/problem/10219제출수 :    77정답수 :    49    (63.6%)첫정답자 :  hydrogen  @서울대 (csehydrogen,  김희훈)

(19m  57s)

출제 :    kriii (김경근)분류 :    Implementation,  Ad-­‐hoc

Coder’s    High    2014    해법 설명 프레젠테이션

Page 12: Coder’s High 2014 풀이

Vu  Pham

F.  MeatsOnTheGrill

좌우대칭,  상하대칭중하나를골라서고기를뒤집어출력하시면됩니다.

고기먹고싶다…

Coder’s    High    2014    해법 설명 프레젠테이션

Page 13: Coder’s High 2014 풀이

Vu  Pham

C.  CountCircleGroups

문제 : https://www.acmicpc.net/problem/10216제출수 :    358정답수 :      60    (16.8%)첫정답자 :  RiKang@고려대 (RiKang,  이승재)

(7m  47s)

출제 :    xhae (류현종)    분류 :    Geometry +  Graph

Coder’s    High    2014    해법 설명 프레젠테이션

Page 14: Coder’s High 2014 풀이

Vu  Pham

C.  CountCircleGroups

1.  if  dist(i,  j)  <=  r[i]  +  r[j]:  Connected!

2.  Build  graph from  fact  1.

3.  Graph  travel(BFS,  DFS,  …)  to  countthe  number  of  groups

Coder’s    High    2014    해법 설명 프레젠테이션

Page 15: Coder’s High 2014 풀이

Vu  Pham

E.  Maze

문제 : https://www.acmicpc.net/problem/10218제출수 :      92정답수 :      30 (32.6%)첫정답자 :   pps789  @서울대 (pps789,  박상혁)

(51m  50s)

출제 :    kcm1700    (김찬민)분류 :    Perfect  search  +  implementation

Coder’s    High    2014    해법 설명 프레젠테이션

Page 16: Coder’s High 2014 풀이

Vu  Pham

E.  Maze

Solution����������� ������������������  1.가능한모든상태공간을BFS로 탐색|답|����������� ������������������  ≤����������� ������������������  10이므로,����������� ������������������  최대 410 의 크기를탐색한다.

tip.����������� ������������������  상태를 2(10-2)x(10-2)로 encode하고중복검사를하면 훨씬빠르다.

Solution����������� ������������������  2.잘 생각해보면직전행동의 90도방향이동만시도해볼가치가있으므로210 탐색만해도된다.

시간복잡도:����������� ������������������  O(2|답| N2)

Coder’s    High    2014    해법 설명 프레젠테이션

Page 17: Coder’s High 2014 풀이

Vu  Pham

G.SelfRepresentingSeq

문제 : https://www.acmicpc.net/problem/10220제출수 :    44정답수 :    26 (59.1%)첫정답자 :   ainta@서울과고 (ainta,  조승현)

(56m  24s)

출제 :    kriii (김경근)분류 :    Ad-­‐hoc

Coder’s    High    2014    해법 설명 프레젠테이션

Page 18: Coder’s High 2014 풀이

Vu  Pham

G.SelfRepresentingSeq

• 간단한성질 :(모든수가나오는횟수를더하면 N)

• 비슷하게 :(첫 성질과A의정의때문)

• 이를통해작은 N에대해서완전탐색을하면답이보임→증명도어렵지않음

if (N  <=  3  ||  N  ==  6)  A  =  0;else if (N  ==  4)  A  =  2;else A  =  1;

Coder’s    High    2014    해법 설명 프레젠테이션

Page 19: Coder’s High 2014 풀이

Vu  Pham

D.  KCMTravel

문제 : https://www.acmicpc.net/problem/10217제출수 :      216정답수 :      47 (21.8%)첫정답자 :    RiKang @고려대 (RiKang,  이승재)

(75m  32s)

출제 :    xhae (류현종)분류 :    Dynamic  Programming

Coder’s    High    2014    해법 설명 프레젠테이션

Page 20: Coder’s High 2014 풀이

Vu  Pham

D.  KCMTravel

• Dynamic����������� ������������������  Programming혹은Dijkstra

• D[i][j]����������� ������������������  =����������� ������������������  i번 마을까지이동했고,����������� ������������������  이동 비용이 j일때최단시간

• Dijkstra도 비슷함

• 시간복잡도:����������� ������������������  O(M(N+K))

Coder’s    High    2014    해법 설명 프레젠테이션

Page 21: Coder’s High 2014 풀이

Vu  Pham

B.  ColoredBeadWorks

문제 : https://www.acmicpc.net/problem/10215제출수 :     57정답수 :      4 (16.7%)첫정답자 :  Let  Me  Win  @서울대 (corea,  윤형석)

(144m  26s)

출제 :    altertain (이태윤)분류 :    Dynamic  Programming

Coder’s    High    2014    해법 설명 프레젠테이션

Page 22: Coder’s High 2014 풀이

Vu  Pham

B.  ColoredBeadWorks

형태란현재판에서E,G,W를 0,1,2로바꾼후일열로늘어놓아삼진법으로나타낸것을의미한다고하자.

D[i][j]  =  i번째 action까지진행했을때,  형태가 j가될확률

형태는 3^16  =  43046721가지가가능하므로map<int,  double>  D[N];  을이용해야한다.

나머지는“그냥” 구현문제 :)  야!  신난다~

Coder’s    High    2014    해법 설명 프레젠테이션

Page 23: Coder’s High 2014 풀이

Vu  Pham

I.  TonsOfDamage

문제 : https://www.acmicpc.net/problem/10222제출수 :      62정답수 :      4    (6.5%)첫정답자 :   Doju@서울대 (doju,  임동재)

(144m  26s)

출제 :    kriii (김경근)분류 :    Math – Linearity  of  Expectation

Coder’s    High    2014    해법 설명 프레젠테이션

Page 24: Coder’s High 2014 풀이

Vu  Pham

I.  TonsOfDamage=����������� ������������������  공격력관련효과를 i번 받았을때,����������� ������������������  공격력의기대값

=����������� ������������������  주문력관련효과를 i번 받았을때,����������� ������������������  주문력의기대값

=����������� ������������������  궁극기를 i번 사용시공격력관련효과를 j번 받을 확률

점화식은아래와같다.

답은

Coder’s    High    2014    해법 설명 프레젠테이션

Page 25: Coder’s High 2014 풀이

Vu  Pham

J.  Fertilizing

문제 : https://www.acmicpc.net/problem/10223제출수 :      36정답수 :      2 (5.6%)첫정답자 :  Let  Me  Win  @서울대 (corea,  윤형석)  

(244m  01s)

출제 :    kriii (김경근)분류 :    Greedy  +  Segment tree

Coder’s    High    2014    해법 설명 프레젠테이션

Page 26: Coder’s High 2014 풀이

Vu  Pham

J.  Fertilizing

비료를주는과정을따라하다보면알수있는사실 :

첫 번째시점.����������� ������������������  i 번째날이끝난 후

가장큰 콩나무와가장작은콩나무의크기차가 i이하이다.

두 번째시점 i+1번째 날이되었을때

가장작은몇 개의콩나무에게크기가 i+1자라는비료를준다.����������� ������������������  원래가장작았던콩나무가원래는가장컸던콩나무보다도높게자란다!

다시첫 번째 시점.����������� ������������������  i+1����������� ������������������  번째날이 끝난후

가장큰 콩나무와가장작은콩나무의크기차가 i+1이하이다.

Coder’s    High    2014    해법 설명 프레젠테이션

Page 27: Coder’s High 2014 풀이

Vu  Pham

J.  Fertilizing

앞의관찰을바탕으로첫날에모든콩나무를일렬로

놓았다고하면각날마다가장앞에있는C개에게비

료를주고,����������� ������������������  뒤로 보내면크기순서가유지된다는것

을알 수있습니다.

(실제로는직접뒤로보내는것이아니라가장작은

콩나무의위치를기억함)

콩나무의크기는세그먼트트리나BIT등의자료구조

를통해저장하고필요할때꺼내서쓰면됩니다.

Coder’s    High    2014    해법 설명 프레젠테이션

Page 28: Coder’s High 2014 풀이

Vu  Pham

H.  TestDataAnalysis

문제 : https://www.acmicpc.net/problem/10221제출수 :     15정답수 :      2      (13.3%)첫정답자 :  RiKang@고려대 (RiKang,  이승재)

(70m  43s)

출제 :    kriii (김경근)분류 :    Dynamic Programming

Coder’s    High    2014    해법 설명 프레젠테이션

Page 29: Coder’s High 2014 풀이

Vu  Pham

H.  TestDataAnalysis

l Maximum  Subarray문제를푸는법

for (int i=1;i<=N;i++){s  +=  X[i];if (m  <  s)  m  =  s;if  (s  <  0)  s  =  0;

}

이를이용한가장보편적인다이나믹정의

물론네제곱,  잘해도세제곱이라안됩니다.

Coder’s    High    2014    해법 설명 프레젠테이션

Page 30: Coder’s High 2014 풀이

Vu  Pham

H.  TestDataAnalysis

다이나믹인자가답의정보(m)를저장하면힘들다!

특정한 d이하인것들만구하려고하면어떨까??

(d이하인것들의개수)  – (d-­‐1이하인것들의개수)=  (d인것들의개수)

그냥하면세제곱이니제곱으로잘줄입시다.음수인경우는쉬우니생략합니다.

Coder’s    High    2014    해법 설명 프레젠테이션

Page 31: Coder’s High 2014 풀이

Vu  Pham

K.  Watering

문제 : https://www.acmicpc.net/problem/10224제출수 :      32정답수 :      1    (3.1%)첫정답자 :  pichulia@고려대 (pichulia,  홍은기)

(119m  55s)

출제 :    xhae (류현종)분류 :    Geometry

Coder’s    High    2014    해법 설명 프레젠테이션

Page 32: Coder’s High 2014 풀이

Vu  Pham

K.  Watering

Coder’s    High    2014    해법 설명 프레젠테이션

디렉터 째의저자직강이있겠습니다.

Page 33: Coder’s High 2014 풀이

Vu  Pham

Special  Thanks  to…

Coder’s    High    2014    해법 설명 프레젠테이션

출제진 -­‐김경근,  김찬민,  류현종,  이태윤,  전명우

스태프 -­‐고창영,  김선영,  김숭,  김치호,  김태완,  박성규,  서민영,  신혜빈,  이준규,  이태승

그리고 BOJ의최백준님

Page 34: Coder’s High 2014 풀이

Vu  Pham

Coder’s  High  2014

Coder’s    High    2014    해법 설명 프레젠테이션

수고하셨습니다!!!

See  you  on  Coder’s  High  2015