自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(77)
  • 收藏
  • 关注

原创 CF95E Lucky Country

2

2022-09-18 19:35:27 181 1

原创 2021辽宁省赛——H制造游戏币

1

2022-09-18 17:33:46 163

原创 codeforces data structures解题记录

文章目录1200~14991500~17991800~20992100~23992400~26992700~2999over 30001200~14991519Cvoid problem_solver() { int n; cin>>n; vector<vector<int>>g(n+1); vector<int>p(n); for(int i=0;i<n;i++) cin>>p[i]; for(int i=0;i<n;

2022-03-16 00:35:34 267

原创 洛谷P3714 [BJOI2017]树的难题 【点分治,线段树合并】

题目链接题意给出一棵树,每条边有一种颜色,每种颜色都有相应的权值。一条路径的权值为:连续相同的颜色视为一段,权值为所有颜色段对应的权值和,比如路径颜色为:1 1 1 2 3 1 1 4 4,那么颜色段为:1 2 3 1 4。求长度在[L,R][L, R][L,R]范围内的路径的最大权值题解看到树上路径问题显然想到点分治,但是求出子树的各路径权值后,不能直接选最大的相加,假如两条子树路径的初始颜色一样那就得减去一次初始颜色权值。所以得开两颗线段树(线段树用来维护路径长度在[x,y][x,y][x,y

2021-11-09 12:53:43 319

原创 洛谷P1486 [NOI2004] 郁闷的出纳员 【平衡树】

题目链接题意给出一个下限 limitlimitlimit,需要一种数据结构 TTT 支持以下 3 种操作向 TTT 中插入一个数 XXX,如果 XXX 小于 limitlimitlimit 则不插入TTT中 所有数都加上/减去 XXX,并删去 TTT 中小于 limitlimitlimit 的数查询 TTT 中第 XXX 大对于每个操作 3 输出答案,如果 TTT中少于 XXX 个数则输出-1最后一行输出一共删去了几个数题解可以用 fhq treap 来维护,对于减少操作就把小于XXX

2021-11-07 14:18:58 106

原创 洛谷 P5459 [BJOI2016]回转寿司 【CDQ分治】

题目链接题意给出一个序列,求有几个子段和 sumsumsum 满足L≤sum≤RL \le sum \le RL≤sum≤R题解设 pren=∑i=1naipre_n=\sum_{i=1}^{n}a_ipren​=∑i=1n​ai​,则满足需找到点对(i,j)(i,j)(i,j)使:i<ji<ji<jprej−prei>=Lpre_j-pre_i>=Lprej​−prei​>=Lprej−prer<=Rpre_j-pre_r<=Rprej​−p

2021-11-07 01:52:00 127

原创 HDU 6166 Senior Pan 【二进制分组,最短路】

题目链接题意给出一张有向图,求其中 KKK 个点之间的最短路显然求 KKK 次最短路会超时,可以换个角度思考。把KKK个点分成两个集合,同一集合内的点互相距离为0,最短路也就是这两个点集之间的最短路(最短路的两个端点不在同一个集合内)。现在只需要考虑这个集合需要分多少次。从二进制的角度看,把集合KKK 中第 iii 位为 0 和为 1 的分为两个集合,这样对于无论最短路端点是哪两个,从第1位拆到第log(n)+1log(n)+1log(n)+1位,一定有一次会把他们拆到不同的集合。每次对于两个集

2021-11-06 01:34:12 150

原创 HDU 2444 The Accomodation of Students【二分图匹配】

题目链接题意给出一张图,判断是否是二分图,如果是求出最大匹配题解二分图染色+最大匹配#include<iostream>#include<sstream>#include<string>#include<queue>#include<map>#include<unordered_map>#include<set>#include<vector>#include<stack>

2021-11-05 22:28:54 71

原创 HDU 1045 Fire Net【二分图匹配】

题目链接题意在一个 N∗NN*NN∗N 的图上放置尽可能多的碉堡,碉堡会摧毁同一行,同一列且没有墙壁阻挡的碉堡题解对于同一行、同一列,连续的 ’.‘ 可缩成一个点,然后在新图上算最大匹配就行#include<iostream>#include<sstream>#include<string>#include<queue>#include<map>#include<unordered_map>#include<

2021-11-05 22:19:27 62

原创 POJ - 2251 Dungeon Master【搜索】

题目链接题意BFS题解BFS#include<iostream>#include<sstream>#include<string>#include<queue>#include<map>#include<set>#include<vector>#include<stack>#include <utility>#include<list>#include<

2021-11-05 16:26:09 67

原创 Codeforces Round #649 D. Ehab‘s Last Corollary 【思维,二分图,环】

题目链接题意给出一个无向图,要找出数量大于 ⌈K2⌉\lceil \frac{K}{2} \rceil⌈2K​⌉ 的点独立集长度不大于 KKK 的环保证有一种解题解如果 m=n−1m=n-1m=n−1(即为一棵树),那就之间二分图染色,两个独立集一定有一个大小 ≥⌈K2⌉\ge \lceil \frac{K}{2} \rceil≥⌈2K​⌉否则图中一定有环,如果(环指的是简单环)环大小小于等于K:直接输出环就好了环大小大于K:那环里面隔一个输出一个,至少有⌈K2⌉\lceil

2021-11-02 21:09:33 117

原创 2021年百度之星初赛二 1003.魔怔【欧拉路】

题目链接题意给一张无向完全图,每条边有一个颜色,为黑色或者白色。你初始在点 SSS上,你每次可以从当前的点经过一条边走到另一个点上,并将走过的边的颜色翻转。你想要把图中所有的边全都变为黑色,要求最小化走过的边的条数,求这个最小值,或者判断无解。题解首先思考怎样才能让所有边变黑:走完一个全是白边的块 CC1CC1CC1 将其变黑 —> 走黑边 EEE 到另外一个白边块 CC2CC2CC2 —> 走完白边块 CC2CC2CC2 将其变黑 —> 原路返回把 EEE 变回黑色重复以上步

2021-11-01 21:58:11 182

原创 Codeforces Round #612 B. Numbers on Tree【思维】

题目链接题意给出一棵以 1 为根的树,每个结点有个两个权值 pi,aip_i,a_ipi​,ai​ ,其中 pip_ipi​表示它的子树中 aia_iai​ 比它小的结点数量,现在给出 pip_ipi​,求一种满足的aia_iai​,不存在则输出NO题解不满足的情况为 pip_ipi​ 大于其子树结点数对于满足的情况,一定存在一种 1~n 的排列符合,对于 pip_ipi​ ,aia_iai​就是 1~n 里剩余的第 pi+1p_i+1pi​+1 个数,每次用完一个数就把它删了。暴力找是 n2n

2021-10-27 01:28:11 98

原创 Codeforces Round #469 D. A Leapfrog in the Array【思维】

题目链接题意一个序列初始为 1_2_3_..._n−1_n1\_2\_3\_...\_n-1\_n1_2_3_..._n−1_n(_为空),每次操作会把最后一个数往左移到第一个空,操作持续到无法移动为止(即1~n把前面全占满,没有空了), qqq 次询问位置 PPP 的值 (1≤P≤n1\le P \le n1≤P≤n)操作如下图所示题解感性的理解一下,操作到最后,1~n 奇数位上的数是没有移动过的,因为处理到 n2\cfrac{n}{2}2n​ 时,序列长这样:1_2_3_.._n2abcd

2021-10-27 01:07:05 84

原创 Codeforces Round #606 E. Two Fairs 【思维】

题目链接题意给出一个 nnn 个顶点 mmm 条边的无向图和两个顶点 a、ba、ba、b,问有多少对顶点(u,v)(u, v)(u,v) 使 uuu 到 vvv 必须经过 a,ba,ba,b 两点(u、vu、vu、v != a、ba、ba、b,uuu != vvv)题解可以这样想,uuu 到 vvv 必须经过 a,ba,ba,b,也就是把 a,ba,ba,b 删了的话,这两个点就无法到达,所以我们可以对 a、ba、ba、b 分别讨论由 aaa 为起点 dfs,每个点都能到达,cnt1=ncnt1

2021-10-27 00:47:02 86

原创 AcWing 2154. 梦幻布丁【启发式合并】

题目链接题意有 NNN 个点,每个点有一种颜色,有两种操作将所有颜色为 XXX 的点改为颜色 YYY询问有多少段颜色题解启发式合并,对于修改操作,个数少的颜色改为个数多的颜色,最多修改log次#include<iostream>#include<sstream>#include<string>#include<queue>#include<map>#include<unordered_map>#includ

2021-10-23 17:35:36 71

原创 Codeforces Round #276 (Div. 1) E. Sign on Fence【主席树区间合并 + 二分】

题目链接#include<iostream>#include<sstream>#include<string>#include<queue>#include<map>#include<unordered_map>#include<set>#include<vector>#include<stack>#include <utility>#include<list&

2021-10-23 01:49:57 77

原创 Codeforces Round #276 (Div. 1) B. Maximum Value【数学、思维】

题目链接题意给出序列 a[1...n]a[1...n]a[1...n],求最大的 a[i]%a[j]a[i]\%a[j]a[i]%a[j](a[i]>a[j]a[i]>a[j]a[i]>a[j])题解先标记一下 a[1...n]a[1...n]a[1...n] 的存在,对于 a[i]a[i]a[i] 来说,找到 max(a[i]%a[j])max(a[i]\%a[j])max(a[i]%a[j]) 的方法就是枚举其倍数(枚举倍数的时间是log(m)log(m)log(m)),在 (

2021-10-23 01:04:05 87

原创 HDU1540 Tunnel Warfare【线段树区间合并、平衡树】

题目链接题意有一段连续的序列[1,2,3,...,n][1,2,3,...,n][1,2,3,...,n],有3种操作删除数字 KKK,KKK的两边断开询问数字 KKK 所在的连续段的长度(若KKK被删除则长度为0)回撤上一次删除操作题解有两种做法线段树区间合并,记录区间的最长左连续段长度和最长右连续段长度平衡树记录删除的结点,询问的答案就是 KKK的后继-前驱-1#include<iostream>#include<sstream>#include&

2021-10-22 23:42:45 86

原创 洛谷P3810 【模板】三维偏序(陌上花开)【CDQ分治、树套树】

题目链接题意给出 nnn 个点,每个点有三个属性 X,Y,ZX,Y,ZX,Y,Z,f[i]f[i]f[i] 表示点对(i,j)(i,j)(i,j)满足Xi<Xj, Yi<Yj, Zi<ZjX_i < X_j,\ Y_i<Y_j,\ Z_i<Z_jXi​<Xj​, Yi​<Yj​, Zi​<Zj​的 jjj 的个数,求 f[0...n−1]f[0...n-1]f[0...n−1]题解CDQ分治的模板题,先对第

2021-10-20 22:14:11 147

原创 Educational Codeforces Round 22 E. Army Creation 【主席树】

题目链接题意给出一个序列a[1..n]a[1..n]a[1..n],mmm 次询问区间 [L,R][L,R][L,R] 可以选多少个数(相同的数最多选 KKK 个),强制在线题解先求出每个 iii 能被选到的最右的位置 to[i]to[i]to[i] 如果右边区间里面的 a[i]a[i]a[i]个数小于 KKK,说明每个 a[i]a[i]a[i] 可以被选到,即to[i]=n+1to[i]=n+1to[i]=n+1;如果大于KKK,则to[i]to[i]to[i]为它右边第KKK个的位置。主席树维

2021-10-20 20:13:10 119

原创 Codeforces Round #404 E. Anton and Permutation【树套树】

题目链接题意一个序列 a[1...n]a[1...n]a[1...n] 初始 a[i]=ia[i]=ia[i]=i,mmm次操作,每次交换 a[l]a[l]a[l] 和 a[r]a[r]a[r] ,每次操作完输出当前序列的逆序对数题解树状数组套主席树,主席树单点修改,再通过树状数组进行区间修改,维护区间 [u,v][u,v][u,v] 里,大小在[x,y][x,y][x,y] 范围内的值的个数#include<iostream>#include<sstream>#inc

2021-10-19 22:31:00 122

原创 Codeforces Round #474 F. Pathwalks【主席树】

题目链接题意给出一个 nnn 个结点的无向图图,找出边权递增且边的编号(即输入顺序)递增的路径的最长长度题解对于结点 XXX,用线段树维护所有能到达 XXX 的边中边权在 [L,R][L,R][L,R] 区间内最长的路径,一共需要 nnn 颗线段树,所以采用主席树#include<iostream>#include<sstream>#include<string>#include<queue>#include<map>#incl

2021-10-18 13:27:38 94

原创 Codeforces Round #340 E. XOR and Favorite Number【莫队】

题目链接题意给出一个序列 a[1...n]a[1...n]a[1...n] 和一个整数 KKK ,qqq次询问区间 [L,R][L,R][L,R] 有几个子段的异或和等于 KKK题解只有询问且 1≤n,m≤1051\le n,m \le 10^51≤n,m≤105所以考虑莫队算法,子段异或和可以用前缀和算出加了奇偶优化会快不少#include<iostream>#include<sstream>#include<string>#include<q

2021-10-16 16:17:15 98

原创 Codeforces Round #254 (Div. 1) C. DZY Loves Colors【序列分块】

题目链接题意有一个序列 a[1...n]a[1...n]a[1...n],序列每个点都有一个权值bbb ,初始 a[i]=i,b[i]=0a[i]=i,b[i]=0a[i]=i,b[i]=0,进行 mmm 次操作,操作有两种把 [X,Y][X,Y][X,Y] 区间每个 a[i[a[i[a[i[ 都变成 ZZZ,同时b[i]+=abs(a[i]−Z)b[i]+=abs(a[i]-Z)b[i]+=abs(a[i]−Z)查询 [X,Y][X,Y][X,Y] 区间的权值和题解n≤105n\le10^

2021-10-14 20:31:45 57

原创 Codeforces Round #275 D. Interesting Array 【线段树】

题目链接题意构造一个长度为 nnn 序列满足 mmm 个限制条件,限制条件的格式为:对于区间 [L,R][L,R][L,R] 与运算结果为 XXX题解线段树维护区间 &,先记录下每个限制条件,然后对于限制 L,R,XL,R,XL,R,X ,将区间 [L,R][L,R][L,R] 对 XXX 进行或运算,这样能保证[L,R][L,R][L,R]与运算结果为XXX,最后遍历一遍限制条件,看是否都符合#include<iostream>#include<sstream>

2021-10-13 18:19:04 68

原创 Educational Codeforces Round 52 C. Make It Equal 【贪心、思维】

题目链接题意从 111 ~ NNN 每个位置有不同的方块数,每次可以选择一个高度,切掉这个高度以上的方块,每次被切去的方块数不能大于 KKK,最少切几次能使 111 ~ NNN等高题解排个序从最高的开始切,每次尽可能的切最多的#include<iostream>#include<sstream>#include<string>#include<queue>#include<map>#include<unordered_m

2021-10-13 13:30:11 79

原创 Codecraft-18 and Codeforces Round #458 D. Bash and a Tough Math Puzzle【线段树】

题目链接题意给出一段序列 a[1...n]a[1...n]a[1...n],进行以下操作单点修改查询能否至多修改一个数,使区间 [L,R][L,R][L,R] 的GCD为 xxx 的倍数题解线段树维护区间GCD,查询的时候一共有 3 种情况左子树 GCD%x=0, 右子树 GCD%x=0,此时答案为YES左右子树其中一颗 GDD%x=0,另一颗 GCD%x!=0,递归那颗不为 GCD%x!=0 的左右子树 GCD%x 都不为0,答案为NO,因为左右子树至少都需要修改一次#incl

2021-10-13 00:51:15 74

原创 Codeforces Round #442 (Div. 2) E. Danil and a Part-time Job 【线段树】

题意给出一棵以1为根结点树,每个结点有一个灯,进行两种操作:改变结点 xxx 及其子树的灯的状态(开变关,关变开)查询结点 xxx 及其子树中亮着的灯数题解以DFS序建立线段树,每个子树都是一段连续区间,然后就是线段树基本操作了#include<iostream>#include<sstream>#include<string>#include<queue>#include<map>#include<unordere

2021-10-13 00:40:45 85

原创 Codeforces Beta Round #19 D. Points 【线段树、set】

题目链接题意在坐标系中有三种操作增加一个点 (x,y)(x,y)(x,y)删除点 (x,y)(x,y)(x,y)查询严格在点 (x,y)(x,y)(x,y) 右上角的点中,横坐标最小的点,如果有多个点,选择纵坐标最小的那个题解先把坐标离散化,set[x]set[x]set[x] 维护横坐标 xxx 上的点,线段树维护 xxx 轴上区间内最高的 yyy 坐标#include<iostream>#include<sstream>#include<string

2021-10-13 00:35:21 110

原创 Educational Codeforces Round 115 (Rated for Div. 2)【A~D】

文章目录ABCDA题意给出一个 2×n2 \times n2×n 的矩阵,起点 (1,1)(1, 1)(1,1) 终点 (2,n)(2, n)(2,n),每次可以走到相邻的格子(包括对角),矩阵中 0 表示空地,1 表示障碍,问能否走到终点题解只要 (1,x),(2,x)(1,x),(2,x)(1,x),(2,x) 不同时为 1 就能走到#include<iostream>#include<sstream>#include<string>#includ

2021-10-12 01:40:43 133 1

原创 A Simple Problem with Integers【线段树】

题解线段树的模板题,注意好好理解一下lazytag:假如对 [1,5] 区间 +1,那可以在线段树[1,4]这个位置打一个标记,不继续递归往下更新,直到需要修改或查询它的儿子结点#include<iostream>#include<sstream>#include<string>#include<queue>#include<map>#include<set>#include<vector>#include

2021-10-11 22:03:41 72

原创 HDU 敌兵布阵【线段树】

题解线段树模板#include<iostream>#include<sstream>#include<string>#include<queue>#include<map>#include<unordered_map>#include<set>#include<vector>#include<stack>#include <utility>#include<l

2021-10-11 21:52:21 62

原创 整理一下数据结构及其例题

文章目录栈队列单调栈、单调队列链表分块序列分块树分块ST表并查集树状数组线段树普通线段树权值线段树势能线段树猫树ZKW线段树李超线段树平衡树fhq treapSplay可持久化数据结构可持久化线段树(主席树)可持久化并查集可持久化平衡树可持久化字典树其他奇怪的数据结构Link Cut TreeSqrt TreeK-D Tree析合树珂朵莉树栈洛谷P1739洛谷P1165(同时也能作为一个很好的堆的例题)队列单调栈、单调队列洛谷P5788洛谷P1901链表分块序列分块洛谷P2023树分

2021-10-10 01:21:30 160

原创 P6177 Count on a tree II/【模板】树分块

题目链接题意:一棵树上每个结点都有一个值,q次询问,每次询问 U—>V 路径上有多少个不同的值题解:树分块+bitset能过,还挺快的。但是不开O2的话要算一下块的大小,大一点点超内存,小一点超时#include<iostream>#include<sstream>#include<string>#include<queue>#include<map>#include<unordered_map>#inclu

2021-10-08 15:45:07 66

原创 洛谷 P2023 [AHOI2009] 维护序列 【序列分块】

题目链接题意:构建一种数据结构,支持区间乘区间加区间求和题解:一看就是线段树的模板题,但我就要用分块(顺便加上丑陋的压行#include<iostream>#include<sstream>#include<string>#include<queue>#include<map>#include<unordered_map>#include<set>#include<vector>

2021-10-08 15:31:52 180 1

原创 Codeforces Round #744 (Div. 3)题解 【A~F】

目录A 【Casimir's String Solitaire】B 【Shifting Sort】C 【Ticks】D 【Productive Meeting】E1 【Permutation Minimization by Deque】E2 【Array Optimization by Deque】F 【Array Stabilization (AND version)】A 【Casimir’s String Solitaire】题意:给出一个由 A、B、C 三个字母组成的字符串,每次可以删掉一个‘A

2021-09-29 22:59:02 186

原创 最小路径覆盖问题【网络流24题】

题目链接题意:用最少的路径覆盖DAG所有顶点(路径不相交 )题解:把一个点拆成起点和终点两个点,一条有向边就是起点集的 uuu 到终点集的 v′v'v′,答案就是点数 nnn 减这个二分图的最大匹配,网络流写法是源点连起点集、终点集连汇点的最大流,然后并查集记录路径#include<iostream>#include<sstream>#include<string>#include<queue>#include<map>#in

2021-09-28 00:00:39 201

原创 圆桌问题【网络流24题】

题目链接题意:有 m 个单位,每个单位有 r[i] 个人,有 n 张桌子,每张桌子能坐 c[i] 个人,要使同一单位的人不坐在同一张桌子,若无法满足输出 0,否则输出 1,并找到其中一种方案题解:怎么其他紫题都挺难的,到你这就拉了胯了啊(bushi源点—>单位,流量 r[i]桌子—>汇点,流量 c[i]单位—>每张桌子,流量 1算最大流是否等于∑i=1mri\sum_{i=1}^{m}r_i∑i=1m​ri​,不等于即没有满足的方案,等于就找每个单位连到桌子的边中流量为

2021-09-27 19:25:03 115

原创 飞行员配对方案问题 【网络流24题】

题目链接题意:一架飞机要起飞需要一名外籍飞行员和一名英国飞行员配合,英国飞行员u可以和外籍飞行员v配合,求最多能有多少架飞机起飞题解:显然是二分图最大匹配#include<iostream>#include<sstream>#include<string>#include<queue>#include<map>#include<unordered_map>#include<set>#include&l

2021-09-27 18:11:08 215

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除