-
[BOJ] 14969 : Taro`s Shopping
14969 : Taro’s Shopping 풀이 별빛이 내린다 코드 #include <cstdio> int n, m, a[1001]; int main() { while (1) { scanf("%d %d", &n, &m); if (!n && !m) { return 0; } for (int i = 0; i < n; i++) { scanf("%d", a + i); } int res = -1; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (i == j)...
-
[BOJ] 10531 : Golf Bot
10531 : Golf Bot 풀이 골프 봇이 칠 수 있는 거리를 체킹 배열 a와 b에 체크했다고 생각하자. 두 배열을 bool 곱셈한 배열을 c배열이라고 하자. 만약 a[i] != 0 && b[j] != 0라면 c[i+j] != 0도 성립한다. 코드 #define _USE_MATH_DEFINES #include <cstdio> #include <cmath> #include <complex> #include <vector> #include <algorithm> using namespace std; #define sz(v) ((int)(v).size()) #define all(v) (v).begin(),(v).end() typedef complex<double> base; void fft(vector<base> &a, bool invert) { int n = sz(a); for (int i=1,j=0;i<n;i++){ int...
-
[BOJ] 1067 : 이동
1067 : 이동 풀이 . 코드 #define _USE_MATH_DEFINES #include <cstdio> #include <cmath> #include <complex> #include <vector> #include <algorithm> using namespace std; #define sz(v) ((int)(v).size()) #define all(v) (v).begin(),(v).end() typedef complex<double> base; void fft(vector<base> &a, bool invert) { int n = sz(a); for (int i=1,j=0;i<n;i++){ int bit = n >> 1; for (;j>=bit;bit>>=1) j -= bit; j += bit; if (i < j) swap(a[i],a[j]); } for (int len=2;len<=n;len<<=1){ double ang = 2*M_PI/len*(invert?-1:1); base wlen(cos(ang),sin(ang)); for (int i=0;i<n;i+=len){...
-
[BOJ] 1074 : Z
1074 : Z 풀이 약간의 커팅이 필요하다. 코드 #include <cstdio> #include <cstdlib> int n, r, c; void f(int x, int y, int s, int cnt) { if (s == 0 && x == r && y == c) { printf("%d\n", cnt); exit(0); } if (r < x || c < y || x + s*2 <= r || y + s*2 <= c) return; int nx = x + s, ny = y + s,...
-
[BOJ] 10451 : 순열 사이클
10451 : 순열 사이클 풀이 . 코드 #include <iostream> #include <vector> #include <algorithm> #include <cstring> using namespace std; int t, n; vector<int> a[1001]; int ans, chk[1001]; void dfs(int now) { chk[now] = 1; for (int i = 0; i < a[now].size(); i++) if (chk[a[now][i]] != 1) dfs(a[now][i]); } int main() { cin >> t; while (t--) { cin >> n; for (int i = 1; i <= n; i++) { int v; cin >> v;...
-
[BOJ] 14226 : 이모티콘
14226 : 이모티콘 풀이 . 코드 #include <cstdio> #include <cstring> int n, dp[12345][23]; int min(int a, int b) { return a < b ? a : b; } int go(int now, int cnt) { if (now == 0 || cnt > 20) return 1e9; if (now == n) return 0; if (dp[now][cnt] != -1) return dp[now][cnt]; int ret = go(now - 1, cnt + 1) + 1; for (int i = 2; i * now...
-
[BOJ] 1415 : 사탕
1415 : 사탕 풀이 . 코드 #include <cstdio> #include <vector> using namespace std; int n, ccnt[10001]; long long d[500005]; vector<int> cvec; bool p[500005]; void getprimes() { for (int i = 2; i <= 500000; i++) p[i] = 1; for (int i = 2; i*i <= 500000; i++) if (p[i]) for (int j = i*i; j <= 500000; j += i) p[j] = 0; } int main() { getprimes(); scanf("%d", &n); int zcnt = 1; d[0]...
-
[BOJ] 12842 : 튀김 소보루
12842 : 튀김 소보루 풀이 . 코드 #include <cstdio> int n, m, time, idx, a[100001]; int main() { scanf("%d %d", &n, &m); n -= m; scanf("%d", &m); for (int i = 1; i <= m; i++) scanf("%d", a + i); while (n) { for (int i = 1; i <= m; i++) { if (time % a[i] == 0) { n--; idx = i; if (!n) break; } } time++; } printf("%d\n", idx); return 0;...
-
[BOJ] 12841 : 정보대 등산
12841 : 정보대 등산 풀이 누적합! 코드 #include <cstdio> typedef long long ll; int n, i; ll a[100001], b[100001], c[100002]; int main() { scanf("%d", &n); for (i = 1; i <= n; i++) scanf("%lld", c + i); for (i = 2; i <= n; i++) scanf("%lld", a + i), a[i] += a[i-1]; for (i = 2; i <= n; i++) scanf("%lld", b + i), b[i] += b[i-1]; ll pos = 1, sum = 1e18; for...
-
[BOJ] 12840 : 창용이의 시계
12840 : 창용이의 시계 풀이 , 코드 #include <cstdio> int main() { int h, m, s, tc, t, c, mod = 86400; scanf("%d %d %d", &h, &m, &s); s += m * 60 + h * 3600; for (scanf("%d", &tc); tc; tc--) { scanf("%d", &t); if (t == 1) scanf("%d", &c), s = (s + c) % mod; if (t == 2) scanf("%d", &c), s = (s - c) % mod; if (t == 3)...