线段4027 hdu

可持久化非确定状态AC自动分块维护线段平衡仙人掌优化最小费用最大流预处理混合图上莫比乌斯反演莫队带花舞蹈链并查集树状数组套主席树预处理动态DP分治FFT求多项式逆元对数函数的指数函数用可持久化并查集合并最小费用循环流上插头DP

P8946 The Lost Symbol 这种类型的 dp 的特点就是大部分转移形如 \(f(i,j)\rightarrow f(i+1,j+1)\) 之类的,并且当以上转移出现时原数组被清空,这就可以用一个 deque 来维护,然后对于全局赋值/全局加,需要对每个位置维护一个时间戳,并记录上一次 ......
函数 费用 多项式 线段 对数

线段树,合并!

线段树,合并! 是啥 合并两颗动态开点线段树。 比方说我要合并两颗维护区间和的线段树,那么我就这样写: int merge(int x,int y,int s,int t){ if(!x||!y)return x|y; if(s==t){ tr[x].val+=tr[y].val; return x ......
线段

hdu1400/acwing 291 Mondriaan's Dream

题意描述: 给定一块n*m的区域,用1*2的长方形填充,长方形可以横着或竖着摆,问一共有多少种填充方案 具体思路: 题意没什么好说的,简单易懂,很经典的一类状态压缩问题(在棋盘中求填充方案)。 观察数据,满足n,m都比较小,但是搜索的复杂度大到无法接受,考虑使用状态压缩求解此类问题 首先,肯定是第一 ......
Mondriaan acwing Dream 1400 hdu

线段树

线段树,一种非常通用的数据结构,多用于区间查询问题,虽然在时间和空间效率上都不如树状数组,但是因为其维护和操作更简单而受oier青睐 为了加深记忆 特此写篇博客 大佬轻喷 线段树,是一颗完全二叉树,由上到下维护,支持询问,更改等多种操作变种包括可持久化线段树及若干,本篇博客只提最简单的普通线段树,支 ......
线段

6426: 区间操作2 线段树/区间加/区间乘/区间查询

描述 给定长度为N(N<=105)的数列A,然后输入M行操作指令。 第一类指令形如“C l r d”,表示把数列中第l~r个数都加d。 第二类指令形如“M l r d”,表示把数列中第l~r个数都乘d。 第三类指令形如“Q l r”,表示询问数列中第l~r个数的和。 对于每个询问,输出一个整数表示答 ......
区间 线段 6426

hdu3681

一道状态压缩好题 题目大意: 就是开局有一个起始点和一些必须经过的点,然后从起始点出发,必须要经过所有的必经点,在此基础上求出最小花费,其中引入一个充电池的概念,即到达这个点后花费会清零,但是每个充电点只能经过一次。输出最小花费,不能到达,输出-1。 题目分析: 乍一看没有什么思路(搜索就算了,我不 ......
3681 hdu

线段树【区间求和】

#include<bits/stdc++.h> #define maxn 500005 using namespace std; int n,m; int a[maxn]; struct node{ int l,r,sum; }; node tr[4*maxn]; void build(int l, ......
线段 区间

6574: 最大数 线段树/单点加/求区间最大值

描述 给定一个正整数数列 a1,a2,a3,⋯,an ,每一个数都在 0~p–1 之间。可以对这列数进行两种操作: 添加操作:向序列后添加一个数,序列长度变成 n+1; 询问操作:询问这个序列中最后 L 个数中最大的数是多少。 程序运行的最开始,整数序列为空。写一个程序,读入操作的序列,并输出询问操 ......
线段 最大值 区间 6574

[HDU4117] GRE

Recently George is preparing for the Graduate Record Examinations (GRE for short). Obviously the most important thing is reciting the words. Now Georg ......
4117 HDU GRE

HDU 4787 GRE Revenge

Now Coach Pang is preparing for the Graduate Record Examinations as George did in 2011. At each day, Coach Pang can: "+\(w\)": learn a word \(w\) "?\( ......
Revenge 4787 HDU GRE

【树套树,LCT,出栈序】P4027 [NOI2007] 货币兑换

其实是我 Li-Chao-Tree 哒!! 考虑转移 \(f_x = \min f_{anc} + (d_{x} - d_{anc})p_x + q_x\) 其中 \(anc\) 为 \(x\) 的祖先,然后满足 \(d_{anc} \geq d_{x} - li_{x})\)。 考虑如果用权值线段 ......
货币 P4027 4027 2007 LCT

线段树的一种简单实现

发现之前没有整理过线段树的代码,填一下坑。 ``` int Array[maxn]; class SegmentTree{ public: SegmentTree* BuildTree(const int L,const int R){ SegmentTree *Node=new SegmentTr ......
线段

线段树

树状数组是个好东西,写起来也相对好看。但是操作比较局限,区间修改就掉回$O(nlogn)$, 那还不如 $O(n)$。线段树完美的解决问题。 线段树,也可以理解的一堆线段组成的树。 ![](https://cdn.luogu.com.cn/upload/image_hosting/q5vd2ura. ......
线段

线段树模板

区间修改/区间查询 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N = 1e5+10,inf = 0x3f3f3f3f; int n,m,a[N],add[N * 4]; ll sum[N ......
线段 模板

[CSP-S 2022] 策略游戏(线段树代码)

# [[CSP-S 2022] 策略游戏]( https://www.luogu.com.cn/problem/P8818) ## 题意: 给定两个序列A,B。每次先从A序列规定区间内取出一个数,再从B序列规定区间内取一个数,答案为两数乘积。A希望答案尽可能大,B希望答案尽可能小。 ## 思路: # ......
线段 策略 代码 CSP-S 2022

线段树进阶

## 普通线段树 核心在于上传标记(pushup)和下传标记(pushdown)以及懒标记的设计。 [**P3373 【模板】线段树 2**](https://www.luogu.com.cn/problem/P3373) 维护一个加法标记和乘法标记。 下传标记时,将乘法标记更新加法标记。 标记下传 ......
线段

HDU 多校 2023 比赛记录

Team 301. 队友是有学上的 csy 和 ryz。 ### Round 1 (2023.7.18) 今天彻头彻尾的战犯。 csy 因为在参加活动,所以一个小时后才能拿到电脑,前一个小时只能口胡。 我开末两位模 3 余 0 的数。 开场开 03,区间 DP 简单题。此时 09 已经好多人过了,不 ......
2023 HDU

Codeforces Round 406 (Div. 2) D. Legacy 线段树优化建图

[传送门](https://codeforces.com/problemset/problem/786/B) 题目大意: **给定n个点,m个操作,和起点s。其中n 和 q 大于等于1小于等于1e5, s大于等于1小于等于n** **其中m个操作有三种情况:** 1.输入1 u v val 表示从u ......
线段 Codeforces Legacy Round 406

Memory题解(线段树优化DP)

[传送门](https://www.luogu.com.cn/problem/P9594) 简要题意: 给定 $m$ 条线段,每条线段由四个正整数参数 $l_i,r_i,c_i,w_i$ 描述,其中 $l_i,r_i$ 是这条线段的端点,$c_i$ 是这条线段的种类,$w_i$ 是这条线段的权值。 ......
线段 题解 Memory

高级算法指北——李超线段树及其应用

## I 走进李超线段树 ### 定义 李超线段树是一种用于维护多条一次函数的线段树。你可以使用它在 $O(\log n)$ 的复杂度内插入一条新的直线,或是查询所有直线 $y=k_ix+b_i$ 中,当 $x=x_0$ 时,$y$ 的最值。 李超线段树上的每个节点都维护当前区间的中点处,$y$ 的 ......
线段 算法

普通线段树

## [P3373 【模板】线段树 2](https://www.luogu.com.cn/problem/P3373) 题目要求支持区间加,区间乘,所以就打两个 $lazy\_tag$ ,然后 $push\_down$ 的时候先乘后加即可。 然后注意乘法的 $lazy\_tag$ 初始值为 $1$ ......
线段

吉司机线段树

## 一、区间历史最值 以区间历史最大值为例。首先,相应地,设 $maxb$ 表示一个节点的区间历史最大值。为了更新一个区间的子区间,再设一个 $tag2$ ,表示 $tag1$ 从上次 $push\_down$ 以后到现在达到过的最大值。 $code:$ ```cpp void push_up(i ......
线段 司机

HDU - 7187-Slipper

# HDU - 7187-Slipper (最短路、建图优化) ## 题意: 给出`n`个结点,`n-1`条无向边,经过每条边的代价为`w`,以结点`1`为根节点的树,对于相差`k`层的结点,可以花费代价`p`抵达,问结点`s`到`t`的最短路径。 ## 分析: 考虑对于每层的每个点建立到相差`k` ......
Slipper 7187 HDU

HDU - 2844 - coins

# HDU - 2844 - coins (多重背包) ## 题意: 大壮想买东西,他有`n`种不同面值的硬币,每种有 $c_i$ 个,他不想找零,也不想买超过价值`m`的东西,问他有多少种支付方式。$n(1 ≤ n ≤ 100),m(m ≤ 100000)$ ## 分析: 可以发现`m`的范围不大 ......
coins 2844 HDU

代码(待加解释) hdu2196

#include<bits/stdc++.h> using namespace std; const int maxn=3e4+10; #define ll long long int head[maxn],ver[maxn],nxt[maxn],edge[maxn]; int tot; ll f[ ......
代码 2196 hdu

李超线段树学习笔记

# 李超线段树学习笔记 ## [P4097 【模板】李超线段树 / [HEOI2013] Segment](https://www.luogu.com.cn/problem/P4097) ### 题意 要求在平面直角坐标系下维护两个操作: 1. 在平面上加入一条线段。记第 $i$ 条被插入的线段的标 ......
线段 笔记

线段树专题

# 线段树专题 注意:此文乃个人对线段树的见解,各位大佬如发现错误请批评指正 > 什么是线段树 线段树顾名思义,就是将一个数列的各个区间当成是树上的节点并维护。 > 线段树用来干什么 一般用来进行区间查改(矩阵查改本蒟蒻不会) > 线段树节点如何编号 假设当前节点的编号为 $k$,左儿子的编号为 $ ......
线段 专题

79 贪心 P1803 线段覆盖

视频链接: Luogu P1803 凌乱的yyy / 线段覆盖 #include <iostream> #include <cstring> #include <algorithm> using namespace std; struct line{ int l,r; //线段的左,右端点 bool ......
线段 P1803 1803 79

线段树

# 建树: ```cpp int a[100005],d[100005]; void build(int s,int e,int p){// 建树 // 对区间[s,t]建立线段树,当前根编号为p if(s==e){ d[p]=a[s]; return ; } int m=s+((e-s)>>1); ......
线段

3198: 区间和 线段树

描述 给定n个数据,有两个操作,加减其中的一个数据,当然还可查询在某段数据的和。 输入 输入数据有多组,每组数据的第一行输入n,1=<n<=500000,代表数据的个数。第二行输入具体数据,数据为正整数,范围在1到10000.第三行输入m,1<=m<=100000,表示操作的次数。包含了修改和查询操 ......
线段 区间 3198