线段459579152 zhuanlan atcoder

AT_abc106_d [ABC106D] AtCoder Express 2 题解

题目传送门 解题思路 区间 $dp$。 划分阶段:以左右城市之间的列车数量为阶段。 状态表达:设 $f_{i,j}$ 为城市 $i$ 与城市 $j$ 之间的列车数量。 状态转移: 由图可知,城市 $l$ 与城市 $r$ 之间的列车数量,就是城市 $l$ 与城市 $r-1$ 之间的列车数量与城市 $l ......
题解 106 AtCoder Express AT_abc

吉老师线段树学习笔记(内含吉老师ppt)

Segment tree beats 吉老师线段树 Segment tree Beats!.pdf_免费高速下载|百度网盘-分享无限制 (baidu.com) 为广大oier们提供学习ppt(笑) ==历史最大值未完工== 作用 用于维护区间最值和区间历史最值的线段树 区间最值 引入 问题 给定一个 ......
老师 线段 笔记 ppt

线段树合并/分裂

你说的对,但是你理应会动态开点线段树是什么东西。 合并很简单,两棵线段树一块搜,然后逐个节点合并。 分裂的话可以按照 FHQ Treap 的方法。假如我们将前 $k$ 小和后边分开成 $x,y$,首先看左子树,如果比 $k$ 大那右子树给 $y$,递归左子树,反之左子树给 $x$,递归右子树。 真没 ......
线段

AtCoder Regular Contest 119 F AtCoder Express 3

洛谷传送门 AtCoder 传送门 很厉害的题! 考虑所有车站已确定,如何求 $0$ 到 $n+1$ 的最短路。设 $g_{i,0}$ 为只考虑 $0 \sim i$ 的点,到 $i$ 和它左边第一个 $\text{A}$ 的最短路,$g_{i,1}$ 同理。有转移: 若 $s_{i-1} = \t ......
AtCoder Regular Contest Express 119

AtCoder Regular Contest 119 D Grid Repainting 3

洛谷传送门 AtCoder 传送门 对每个红格的行和列连边,建出二分图。对于二分图中的每个连通块分别考虑。 大胆猜测对于每个连通块,我们都能够进行适当的操作,使得只有一行/一列没被操作(显然不能使所有行和列都被操作)。对应的方案就是随便取一棵生成树,把不被染白的那一行/列拎出来当根,然后自底向上,每 ......
Repainting AtCoder Regular Contest Grid

AtCoder Regular Contest 117 F Gateau

洛谷传送门 AtCoder 传送门 **差分约束算法:**给出 $m$ 个不等式形如 $x_{a_i} \le x_{b_i} + y_i$,求是否有解。 考虑把不等式看成图上的三角不等式 $dis_v \le dis_u + d$,连边 $(b_i, a_i, y_i)$,以 $x_i$ 最大的位 ......
AtCoder Regular Contest Gateau 117

AtCoder Regular Contest 112 C Calculator

洛谷传送门 AtCoder 传送门 很神奇但是经典的构造,学习一下。 注意到题目给的操作很像斐波那契。但是难点是如何将 $O(\log n)$ 个斐波那契数相加。 考虑一个操作序列 $4,3,4,3,...$(共 $m$ 个)。发现在第 $i$ 个操作之前给 $x$ 或 $y$ 加 $1$,等价于最 ......
Calculator AtCoder Regular Contest 112

Atcoder Grand Contest 059 E - Grid 3-coloring(转化+思维)

首先先是一步很猛的操作——将三染色视作构造一个矩阵使得相邻元素相差 $1$ 且每个元素 $\bmod 3$ 的值就等于其颜色。证明是显然的,我们按从上到下从左到右的顺序填数,可以归纳证明,对于一个相邻格子颜色互不相同的矩阵的填数方案,处于斜对角的两个格子上写的数要么差 $2$,要么相等,这样待填的这 ......
coloring 思维 Atcoder Contest Grand

AtCoder Regular Contest 122 D XOR Game

