본문 바로가기

전체 글

겹치는 부분 찾기 if (max(a.yy, c.yy) < min(b.yy, d.yy)) y = true; 더보기
12850 본대 산책2 인접행렬 제곱으로 풀 수 있는 문제 총 D분만 움직이고 마지막에 정보대에 도착해야 하니 행렬 제곱의 결과 중 정보대만 확인하면 경우의 수를 알 수 있다. #include #include #include #include #include #include #include #include #include #include #include #include #include #define xx first #define yy second #define all(x) (x).begin(), (x).end() using namespace std; using i64 = long long int; using ii = pair; using ii64 = pair; using matrix = vector; const int MOD =.. 더보기
16938 캠프 준비 비트마스크로 부분집합 구해서 풀었다. N이 15밖에 안 돼서 이렇게 풀 수 있을 것 같았다. #include #include #include #include #include #include #include #include #include #include #include #include #include #define xx first #define yy second #define all(x) (x).begin(), (x).end() using namespace std; using i64 = long long int; using ii = pair; using ii64 = pair; int main() { int n, l, r, x; scanf("%d %d %d %d", &n, &l, &r, &x); vecto.. 더보기
12916 K-Path 인접행렬! 대1 수학시간에 배운 개념이 나와서 신기했다. 그런데 행렬 어떻게 구현할지 몰라서 행렬 구현은 참고해서 풀었다. 경로 경우의 수 문제를 이렇게 풀 수 있구나 재밌다 #include #include #include #include #include #include #include #include #include #include #include #include #include #define xx first #define yy second #define all(x) (x).begin(), (x).end() using namespace std; using i64 = long long int; using ii = pair; using ii64 = pair; using matrix = vector; con.. 더보기
ICPC P) Halfway 문제 설명 1, 2, 3, 4, ...., n 까지 숫자를 나열할 수 있다. 연속한 숫자들끼리 연결할 수 있는데 한번 연결하면 끝이고 다시 연결할 수 없다. 게다가 순서도 1 -> 2 -> 3 -> ... 순서대로 연결함 그래서 예를 들어 n이 5라면 1 - 2, 3, 4 2 - 3, 4 3 -4 이렇게 연결할 수 밖에 없다. 그래서 문제는 이런 연결들의 개수 중 가장 중간에 있는 연결이 어떤 것인지 측정하는 것이다. 5를 예로 들면 연결은 총 3 + 2 + 1해서 6개가 되는데 그 중 중간 값인 3이 1 - 4이므로 1이 답이 된다. 생각할 점 하.... 또 입력 범위가 10^9이다. 이분탐색으로 풀어야 한다. --- 이분탐색! 을 써야 겠다는 이해했는데 범위랑 n이 너무 헷갈렸다.. n이 6이라고 가.. 더보기
ICPC P) Fear Factoring 문제 정리 F(n)은 약수의 합이다. a부터 b까지 모든 F(n)의 합을 구하는 문제 생각해야 할 점 a와 b가 모두 10^12범위이다. O(n)으로 해도 터져버림 첫 번째 시도 #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define xx first #define yy second #define all(x) (x).begin(), (x).end() using namespace std; using i64 = long long int; using ii = pair; using iis = pair; using ii64 = pai.. 더보기
5/22 div1 백업 #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define xx first #define yy second #define all(x) (x).begin(), (x).end() using namespace std; using i64 = long long int; using ii = pair; using iis = pair; using ii64 = pair; using iii = tuple; int main() { int n; scanf("%d", &n); vector v(n); for (int i = 0; i < n; i++) .. 더보기
세그트리 https://docs.google.com/presentation/d/10Hikfx-hyg1b4fOzXJkytsmJtTLlrdoFoL5guUfPtks/edit#slide=id.g62d05dd459_0_0 #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define xx first #define yy second #define all(x) (x).begin(), (x).end() using namespace std; using i64 = long long int; using ii = pair; using iis = pair; us.. 더보기