摘要: link 由数据范围易知,本题为区间 DP。 设状态 $f_{i, j}$ 表示 $i$ ~ $j$ 区间完成涂色时所需的最少的涂色次数 则有转移方程:$f_{i, j} = max{f_{i, k} + f_{k + 1, j}}(k \in [i, j))$ 初值:$\forall i \in 阅读全文
posted @ 2023-03-05 11:47 CKB2008 阅读(14) 评论(0) 推荐(0) 编辑
摘要: link 由于题中涉及“区间”操作等字样,容易想到线段树解法。 考虑如何 pushup 和 pushdown。 一种正常的方法 按照题意模拟,设懒标记 tag 表示数组反转时给这个节点带来的影响。这里仅提供关键函数的代码。 void pushdown(int p) { if (tr[p].tag) 阅读全文
posted @ 2023-03-05 11:47 CKB2008 阅读(13) 评论(0) 推荐(0) 编辑
摘要: 莫队算法主要用于可以离线的区间询问回答。 引子 考虑一个这样的问题:假设没有事先求前缀和,你知道了数组第 $5$ 个数到第 $100$ 个数的和,现在询问问你第 $4$ 个数到第 $102$ 个数的和。怎么快速的计算? 显然直接暴力的去把第 $4$ 个数加进去,然后把第 $101$ 个数和 $102 阅读全文
posted @ 2022-11-27 20:27 CKB2008 阅读(17) 评论(0) 推荐(0) 编辑
摘要: 严格来说,珂朵莉树主要的用处是骗分 ——OI Wiki class ODT { struct node { int l, r; mutable ll v; node(const int& il, const int& ir, const ll& iv) : l(il), r(ir), v(iv) { 阅读全文
posted @ 2022-11-26 18:53 CKB2008 阅读(22) 评论(0) 推荐(0) 编辑
摘要: 二分是基础算法之一,常用于答案有单调性的题目,或者穷举会超时的题目 int search(int l, int r) { while (l + 1 < r) { int mid = l + (r - l) >> 1; // 防溢出 if (check(mid)) l = mid; else r = 阅读全文
posted @ 2022-11-14 21:16 CKB2008 阅读(17) 评论(0) 推荐(0) 编辑
摘要: 线段树是一种通用的数据结构,能够处理满足结合律的信息。 前置知识 线段树 基础版 struct node { int l, r; // TODO: information and tag int lazy, val; // int sum; } tr[N * 4]; void modify(int 阅读全文
posted @ 2022-10-15 22:54 CKB2008 阅读(38) 评论(0) 推荐(0) 编辑
摘要: A 寂寞如雪 今天你寂寞吗? 题目内容 题目分析 本题题意即为求最大子段和,由于奇数段和偶数段仅与子段左端点 $l$ 的奇偶性有关,因此我们扫描两边,一遍奇数段,一遍偶数段即可。此外,本题输入处理也有一些难点,细节请看代码。 代码实现 #include <bits/stdc++.h> using n 阅读全文
posted @ 2022-10-04 10:02 CKB2008 阅读(41) 评论(0) 推荐(0) 编辑
摘要: 防止一切因为忘记模数而导致爆 0 的事情发生! template <int mod> struct mint { unsigned int _v; mint() : _v(0) {} template <class T> mint(T v) { ll x = (ll)(v % (ll)(umod() 阅读全文
posted @ 2022-10-04 09:04 CKB2008 阅读(36) 评论(0) 推荐(0) 编辑
摘要: ![img](https://img2022.cnblogs.com/blog/2306173/202210/2306173-20221003231424515-1926919866.png) ![img](https://img2022.cnblogs.com/blog/2306173/202210/2306173-20221003231504030-1988139906.png) ![img] 阅读全文
posted @ 2022-10-04 08:38 CKB2008 阅读(18) 评论(0) 推荐(0) 编辑
摘要: C++ #include <bits/stdc++.h> using namespace std; int main() { cout << "Hello World" << endl; return 0; } Python print("Hello World"); Java public cla 阅读全文
posted @ 2022-10-03 14:59 CKB2008 阅读(16) 评论(0) 推荐(0) 编辑