洛谷传送门 AtCoder 传送门 从高到低按位考虑。 设当前位有 $k$ 个 $1$。 如果 $k \bmod 2 = 0$,这意味着 Alice 如果选了一个数,Bob 可以选相同的数。发现可以分成 $(0,0),(1,1)$ 两组,递归下去即可。 如果 $k \bmod 2 = 1$,意味着答 ......
AtCoder Regular Contest Game 122

AtCoder Regular Contest 119 E Pancakes

洛谷传送门 AtCoder 传送门 感觉挺典的,~~为啥有 2500 啊(~~ 观察发现,反转序列对 $\sum\limits_{i=1}^{n-1} |a'i - a'{i+1}|$ 影响不大。具体而言,设反转了 $a_l \sim a_r$,记 $s = \sum\limits_{i=1}^{n ......
Pancakes AtCoder Regular Contest 119

线段树

线段树又称区间树, 是一种基于分治思想的二叉树结构, 每个节点代表一段区间 线段树的每个节点代表一个区间 对于每个内部节点 [l,r] , 它的左儿子是 [l,mid] , 右儿子是 [mid+1,r] 用一维数组存整棵树 $$ 对于编号为x的节点 \begin{cases} 父节点: [\dfra ......
线段

AtCoder Regular Contest 117 D Miracle Tree

洛谷传送门 AtCoder 传送门 第一步就没想到 可以考虑化简限制。设所有点按 $E_i$ 从小到大排序后顺序是 $p_1,p_2,...,p_n$。发现只需满足 $E_{p_{i+1}} - E_{p_i} \ge \operatorname{dis}(p_i, p_{i+1})$。证明是对于任 ......
AtCoder Regular Contest Miracle Tree

AtCoder Beginner Contest 231

A - Water Pressure #include<bits/stdc++.h> using namespace std; int main() { int n; cin >> n; printf("%.6lf\n" , n / 100.0 ); return 0; } B - Election ......
Beginner AtCoder Contest 231

区间不同数的个数 二维数点 扫描线 可持久化线段树

二维数点,对于询问的$[l, r]$区间我们只需要统计有多少个数上一次出现的位置$pos$ 满足$pos \leq l$,即可。 template<class T> struct BIT { T c[N]; int size; void resize(int s) { size = s;} T qu ......
扫描线 线段 区间 个数

AtCoder比赛记录(二)

这里记录的是这个账号的比赛情况。 ABC300 2023-4-29 Solved:7/8 0->1200 F(Medium-,1846) 给定由o和x组成的字符串$S$。将$S$复制$m$遍,然后将其中$k$个x改成o,求改完之后连续的o最多可能有多少个。 Solution:贪心。设最多能改完$t$ ......
AtCoder

AtCoder比赛记录(一)

这里记录的是这个账号的比赛情况。 ARC157 2023-2-25 Solved:4/6 2189->2216 C(Medium,1802) 给定一个XY矩阵,一条左上角到右下角的路径的分值定义为路径上连续两个Y的组数。求所有可能路径的分值的平方和。 Solution:经典DP。递推两个量,一个是到 ......
AtCoder

可持久化线段树模板 区间第k小数,区间前k大数之和

第K小数 // AC one more times #include <bits/stdc++.h> using namespace std; #define fi first #define se second #define pb push_back #define endl '\n' #def ......
区间 线段 大数 之和 小数

AtCoder Beginner Contest 300

A - N-choice question (abc300 a) 题目大意 给定一个元素互不相同的数组$c$和 $a,b$,找到 $i$使得 $c_i = a + b$ 解题思路 直接for循环寻找即可。 神奇的代码 ```cpp #include using namespace std; usin ......
Beginner AtCoder Contest 300

AtCoder Regular Contest 116 F Deque Game

洛谷传送门 AtCoder 传送门 很强的博弈 + 性质题。下文令 A 为 Takahashi,B 为 Aoki。 发现单独考虑一个序列 $a_1,a_2,...,a_n$: 若 $n \bmod 2 = 0$: 若 A 为先手,答案为 $\max(a_{\frac{n}{2}}, a_{\frac ......
AtCoder Regular Contest Deque Game

AtCoder Regular Contest 123 E Training

洛谷传送门 AtCoder 传送门 不妨假设 $B_X \le B_Y$。设 $f(x) = A_X + \frac{x}{B_X}, g(x) = A_Y + \frac{x}{B_Y}, F(x) = \left\lfloor{f(x)}\right\rfloor, G(x) = \left\l ......
Training AtCoder Regular Contest 123

权值线段树模板

【模板】普通平衡树 // AC one more times #include <bits/stdc++.h> using namespace std; #define fi first #define se second #define pb push_back #define endl '\n' ......
线段 模板

【AtCoder】Forbidden Pattern

题目链接 分析 首先考虑哪些串能被删空。下面只考虑长度为偶数的串。考虑这样一个(错误的)算法:从左往右依次加入串中的字符,然后能删则删。这个算法对于结尾为 A 的串一定能删空。对称地,开头为 B 的串也一定能被删空。 现在只需要考虑开头为 A 结尾为 B 的串。如果它能被删空,则一定存在最早的一个时 ......
Forbidden AtCoder Pattern

AtCoder Regular Contest 126 E Infinite Operations

洛谷传送门 AtCoder 传送门 算是对这篇博客的补充吧。 设 $a_1 \le a_2 \le \cdots \le a_n$。 发现最优操作中一定是对相邻的数进行操作,因为如果 $a_j$ 想把 $x$ 给 $a_i$($i < j$),最优是依次操作 $(j-1,j,x),(j-2,j-1, ......
Operations Infinite AtCoder Regular Contest

线段树

1.基础算法 1.1快读快写 template <typename T> inline void read(T& t) {​ int f = 0, c = getchar(); t = 0; ​ while (!isdigit(c)) f |= c == '-', c = getchar();​ w ......
线段

线段树的动态开点模板

学习自 数据结构学习笔记(5)动态开点线段树 动态开点线段树 感谢大佬们博客的帮助 // AC one more times #include <bits/stdc++.h> using namespace std; #define fi first #define se second #defin ......
线段 模板 动态

AtCoder Regular Contest 112 F Die Siedler

洛谷传送门 AtCoder 传送门 感觉太人类智慧了。 设 $A = (c_1,c_2,...,c_n)$ 表示当前每种牌的数量,$f(A)$ 为状态 $A$ 只进行换牌操作最终最少剩下几张牌。 $f(A)$ 是可以贪心求出的,因为策略必然是能换则换。 并且我们发现依次换 $2,3,...,n,1$ ......
AtCoder Regular Contest Siedler 112

CF960F Pathwalks | 线段树优化DP

题目 设$dp[x,w]$为以结点$x$为结尾,且最后一条边边权为$w$的最长路径长度。 考虑根据顺序加边,对于边$(u,v)$,更新 $$ dp[v,w] = \max_{w' < w}{dp[u,w']} + 1 $$ 对于每个节点,建一棵线段树,维护$dp[x]$,这样每次更新$dp[v,w] ......
线段 Pathwalks 960F 960 CF

AtCoder Regular Contest 123 C 1, 2, 3 - Decomposition

洛谷传送门 AtCoder 传送门 从低位往高位考虑。设当前个位为 $k$,暴力搜索这一位向上进 $i$ 位,设 $\left\lfloor\frac{n}{10}\right\rfloor - i$ 的答案为 $t$。 若 $t > 10i + k$ 显然就不可行,因为就算个位全部填 $1$ 也不 ......
Decomposition AtCoder Regular Contest 123

AtCoder Regular Contest 120 F Wine Thief

洛谷传送门 AtCoder 传送门 Hint 如果是一个环怎么做? Answer 由于是一个环,因此环上每个点对最终答案造成的贡献都相同。设 $f_{i,j}$ 为长度为 $i$ 的序列选 $j$ 个不相邻的点的方案数,则 $f_{i,j} = \binom{i-j+1}{j}$。应该很好理解,考虑 ......
AtCoder Regular Contest Thief Wine

线段树

1 #include<iostream> 2 #include<string> 3 #define ll long long 4 const int N = 1e5 + 5; 5 6 using namespace std; 7 8 ll tree[N<<2]; // 线段树,可以是对应的结构体 9 ......
线段