목록공부 (38)
pizzaroot
D번: 중요한 #include #define INF 0x7fffffff #define SIZE 100001 using namespace std; int seg[SIZE > 1; i > 0; i >>= 1) seg[i][id] = min(seg[i >= 1) { if (l & 1) ret = min(ret, seg[l++][id]); if (~r & 1) ret = min(ret, seg[r--][id]); } return ret; } int pos(int val, int right) { right += SIZE; while (seg[right][0] > val) right = (right - 1) >> 1; while (right k; int v, w; ci..
\(O(n^2)\) #include #include #include int main() { int n, ans = 0; scanf("%d", &n); int *arr = (int *)malloc(n * sizeof(int)); assert(arr != NULL); for (int i = 0; i < n; i++) scanf("%d", arr + i); for (int i = 0; i < n; i++) { int good = 1; for (int j = 0; j < i; j++) { if (arr[j] == arr[i]) good = 0; } ans += good; } printf("%d\n", ans); return 0; } \(O(n\log n)\) #include #include #include vo..
모두 수고하셨습니다!
경과 타임라인 문제 킬 어시스트 10분 [B] Commemorative Dice pizzaroot 적을 처치했습니다! 32분 [C] Dessert Café WA 38분 WA 연속 킬 차단! 48분 [E] Imprecise Computer pizzaroot 더블 킬! 58분 [C] Dessert Café WA 71분 WA 78분 WA 제압 되었습니다! 98분 [J] Switches WA 108분 [C] Dessert Café wlsth1004100 3juhwan 아군이 적을 처치했습니다! 116분 [J] Switches pizzaroot 트리플 킬! 160분 [G] Mobile Robot WA 174분 pizzaroot 3juhwan / wlsth1004100 쿼드라 킬! 풀이 [B] Commemorati..
E번을 13분에 내가 풀었다. A번을 20분에 내가 아닌 사람이 풀었다. C번을 50분에 내가 아닌 사람이 풀었다. K번을 141분에 내가 아닌 사람이 풀었다. G번을 내가 잡다가 결국 못 풀었다. F번을 내가 아닌 나머지가 잡다가 결국 못 풀었다. 너무 너무 아쉬워서 집가서 ACEF를 봤는데 너무 쉬워서 당황했다. 너무 너무 너무 아쉽다. 본선에 나가게 된다면 팀연습이 더욱 필요할 것 같다.
\(\mathrm{dp[}i\mathrm{][}j\mathrm{]}\)는 구간 \((i, j]\)의 문자열에 대한 답과 그 문자열을 최대 몇개의 동일한 부분 문자열로 분할할 수 있는지를 저장한다. \(\mathrm{dp[}i\mathrm{][}i\mathrm{]=1}\) \(\displaystyle\mathrm{dp[}i\mathrm{][}j\mathrm{]}=\min_{k=i+1}^{j-1}\mathrm{(dp[}i\mathrm{][}k\mathrm{]}+(0\:\mathrm{or}\:\mathrm{dp[}k\mathrm{][}j\mathrm{]))}\) 구간 \((i, k]\)문자열과 \((k, j]\)문자열의 반복된 부분이 같다면 \(\mathrm{0}\) 그렇지 않으면 \(\mathrm{dp[}k..
\(x\)를 먼저 구한 후, 이분탐색을 통해 \(y\)를 구한다. \(\displaystyle\sum_{k=1}^{n}k^5\)은 \(O(1)\)시간에 구할 수 있다. Python으로 풀면 편하다. p, q = map(int, input().split()) def f(n): return n ** 2 * (2 * n ** 4 + 6 * n ** 3 + 5 * n * n - 1) // 12 i = 1 while True: if p
각 \(x\)좌표에 대해서 가능한 \(y\)의 개수를 더해주면 된다. \([-L,-1]\), \(0\), \([1,h]\), \([h + 1,L]\) 4개의 구간 각각 식을 세워서 계산하면 된다. #include #define PRECISION 0.5 using namespace std; typedef long long ll; int main() { ios::sync_with_stdio(0); cin.tie(0); ll w, h, L, ans = 0; cin >> w >> h >> L; for (ll i = 1; i
All the non-blurred pixels are connected in such a way that any horizontal or vertical line drawn between two non-blurred pixels goes only through non-blurred pixels. 4개의 위치 (a, b) (a, d) (c, b) (c, d)가 채워져 있으면 이 4개의 위치에 해당되는 정사각형은 모두 채워져 있다는 사실을 알 수 있다. 이제 정답에 대해 parametric search를 하면 된다. \(O(N\log N)\) #include using namespace std; typedef pair pi; int main() { ios::sync_with_stdio(0); cin.tie..
하라는 대로 하면 된다.