-
[codeforces] 1070H : BerOS File Suggestion
1070H : BerOS File Suggestion 풀이 주어지는 string의 길이가 엄청 짧다. 모든 substring을 다 잘라서 자료구조에 넣어주자. 그럼 쉽게 구현할 수 있다. 코드 #include <iostream> #include <algorithm> #include <map> #include <set> #include <string> using namespace std; int n, q; string a[10001]; map<string, pair<int, int> > m; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cin >> n; for (int k = 0; k < n; k++) { string str; cin >> str; a[k] = str; set<string> s; for...
-
[codeforces] 1070F : Debate
1070F : Debate 풀이 11을 모두 사용해주자. 01과 10을 모두 짝 지어주고 남은 01 또는 10을 00과 섞어서 값이 가장 큰 놈들을 최대한 사용해주자. 코드 #include <cstdio> #include <algorithm> #include <vector> using namespace std; int n, cnt, tot, sum; vector<int> v[4]; int main() { scanf("%d", &n); for (int i = 0; i < n; i++) { int x, y; scanf("%d %d", &x, &y); if (x == 11) cnt++, tot++, sum += y; if (x ==...
-
[BOJ] 1023 : 괄호 문자열
1023 : 괄호 문자열 풀이 sgc109님 풀이 보고 구현했어요 괄호 문자열의 개수를 구하는 점화식을 구하고 (1)에서 괄호 ㄴㄴ 문자열의 개수를 구하는 점화식을 구하고 (2)를 역추적 하면 풀 수 있어요 코드 #include <cstdio> #include <cstring> typedef long long ll; const ll inf = 0x3f3f3f3f3f3f3f3f; int n; ll k, dp[55][105][2]; ll go(int now, int sum, int isWrong) { if (now == n) { return isWrong || sum!=50; } ll &ret = dp[now][sum][isWrong]; if (ret != inf) {...
-
[BOJ] 2453 : 부서 배치
2453 : 부서 배치 풀이 어떤 두 사람의 친하고 친하지 않고를 나타내는 관계가 있다. 관계는 항상 그래프로 표현할 수 있다. 이 문제에서 주어진 관계들을 그래프로 표현하면, 이 관계들이 여러 개의 Connected Component로 나눠질 수 있다. 부서는 반드시 2개가 존재하니까, 컴포넌트마다 그룹1에 들어가는 사람 수와 그룹2에 들어가는 사람 수를 정할 수 있다. 이를 정하는 과정에서 모순이 발생하면 -1을 출력하고 종료해주면 된다. 여기까지 각 컴포넌트마다 두 그룹에 할당되는 인원 수를 정했다. 이제 한 그룹의 사람들을 부서1에 배치할지,...
-
[codeforces] 1073C : Vasya and Robot
1073C : Vasya and Robot 풀이 널 향한 내 사랑은 여기까진가 봐. 그 사람 곁에서 행복하길 바라. 코드 #include <cstdio> int n, ex, ey, x[200002], y[200002]; char s[200002]; int abs(int x) { return x < 0 ? -x : x; } void f(char c, int &x, int &y) { if (c == 'U') y++; if (c == 'D') y--; if (c == 'L') x--; if (c == 'R') x++; } int main() { scanf("%d %s...
-
[codeforces] 1073D : Berland Fair
1073D : Berland Fair 풀이 안녕 내 사랑, 돌아보지마. 너 떠나도 나 울지 않을게. 부족했던 내가 더 많이 미안해. 이렇게 사랑이 끝나간다. 코드 #include <cstdio> #include <algorithm> using namespace std; typedef long long ll; int n, mn = 2e9, a[200002]; ll t, ans; int main() { scanf("%d %lld", &n, &t); for (int i = 0; i < n; i++) { scanf("%d", &a[i]); if (mn > a[i]) mn = a[i]; } while (mn <= t) {...
-
제2회 천하제일 코딩대회 본선 문제 풀이
대회 정보: https://www.acmicpc.net/contest/view/310 문제 목록: https://www.acmicpc.net/category/detail/1892 ((아주)많이) 늦은 업로드 죄송합니다 ㅎ하하하하;;;; 출제진 여러분들께 감사의 말씀 올립니다. 풀이 슬라이드: https://goo.gl/3bT6xk 아무말 백준, 백준 온라인 저지, BOJ, Baekjoon Online Judge, wookje, 욱제, 풀이, 선린, 선린인터넷고등학교, sunrin, 문제 풀이, 제2회 천하제일 코딩대회, 15916 가희는 그래플러야!!, 15917 노솔브 방지문제야!!, 15918 랭퍼든 수열쟁이야!!, 15919 사자는 여행왕이야!!, 15920 선로에 마네킹이야!!, 15921 수찬은 마린보이야!!, 15922 아우으 으아으이야!!, 15923 욱제는 건축왕이야!!, 15924 욱제는 사과팬이야!!, 15925 욱제는 정치쟁이야!!, 15926 현욱은 괄호왕이야!!, 15927 회문은 회문아니야!!...
-
[BOJ] 3114 : 사과와 바나나
3114 : 사과와 바나나 풀이 A는 prefix 누적합, B는 suffix 누적합을 구해주자. 불도저가 [i][j]로 오는 방법은 [i-1][j-1], [i-1][j], [i][j-1] 이 세 가지가 있다. 모든 i, j를 돌면서, 위의 세 가지 경우에 대해 최댓값을 계산해주자. i=1이거나 j=1인 경우의 예외 케이스에 주의하자. 코드 #include <cstdio> #include <cstdlib> #include <algorithm> using namespace std; int n, m, i, j, a[1502][1502], b[1502][1502], d[1502][1502]; char s[9]; int main() { scanf("%d %d", &n, &m); for (i = 1; i <= n; i++)...
-
[BOJ] 16174 : 점프왕 쩰리 (Large)
16174 : 점프왕 쩰리 (Large) 풀이 잘 짜주면 된다. 코드 #include <cstdio> int n, i, j, x, a[66][66] = {1}; int main() { scanf("%d", &n); for (i = 0; i < n; i++) for (j = 0; j < n; j++) { scanf("%d", &x); if (!a[i][j]) continue; if (i+x < n) a[i+x][j] = 1; if (j+x < n) a[i][j+x] = 1; } puts(a[n-1][n-1] ? "HaruHaru" : "Hing"); return 0; } 아무말 백준, 백준 온라인 저지,...
-
[BOJ] 16173 : 점프왕 쩰리 (Small)
16173 : 점프왕 쩰리 (Small) 풀이 잘 짜주면 된다. 코드 #include <cstdio> int n, i, j, x, a[66][66] = {1}; int main() { scanf("%d", &n); for (i = 0; i < n; i++) for (j = 0; j < n; j++) { scanf("%d", &x); if (!a[i][j]) continue; if (i+x < n) a[i+x][j] = 1; if (j+x < n) a[i][j+x] = 1; } puts(a[n-1][n-1] ? "HaruHaru" : "Hing"); return 0; } 아무말 백준, 백준 온라인 저지,...