摘要:
link 由于题中涉及“区间”操作等字样,容易想到线段树解法。 考虑如何 pushup 和 pushdown。 一种正常的方法 按照题意模拟,设懒标记 tag 表示数组反转时给这个节点带来的影响。这里仅提供关键函数的代码。 void pushdown(int p) { if (tr[p].tag) 阅读全文
摘要:
莫队算法主要用于可以离线的区间询问回答。 引子 考虑一个这样的问题:假设没有事先求前缀和,你知道了数组第 个数到第 个数的和,现在询问问你第 个数到第 个数的和。怎么快速的计算? 显然直接暴力的去把第 个数加进去,然后把第 个数和 $102 阅读全文
摘要:
严格来说,珂朵莉树主要的用处是骗分 ——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) { 阅读全文
摘要:
二分是基础算法之一,常用于答案有单调性的题目,或者穷举会超时的题目 int search(int l, int r) { while (l + 1 < r) { int mid = l + (r - l) >> 1; // 防溢出 if (check(mid)) l = mid; else r = 阅读全文
摘要:
线段树是一种通用的数据结构,能够处理满足结合律的信息。 前置知识 线段树 基础版 struct node { int l, r; // TODO: information and tag int lazy, val; // int sum; } tr[N * 4]; void modify(int 阅读全文
摘要:
A 寂寞如雪 今天你寂寞吗? 题目内容 题目分析 本题题意即为求最大子段和,由于奇数段和偶数段仅与子段左端点 的奇偶性有关,因此我们扫描两边,一遍奇数段,一遍偶数段即可。此外,本题输入处理也有一些难点,细节请看代码。 代码实现 #include <bits/stdc++.h> using n 阅读全文
摘要:
防止一切因为忘记模数而导致爆 0 的事情发生! template <int mod> struct mint { unsigned int _v; mint() : _v(0) {} template <class T> mint(T v) { ll x = (ll)(v % (ll)(umod() 阅读全文
摘要:
  ![img] 阅读全文
摘要:
C++ #include <bits/stdc++.h> using namespace std; int main() { cout << "Hello World" << endl; return 0; } Python print("Hello World"); Java public cla 阅读全文