线段树
Nicoleeeee
这个作者很懒,什么都没留下…
展开
-
Codeforces Round #620 (Div. 2)
E. 1-Trees and Queries题意:给你一棵树,然后m个询问,每次询问都加一条边x-y并问a-b的距离能不能为k(询问独立)题解:加一条边相当于多一个环,发现一条边可以走过去又可以走回来,所以只要找出所有可能之后看%2是不是等于0:a - ba - x + loop + x - ba - y + loop + y - ba - x + loop +y - ba - ...原创 2020-02-16 20:46:52 · 258 阅读 · 1 评论 -
Codeforces 1295E.Permutation Separation 线段树
题意给你一个排列,然后先分成非空的两段(一段是前缀,一段是后缀),然后每挪一个元素到另一端都有一个花费,问最少花费使得前面一段严格小于后面一段题解这种题读完题目就应该知道是数据结构,分成两段可以考虑枚举前面一段的最大的数然后就是要考虑在哪里切,线段树维护分割线一开始所有数都对该数以后的分割线都有花费(包含就要被挪出去)后来包含的就不用被挪出去,不包含的还要有花费(分割线不包含的花费增加...原创 2020-01-30 23:58:06 · 331 阅读 · 0 评论 -
2019牛客暑期多校训练营(第八场)
A-All-one Matrices类似极大化思想那样写每一次只要在最低端就开始统计,同意行的也要去重最低端统计的条件是下面那个行的区间更窄或者不包含#include <bits/stdc++.h>#define pb push_backusing namespace std;typedef long long ll;const ll N = 3333;inline ...原创 2019-08-11 16:25:52 · 149 阅读 · 0 评论 -
Codeforces Round #576 (Div. 2)
A扫一遍就好了n*14#include <bits/stdc++.h> using namespace std;typedef long long ll;const int N = 1000010;inline int read(){ int p=0,f=1; char ch=getchar(); while(ch<'0' || ch>'9'){if...原创 2019-07-31 20:00:21 · 116 阅读 · 0 评论 -
2019 Multi-University Training Contest 4
AND Minimum Spanning Tree每次肯定是找最后一个0连的,如果没有就找最小的1连#include <bits/stdc++.h>#define rep(i,a,b) for(ll i=(a);i<=(b);i++)#define pb push_backusing namespace std;typedef long long ll;const ...原创 2019-08-01 11:52:30 · 267 阅读 · 0 评论 -
2019牛客暑期多校训练营(第四场) B-xor 线段树+线性基求交
题意分析就是一个裸的线段树+线性基求交你问我线性基怎么求交。。。。随便YY了一个大概的思想就是用B去插 A,如果当前的B消去A后在之前插入的B的张成相同,那么肯定消去的那一部分A的异或和就是一个交因为线性基每一位只有一个的性质,这样搞完之后肯定线性基还是满足这样的性质就模板题吧代码#include <bits/stdc++.h>#define ll long lon...原创 2019-08-02 19:48:54 · 275 阅读 · 0 评论 -
2019 Multi-University Training Contest 3
Distribution of books这道题模型不熟练所以做不出来首先二分答案,然后就是要分成k段,使得每一段的和小于等于x定义dp[i]dp[i]dp[i]表示前i个最多能分多块满足dp[i]=dp[j]+1(sum[i]−sum[j]≤x)dp[i] = dp[j] + 1 (sum[i]-sum[j] \leq x)dp[i]=dp[j]+1(sum[i]−sum[j]≤x)然...原创 2019-07-30 14:10:41 · 158 阅读 · 0 评论 -
bzoj 5368: [Pkusc2018]真实排名 线段树+组合数
题意小C是某知名比赛的组织者,该比赛一共有n名选手参加,每个选手的成绩是一个非负整数,定义一个选手的排名是 :成绩不小于他的选手的数量(包括他自己)。例如如果333位选手的成绩分别是[1,2,2],那么他们的排名分别是 [3,2,2]。拥有上帝视角的你知道所有选手的实力,所以在考试前就精准地估计了每个人的成绩,设你估计的第iii 个选手的成绩为Ai,且由于你是上帝视角,所以如果不发生任何...原创 2018-06-06 16:18:51 · 419 阅读 · 0 评论 -
bzoj 5334: [Tjoi2018]数学计算 线段树
题意小豆现在有一个数x,初始值为1. 小豆有Q次操作,操作有两种类型: 1 m: x = x * m ,输出 x%mod; 2 pos: x = x / 第pos次操作所乘的数(保证第pos次操作一定为类型1,对于每一个类型1 的操作至多会被除一次),输出x%mod一共有t组输入(t ≤ 5) 对于每一组输入,第一行是两个数字Q, mod(Q ≤ 100000, mod ≤...原创 2018-05-20 12:02:33 · 364 阅读 · 2 评论 -
Codeforces 666E. Forensic Examination 广义后缀自动机+线段树合并+倍增
题意给你一个母串和很多询问串,问母串的一段区间在一段连续询问串中出现最多的次数和询问串的位置分析快退役选手些不动这种东西啊。。 就对所有串建广义后缀自动机,然后建一棵线段树,位置为下标,然后按照father树合并上去,倍增找到相应位置就行了代码#include <bits/stdc++.h>using namespace std;const int N = 1...原创 2018-04-28 09:33:36 · 409 阅读 · 0 评论 -
UOJ #112. 【APIO2015】Palembang Bridges 线段树
题意有两排建筑,中间有一条河,给你每个人的起点和终点,现在你需要建k条桥,使得所有人起点到终点的距离最小,k=1或者2,n=100000分析先把同在一边的起点和终点给去掉 首先k=1的时候,很容易想到每个人都要过桥,然后每个人的距离就是 |s−p|+|t−p||s−p|+|t−p||s-p| + |t-p| p是桥的位置,s和t是起点和终点的位置,那么就是上式的贡献再很容易发...原创 2018-05-09 09:09:32 · 240 阅读 · 0 评论 -
bzoj 5286: [Hnoi2018]转盘 线段树
题意给你个序列和Ti,要求你选一个起点,然后要不走到下一格要不停,求选完的最少需要时间 3≤n≤105,0≤m≤105,0≤Ti/Tx≤1053≤n≤105,0≤m≤105,0≤Ti/Tx≤1053\leq n \leq 10^5 , 0 \leq m \leq 10^5 , 0 \leq T_i / T_x \leq 10^5分析首先肯定是直走不停的 枚举从哪个点开始走,答案就...原创 2018-04-19 21:29:03 · 188 阅读 · 0 评论 -
Codeforces Educational Codeforces Round 42 (Rated for Div. 2) D,E,F
D题意每次把最小的两个给合起来,然后把右边的一个变成这个数的两倍,问最后的序列分析我的做法有点蠢,直接暴力合并,开一个权值线段树,叶子结点开个set存位置,然后维护同种元素最多出现多少个,一边找一边并就好 最后把所有的叶子结点给扫一遍,map一下代码#include <bits/stdc++.h>#define ll long longusing name...原创 2018-04-11 21:08:27 · 133 阅读 · 2 评论 -
Codeforces 903G. Yet Another Maxflow Problem 最小割+线段树
题意给定一个2n个节点的图,其中n个点在A集,n个点在B集。且称A集第i个点为ai(B集类似)。每个ai(i < n)向ai+1连一条给定容量的边(B也一样),还有m条边从ax连到by,容量给定。 有q次操作,每次修改一条ax连向ax+1的边的容量(x和容量给定)。你需要对每次操作以及操作前输出以a1为源点,bn为汇点的最大流。n,m,q≤200000分析首先第一个最大...原创 2018-04-04 12:09:19 · 194 阅读 · 0 评论 -
bzoj 5245: [Fjwc2018]欧拉函数 线段树+bitset
题意对于正整数 n,定义欧拉函数 φ(n) 为小于等于 n 且与 n 互质的正整数个数。例如 φ(1) = 1, φ(8) = 4。 给定正整数序列 a1, a2, · · · , an,请依次执行 q 个操作,操作有以下三种类型: 0 i x:修改 ai 的值为 x; 1 l r:查询 φ(al + al+1 + · · · + ar) 的值,输出这个值对 10^9 + 7 取模...原创 2018-04-01 20:13:23 · 666 阅读 · 0 评论