Skip to content

Instantly share code, notes, and snippets.

View sgc109's full-sized avatar
🏠

Wood Hwang sgc109

🏠
View GitHub Profile
@sgc109
sgc109 / srm504mid(2).cpp
Created March 6, 2017 05:26
SRM 504 Level2 - AlgridTwo(2)
/*
μš°μ„  λͺ‡κ°€μ§€ λ°œκ²¬ν•΄μ•Ό ν•˜λŠ” κ·œμΉ™λ“€μ€ μ•žμ˜ 풀이와 κ°™κ³  쑰건듀에 λŒ€ν•΄ λͺ¨λ“  νŒ¨ν„΄μ„ λ”°μ Έμ£Όμ§€ μ•Šμ•„λ„ λ˜λŠ” κ΅¬ν˜„λ„ κ°„λ‹¨ν•˜κ³  κΉ”λ”ν•œ 풀이가 μžˆλ‹€.
λ°˜λŒ€λ‘œ λ’€μ—μ„œ λΆ€ν„° λ³΄λŠ” 것이닀. 전에 뭐가 μžˆμ—ˆμ„μ§€ λͺ¨λ₯΄λŠ”κ±΄ ? λΌλŠ” λ³„κ°œμ˜ 문자λ₯Ό ν•˜λ‚˜ μ •ν•΄μ„œ ν‘œμ‹œλ₯Ό ν•΄μ£Όκ³  BB 일경우
μ•„λž˜ λ‘κ°œλ₯Ό μ‹€μ œλ‘œ swap을 ν•΄μ£Όλ©° WB λ‚˜ BW μΌκ²½μš°λŠ” λ‘˜λ‹€ μ•„λž˜ λ‘κ°œλ₯Ό ??둜 λ°”κΏ”μ£Όλ©΄ λœλ‹€. WW일땐 κ°€λ§Œνžˆ λ‘λ©΄λœλ‹€.
그리고 λ§ˆμ§€λ§‰μ— ?의 개수만큼 2λ₯Ό κ³±ν•΄μ£Όλ©΄ λœλ‹€. λ¬Όλ‘  쀑간에 λΆˆκ°€λŠ₯ν•œ 경우λ₯Ό λ”°μ Έμ€˜μ•Όν•˜λŠ”λ° 이건 WBμΌλ•Œμ™€ BWμΌλ•Œ μ•„λž˜μ— 각각 Bλ‚˜ Wκ°€
ν•˜λ‚˜λΌλ„ 있으면 λΆˆκ°€λŠ₯ν•œ 경우이고 각각 W와 BλŠ” μžˆμ–΄λ„λ˜κ³  ?λŠ” λ‘˜λ‹€ μ–Έμ œλ“ μ§€ μžˆμ–΄λ„ λœλ‹€.
*/
#include <bits/stdc++.h>
#define REP(i,a,b) for(int i=a;i<=b;++i)
@sgc109
sgc109 / srm504mid.cpp
Created March 6, 2017 04:42
SRM 504 Level2 - AlgridTwo
/*
https://community.topcoder.com/stat?c=problem_statement&pm=11355
일단 λͺ‡κ°€μ§€λ₯Ό μΊμΉ˜ν•΄μ•Όν•œλ‹€.
μš°μ„  λ§¨μœ—μ€„μ€ λ³€ν•˜μ§€ μ•ŠλŠ”λ‹€.
그리고 νŠΉμ • 쀄은 무쑰건 λ°”λ‘œ μœ—μ€„μ— μ˜ν•΄ 영ν–₯을 λ°›λŠ”λ‹€. μ™œλƒν•˜λ©΄ λ¬Έμ œμ—μ„œ μ£Όμ–΄μ§„ μ½”λ“œλ₯Ό 보면 색을 λ°”κΏ”μ£ΌλŠ” μˆœμ„œλ₯Ό μ•Œμˆ˜μžˆλŠ”λ°
νŠΉμ • 쀄을 λ³Όλ•ŒλŠ” 이미 μœ—μ€„μ΄ 바뀐 μƒνƒœμ΄κΈ° λ•Œλ¬Έμ— μž…λ ₯으둜 μ£Όμ–΄μ§€λŠ” outputμƒμ—μ„œμ˜ λ°”λ‘œμœ—μ€„κ³Ό κ°™μ€μƒνƒœμ—μ„œ 영ν–₯을 λ°›λŠ”κ²ƒμ΄λ‹€.
κ·Έλ¦¬κ³ λ‚˜μ„œ 두가지λ₯Ό 잘 λ”°μ Έμ€˜μ•Όν•œλ‹€.
μ²«λ²ˆμ§ΈλŠ” W와 B λ‘˜λ‹€ κ°€λŠ₯ν•œ 곳이 μƒκΈ°λŠ” 쑰건듀
λ‘λ²ˆμ§ΈλŠ” νŠΉμ • μœ„μΉ˜κ°€ 무쑰건 Wλ‚˜ B쀑 ν•œκ°€μ§€ μ—¬μ•Όν•˜λŠ” 쑰건듀
@sgc109
sgc109 / srm507easy.cpp
Created March 6, 2017 02:13
SRM 507 Level1 - CubeStickers
/*
https://community.topcoder.com/stat?c=problem_statement&pm=11315
λ‹¨μˆœν•œ 그리디+κ΅¬ν˜„+자료ꡬ쑰 λ¬Έμ œμ΄λ‹€.
map 에 색을 key κ°’μœΌλ‘œ 개수λ₯Ό μ„Έμ–΄μ€€λ’€ λ‘κ°œμ΄μƒμ΄ μžˆλŠ” μƒ‰μ΄μžˆμœΌλ©΄ 무쑰건
λ§ˆμ£Όλ³΄λŠ” 두 면에 μ“°κ³  λ²„λ¦¬λŠ”κ²Œ 이득이닀.
그리고 μ„œλ‘œ λ‹€λ₯Έ 색듀은 μ•„λ¬΄λ ‡κ²Œλ‚˜ 뢙여도 λœλ‹€.
*/
#include <bits/stdc++.h>
@sgc109
sgc109 / srm500easy.cpp
Created March 5, 2017 05:59
SRM 500 Div1 Level1 - MafiaGame
/*
https://community.topcoder.com/stat?c=problem_statement&pm=11342
μ²˜μŒμ— 이 λ¬Έμ œκ°€ 해석이 λ„ˆλ¬΄μ•ˆλΌμ„œ λ°©μΉ˜ν•΄ 놓닀가 κ²°κ΅­ λ‚ μž‘κ³  슀슀둜 ν’€μ—ˆλ‹€.
ν™•λ₯ μ— λŒ€ν•œ 이해와 μˆ¨κ²¨μ§„ κ·œμΉ™μ˜ 발견이 μš”κ΅¬λ˜λŠ” 문제라고 μƒκ°ν•œλ‹€.
μš°μ„  κ°€μž₯ μ€‘μš”ν•œ κ·œμΉ™μ„ λ°œκ²¬ν•΄μ•Όν•˜λŠ”λ°
맨 μ²˜μŒμ— definite decisions λ₯Ό λ°”νƒ•μœΌλ‘œ λ‹€λ₯Έμ‚¬λžŒμ—κ²Œ μ„ νƒλœ 수λ₯Ό 각각의 μ‚¬λžŒλ§ˆλ‹€ 세어보면
ν•œ λͺ…μ—κ²Œλ„ μ„ νƒλ˜μ§€ μ•Šμ€ μ‚¬λžŒμ€ 0, ν•œ λͺ…μ—κ²Œ μ„ νƒλœ μ‚¬λžŒμ€ 1, ... μ΄λŸ°μ‹μœΌλ‘œ κ°€κ²Œλ˜λŠ”λ°
μ„ νƒλœ νšŸμˆ˜κ°€ λͺ¨λ‘ 0 λ˜λŠ” 1이라면 λ‹€μŒλ²ˆ round 에도 λͺ¨λ‘κ°€ vulerable ν•΄μ§„λ‹€. μ™œλƒν•˜λ©΄
definite decisions 에 포함 λ˜μ§€μ•Šμ€ λ‚˜λ¨Έμ§€ μ‚¬λžŒλ“€μ— λŒ€ν•΄μ„œλŠ” ν˜„μž¬ κ°€μž₯ 적게 λ½‘νžŒ μ‚¬λžŒλ“€μ„ λžœλ€ν•˜κ²Œ λ½‘κ²Œλ˜λŠ”λ°
@sgc109
sgc109 / srm503medium.cpp
Last active March 5, 2017 06:19
Member SRM 503 Div1 Level2 - KingdomXCitiesandVillages
/*
https://community.topcoder.com/stat?c=problem_statement&pm=11063
μš°μ„  Linearity of expectation 을 μ•Œμ•„μ•Ό ν•œλ‹€.
κ·Έλ‹ˆκΉŒ κ±΄μ„€ν•œ λ„λ‘œλ“€μ˜ 길이의 총 ν•©μ˜ κΈ°λŒ€κ°’μ€
각각의 λ„λ‘œμ˜ 길이의 κΈ°λŒ€κ°’λ“€μ˜ 총 ν•©κ³Ό κ°™λ‹€λΌλŠ” 것이닀.
Editorial 에 μžˆλŠ” 식을 μΈμš©ν•˜μžλ©΄
Expected Length of all roads build after picking all villages =
Expected Length (Sum of lengths of the roads built when village i is picked, for all i) =
@sgc109
sgc109 / srm506medium.cpp
Created March 4, 2017 09:45
SRM 506 Div1 Level2 - SlimeXGrandSlimeAuto
/*
https://community.topcoder.com/stat?c=problem_statement&pm=11334
μ²˜μŒμ—” μƒνƒœλ“€μ„ 잘 μ •μ˜ν•œλ’€ κ·Έλž˜ν”„λ₯Ό ν˜•μ„±ν•΄μ„œ λ‹€μ΅μŠ€νŠΈλΌλ₯Ό λŒλ¦¬λŠ” μ‹μœΌλ‘œ ν’€ μˆ˜κ°€ μžˆμ„ 거라고 μƒκ°ν–ˆλŠ”λ°
μ‰½μ§€μ•Šμ•˜λ‹€. μ•„λ§ˆ μ§€κΈˆκΉŒμ§€ κ·Έλ ‡κ²Œ ν’€μ—ˆλ˜ λ¬Έμ œλ“€μ€ λ¬Έμ œμ—μ„œ μ£Όμ–΄μ§„ κ²½λ‘œλŒ€λ‘œ μ΄λ™ν•˜λŠ” 것이 μ•„λ‹ˆλΌ
μΆœλ°œμ§€μ™€ λ„μ°©μ§€λ§Œ μ£Όμ–΄μ§€κ³  μΆœλ°œμ§€μ—μ„œ λ„μ°©μ§€λ‘œ μ΄λ™ν•˜λŠ” κ°€μž₯ 적은 λΉ„μš©μ„ λ¬»λŠ” λ¬Έμ œμ˜€λ˜κ²ƒκ°™κ³ 
이 λ¬Έμ œλŠ” κ²½λ‘œκ°€ μ£Όμ–΄μ§€κ³  λ°˜λ“œμ‹œ κ·Έ κ²½λ‘œλŒ€λ‘œ 이동해야 ν•˜λ©΄μ„œ ν•œμ •λœ μžμ›μ΄ μ‘΄μž¬ν•  λ•Œμ— μ΅œμ†Œ λΉ„μš©μ„ κ΅¬ν•˜λŠ” λ¬Έμ œμ΄λ‹€.
κ·Έλž˜μ„œ 이 λ¬Έμ œλŠ” network flow graph 둜 ν’€ μˆ˜κ°€ 있고 μ΅œμ†Œ λΉ„μš©μ„ μ°Ύμ•„μ•Ό ν•˜κΈ° λ•Œλ¬Έμ— mcmf 둜 ν’€ μˆ˜κ°€ μžˆλ‹€.
μš°μ„  ν•œκ°€μ§€ 사싀을 깨달아야 ν•œλ‹€. κ²½λ‘œκ°€ μ£Όμ–΄μ‘ŒμœΌλ‹ˆ k번째 λ„μ‹œκ°€ μΆœλ°œμ§€μΌλ•Œ k+1번째 λ„μ‹œλŠ” 도착지라고 λ³Ό μˆ˜κ°€μžˆλ‹€.
κ·Έλ ‡λ‹€λ©΄ 맨처음 0λ²ˆλ„μ‹œμ— μžˆλ‹€λŠ” 것을 κ³ λ €ν–ˆμ„λ•Œ μž…λ ₯으둜 μ£Όμ–΄μ§„ λ„μ‹œλ“€μ˜ λ°°μ—΄μ˜ 크기가 M 이라면
@sgc109
sgc109 / srm504easy.cpp
Last active March 4, 2017 07:56
SRM 504 Div1 Level1 - MathContest
/*
https://community.topcoder.com/stat?c=problem_statement&pm=11233
κ·Έλƒ₯ μž¬κ·€ν•¨μˆ˜λ‘œ κ΅¬ν˜„ν•˜λ©΄λœλ‹€
μΈμžλ‘œλŠ” μƒν•˜λ°˜μ „μ—¬λΆ€μ™€ μƒ‰λ°˜μ „μ—¬λΆ€ 그리고 λ‚¨μ•„μžˆλŠ” μ™Όμͺ½λκ³Ό 였λ₯Έμͺ½λλ§Œ κ°€μ§€κ³ μžˆμœΌλ©΄λœλ‹€
μ™œλƒν•˜λ©΄ 곡을 빼도 μ–‘ 끝으둜만 λΉ μ Έλ‚˜κ°€κΈ° λ•Œλ¬Έμ— κ°€μš΄λ°λŠ” κ·ΈλŒ€λ‘œ λ‚¨μ•„μžˆκ²Œ λ˜κΈ°λ–„λ¬Έμ— 쒌 ν˜Ήμ€ 우둜 ν•œμΉΈμ”©λ§Œ λ³€ν•˜κ²Œ λ˜κΈ°λ•Œλ¬Έμ΄λ‹€.
μ‹œκ°„ λ³΅μž‘λ„λŠ” O(N) 즉 10λ§Œλ²ˆμ •λ„ λˆλ‹€.
*/
#include <bits/stdc++.h>
@sgc109
sgc109 / srm503easy.cpp
Last active March 4, 2017 07:56
SRM 503 Div1 Level 1 - ToastXToast
/*
https://community.topcoder.com/stat?c=problem_statement&pm=11204
탄것과 λœμ΅μ€κ²ƒμ„ ν•˜λ‚˜μ˜ 벑터에 λ‹΄μ•„μ„œ Xκ°’μœΌλ‘œ μ •λ ¬ν–ˆμ„λ•Œ
맨왼μͺ½μ΄ νƒ„κ²ƒμ΄κ±°λ‚˜ 맨였λ₯Έμͺ½μ΄ λœμ΅μ€κ²ƒμ΄λ©΄ 무쑰건 λΆˆκ°€λŠ₯ν•˜κ³ 
λ§Œμ•½ μ•„λ‹ˆλΌλ©΄, ν•œκ°€μ§€ 사싀을 νŒŒμ•…ν•΄μ•Όν•œλ‹€. μ–‘λμ˜ λ‘κ°œλ₯Ό μ œμ™Έν–ˆμ„λ•Œ
λͺ¨λ“  탄 빡은 맨왼μͺ½μ—μžˆλ˜ λœμ΅μ€ λΉ΅κ³Ό λ§€μΉ˜μ‹œν‚¬μˆ˜μžˆκ³ 
λͺ¨λ“  λœμ΅μ€ 빡은 맨 였λ₯Έμͺ½μ— 있던 탄 λΉ΅κ³Ό 맀치 μ‹œν‚¬μˆ˜κ°€μžˆμœΌλ―€λ‘œ 닡은 2보닀 μ»€μ§ˆμˆ˜κ°€μ—†λ‹€. 그런데 λ”± ν•œ κ²½μš°μ— 닡이 1이 λœλ‹€.
λ°”λ‘œ λͺ¨λ“  λœμ΅μ€λΉ΅μ΄ λͺ¨λ“  탄빡보닀 μ™Όμͺ½μ— μžˆμ„ λ•Œ 이닀.