自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Hacheylight

的小屋

  • 博客(180)
  • 收藏
  • 关注

原创 停更说明

博主退役AFO本博客无限期停更更的话也要到大学了(反正没人看)祝高考顺利!

2020-12-02 12:33:31 212

原创 高精度模板 class

#define MAX_L 1005 //最大长度,可以修改class bign {public: int len, s[MAX_L]; //数的长度,记录数组 //构造函数 bign(); bign(const char *); bign(int); bool sign; ...

2019-09-27 14:23:56 438

原创 线段覆盖 (线段树)

有一根长度为 LLL 的白色条状物。有两种操作:用一条长度为 TTT 的黑布盖住条状物的 [a,a+T][a,a+T][a,a+T] 的这个区间把某条黑布拿走输入 LLL 和 nnn 次操作,要你输出每次操作之后条状物上有多少个黑区间条状物上黑区间的总长度观察出题目的询问每次都是一样的,其实也只有一种修改(添和删相当于互逆操作)我们可以建一棵线段树vvv 表示有多少个黑区间...

2019-03-13 18:54:17 1242

原创 POJ 2892 Tunnel Warfare (线段树)

初始所有点都是白色题目要求支持:把一个点染黑求出点 xxx 连通的白块长度把最后一次被染黑的点染白 (栈式)仔细观察第二种操作我们实际就是找到左右两边第一个被染黑的节点假设位置分别是 aaa 和 bbb,那么区间长度 b−a−1b-a-1b−a−1但是需要特判一些东西:如果当前所有元素全白? aaa 和 bbb 不存在,但答案为 nnn如果当前元素已经为黑? a=b=xa...

2019-03-13 16:12:00 212

原创 NOIP 2017 逛公园 (最短路+dp)

题意:求出 从 111 到 nnn 的路径长度小于等于最短路 +k+k+k 的路径个数分析:首先观察数据特点30%30\%30% 的数据 k=0k=0k=0 且没有 000 边,等同于最短路计数70%70\%70% 的数据没有 000 边,那么就是相当于没有 000 环100%100\%100% 的数据 k≤50k \le 50k≤50首先考虑第一档:显然就是一个最短路径计数,是一...

2019-03-10 17:38:48 260

原创 USACO 2019 February Gold Cow Land (树链剖分)

题目要你支持:更改树上某一点 xxx 权值为 yyy求 xxx 到 yyy 的路径权值异或和这一看就是树链剖分模板题么用线段树维护单点修改,区间查询异或然后树链剖分维护路径就搞定了#include <map>#include <set>#include <ctime>#include <queue>#include <s...

2019-03-06 16:36:08 611

原创 CSU 2151 集训难度(线段树)

其实是个超傻逼的题目,但是交了20几发,就死在一个写惯了的小错误上这种题目一看建两个标记就好了,tag1tag1tag1:表示区间加标记tag2tag2tag2:表示区间覆盖标记那么下传方式很显然:先下传 tag2tag2tag2,更新 tag2tag2tag2 和 vvv 和 tag1tag1tag1然后下传 tag1tag1tag1,更新 vvv 和 tag1tag1tag1...

2019-03-05 14:09:29 220

原创 Codeforces 152E Garden (状压dp+最短路)

题意:有一个 n∗mn*mn∗m 的花园,每个位置有一定数量的花,有 kkk 个建筑,然后要把这些建筑连通起来,连通就必须要把花园的一些花杀死,铺上道路问最少通过杀死多少花可以使建筑连通乍一看很像最小生成树,但是确发现并不是带权并查集? 好像也不是那怎么维护连通性? 懵逼。。。。我们发现最后建筑连成的路必定是成树形的那么我们只要断掉一条边必定能够使得树变成两半kkk 很小,那么是否...

2019-03-03 16:10:43 226

原创 Codeforces 111C Petya and Spiders (状压dp)

一个 n∗mn*mn∗m 的棋盘,一开始每个格子都有一个蜘蛛,你可以对每个蜘蛛向四个方向移动,或者不动;问最多能够有多少个格子没有蜘蛛n∗m<=40n*m<=40n∗m<=40,侧面推导发现 min(n,m)≤6min(n,m) \le 6min(n,m)≤6显然把十字架形的蜘蛛移到一个格子最优在不同的棋盘形态十字架的摆放却不尽相同能否贪心? 好像不行数...

2019-03-03 15:41:33 210

原创 Codeforces 908G Yet Another Maxflow Problem (最小割定理,线段树)

给出一张图,点集被分为两个部分,记做 AAA 和 BBB,每个部分有 nnn 个点分别记做: A1,A2,...,AnA_1,A_2,...,A_nA1​,A2​,...,An​ 和 B1,B2,...,BnB_1,B_2,...,B_nB1​,B2​,...,Bn​连边: (Ai→Ai+1),(Bi→Bi+1)(A_i\rightarrow A_{i+1}),(B_i\rightarrow ...

2019-02-28 19:23:17 238

原创 IOI 2007 Sail (线段树+贪心)

题意:有一艘船,船上有 nnn 个旗杆,每个旗杆上有 hih_ihi​ 个小节。每根旗杆上会挂 kik_iki​ 张帆每个小节最多挂一个帆。在风中,帆的不同排布方式会产生不同的推动力对于任意一张帆,他的推动力折扣等于再它后面并且和它在同一高度的帆的数目所有帆的任意一种位置组合的推动力折扣和等于在该位置下所有帆的推动力折扣的和求所有位置组合最小的推动力折扣和显然有一种贪心方案:设每个位...

2019-02-28 16:38:07 440

原创 Codeforces 474E Pillars (dp+树状数组)

数据结构优化 dpdpdp 的题目都很套路设 f[i]f[i]f[i] 表示取到 iii 且 iii 必取的最大长度那么显然:f(i)=max⁡j=1i(f(j))+1(∣hi−hj∣≥d)f(i)=\max\limits_{j=1}^i(f(j))+1 (|h_i-h_j| \ge d)f(i)=j=1maxi​(f(j))+1(∣hi​−hj​∣≥d)直接枚举 O(n2)O(n^2...

2019-02-27 20:41:02 237

原创 Bzoj 3688 折线统计(dp+树状数组)

开始以为同样斜率的折线算一条,后来经过大佬提示发现是假的,那就很简单了这是一道比较基础的数据结构优化 dpdpdp 的问题首先按照 xxx 坐标排序首先能够想出 dpdpdp 状态dp[i][j][0/1]dp[i][j][0/1]dp[i][j][0/1] 表示前 iii 个数,选了 jjj 段,当前折线是上升/下降的脑补可得转移方程:f[i][j][0]=∑k=1i−1f[k][j...

2019-02-27 19:43:17 246

原创 Gorgeous Sequence(线段树)

考虑下面一种解法:对线段树中的每一个节点除维护区间和 vvv 以外,还额外围护区间最大值 mamama,严格次大值 sesese 和最大值个数 mcmcmc现在假设我们要让区间 [l,r][l,r][l,r] 对 xxx 取 minminmin,我们先在线段树中定位区间,对定位的每一个节点,我们开始暴力搜索。搜索到每一个节点分三种情况考虑:当 ma≤xma \le xma≤x 时,显然只一...

2019-02-27 16:09:18 671 2

原创 Bzoj 3252 攻略 (dfs序,线段树)

题意:给出一棵 nnn 个节点的树,根节点为 111 号节点,每个点有一个价值 wiw_iwi​要求选出 kkk 条从 111 号节点到叶子的路径,使得这些路径并的价值和最大1≤n,k≤2∗105,1≤wi≤1091 \le n,k \le 2*10^5,1 \le w_i \le 10^91≤n,k≤2∗105,1≤wi​≤109首先每次贪心取显然正确那么我们处理出 dfsdfsdfs...

2019-02-26 21:13:45 378

原创 POJ 1151 Atlantis (扫描线+线段树)

这是一道模板题,描述了一种叫扫描线的算法题意就是给出一个坐标系和 nnn 个矩形,求面积并,如下图(比较模糊,见谅):

2019-02-26 21:01:53 291

原创 HDU 5828 Rikka with Sequence (线段树)

又是一道区间开方的问题不同于“花神游历各国”的是,它要求支持单点加思考“花神游历各国”的方法是否适用如果一个区间最大值开根和最小值开根相同,那么打个下传标记否则暴力更新时间复杂度是多少?当 n=105,m=105,a={1,2,1,2,...,1,2}n=10^5,m=10^5,a=\{1,2,1,2,...,1,2\}n=105,m=105,a={1,2,1,2,...,1,2} 时...

2019-02-26 20:34:01 174

原创 HDU 1024 Max Sum Plus Plus (dp)

动态规划的思想。基本思路:首先,定义num[n]num[n]num[n] 用来存储 nnn 个整数组成的序列dp[i][j]dp[i][j]dp[i][j] 用来表示由前 jjj 项得到的含 iii 个字段的最大值,且最后一个字段以 num[j]num[j]num[j] 项结尾。仔细想想,我们可以知道:dp[i][j]=max⁡t=i−1j−1(dp[i][j−1]+num[j],d...

2019-02-26 15:27:53 196

原创 Gym 100739A Queries (线段树)

感觉老师的做法有点大材小用这里讲一种简单一些的方法首先对于每个位建一棵线段树分开考虑可以维护异或前缀和,对前缀和建线段树可以维护区间内 000 的个数,相应的 111 的个数也就知道了那么修改就相当于修改区间 [x,n][x,n][x,n]查询的话也很套路对于每一个位,我们考虑其对答案的贡献显然贡献次数就是区间 [x−1,y][x-1,y][x−1,y] 中 000 的个数乘以 1...

2019-02-26 14:20:13 372

原创 Codeforces 877E Danil and a Part-time Job (dfs序,线段树)

题意:给一棵 nnn 个节点的树,每个节点有一个灯,灯可亮可灭。给出 mmm 个操作,分为两种:将 xxx 及其子树的灯变成相反状态(亮变灭,灭变亮);统计 xxx 及其子树有多少个灯是亮的。题目要我们支持子树异或,子树求和这类子树问题可以很好的用 dfsdfsdfs 序解决子树对应着 dfsdfsdfs 序的一个区间区间就可以用线段树完成记录 szszsz 表示子树大小,v...

2019-02-23 10:53:13 208

原创 Bzoj 4241 历史研究 (分块)

题解中竟没有分块做法? 本人来水一发~这题分块挺显然的,一看就长着一副区间众数的脸都是套路。。。离散化是必须的,注意,查询请不要写成 O(nlogn)O(nlogn)O(nlogn)没有修改,直接预处理f[i][j]f[i][j]f[i][j] 表示前 iii 个块数字 jjj 出现了几次g[i][j]g[i][j]g[i][j] 表示块 iii 到块 jjj 的答案这两个数组显然都...

2019-02-22 10:14:10 269

原创 LG 2110 欢总喊楼记(数位dp)

显然求 LLL 到 RRR 可以转化成前缀和形式设 sum(x)sum(x)sum(x) 代表从 111 到 xxx 合法的数有多少个。那么结果就是sum(R)−sum(L−1)sum(R)-sum(L-1)sum(R)−sum(L−1)。那么怎么求 sum(x)sum(x)sum(x) 呢?当 xxx 为 111 位数时 sum(x)=x(x<=9)sum(x)=x(x&a...

2019-02-21 21:07:19 192

原创 Bzoj 1086 [SCOI2005] 王室联邦 (树分块)

考虑一种构造方法:我们 dfsdfsdfs 整棵树,处理每个节点时,将其一部分子节点分块,将未被分块的子节点返回到上一层枚举 uuu 的每一个子节点 vvv,递归处理子树后,将每个子节点返回的未被分块的节点添加到集合 sss 中,一旦 ∣s∣≤b|s| \le b∣s∣≤b 则把 sss 作为一个新的块并将 uuu 作为省会,然后清空 sss 并继续枚举 vvv处理完所有子树后,将 uuu...

2019-02-21 19:11:32 236

原创 bzoj 4401 块的个数(树分块)

这题和分块没有关系啊有两个结论:1、一棵树划分成 kkk 份的方案是唯一的(但可以不存在);2、一棵树可以划分成 kkk 份,当且仅当有 kkk 个子节点的子树大小是 nk\frac{n}{k}kn​ 的倍数所以只要 DFSDFSDFS 求出每个节点为根的子树大小(即节点个数),然后枚举分成的块数即可解决。#include <map>#include <set>..

2019-02-21 17:28:31 239

原创 Codeforces 455D Serega and Fun(分块)

题意:给出一个长度为 nnn 的序列 a1,a2,...,ana_1,a_2,...,a_na1​,a2​,...,an​,q此操作:将区间 [l,r][l,r][l,r] 循环移位 (al→al+1,al+1→al+2,...,ar→al)(a_l\rightarrow a_{l+1},a_{l+1}\rightarrow a_{l+2},...,a_r\rightarrow a_l)(...

2019-02-21 16:54:49 633

原创 Codeforces 785E Anton and Permutation(分块)

当交换 O(ax,ay)O(a_x,a_y)O(ax​,ay​) 时,讨论区间 (x,y)(x,y)(x,y) 对答案的贡献有:加上区间内比 aya_yay​ 小的个数加上区间内比 axa_xax​ 大的个数减去区间内比 aya_yay​ 大的个数减去区间内比 axa_xax​ 小的个数减去 [ax>ay][a_x > a_y][ax​>ay​]加上...

2019-02-21 16:48:03 139

原创 Bzoj 2821 作诗 (分块)

有 nnn 个数, mmm 组询问,每次问 [l,r][l,r][l,r] 中有多少个数出现正偶数次。强制在线数据范围 1≤n,m,ai≤1051 \le n,m,a_i \le 10^51≤n,m,ai​≤105

2019-02-21 16:30:22 135

原创 Codeforces 13E Holes(分块)

题意:一条直线有 nnn 个洞每当一个球掉进洞中时,回弹到后面距它 lil_ili​ 的洞中或者直接被弹飞,要求支持两种操作:修改某个洞的弹力 lil_ili​询问小球进入某个洞后,被弹几次之后会飞出,飞出之前进入的最后一个洞是什么。将序列分成 n\sqrt nn​ 个块,对于每个位置 iii 我们记录从每个位置开始跳出这个块需要的时间 tit_iti​ 和跳到的位置 nxt...

2019-02-21 15:16:55 205

原创 Codeforces 444C DZY Loves colors(分块)

我们维护一个标记表示区间内的数是否全相同即可。如果全相同很容易算出 a,ba,ba,b 数组需要更新多少,打标记即可。否则暴力修改。#include <map>#include <set>#include <ctime>#include <queue>#include <stack>#include <cmath&g...

2019-02-21 14:23:41 185

原创 Codeforces 474F Ant Colony(分块)

发现全网竟没有一篇分块题解。。。

2019-02-21 12:43:19 194

原创 CodeForces 551E GukiZ and GukiZiana(分块+二分)

题意(摘自洛谷):给出一个数列 a1,a2,...,ana_1,a_2,...,a_na1​,a2​,...,an​,有两种操作:给出 l,r,xl,r,xl,r,x, 令 al,al+1,...,ara_l,a_{l+1},...,a_{r}al​,al+1​,...,ar​ 都加上 xxx给出 xxx, 求最大的 j−ij-ij−i 满足 ai=aj=xa_i=a_j=xai​=...

2019-02-21 10:52:04 223

原创 考试总结

膜你赛考的好差啊

2019-02-19 10:59:10 313

原创 Om Nom and Necklace 重温

重温

2019-02-15 16:05:31 228

原创 Ralph and Mushrooms (tarjan+dp)

一个综合性的题目,还不错

2019-02-14 19:28:41 247 3

原创 Merge Equals (STL)

一看题目吓一跳,仔细一想是水题

2019-02-14 19:13:01 301 2

原创 0x44 [Violet]蒲公英(分块)

这是一个处理区间众数的经典题

2019-02-09 20:08:56 231

原创 0x43 Interval GCD (线段树+树状数组+GCD)

数据结构好题

2019-02-09 16:37:33 193

原创 Codeforces 1111C Creating Snap (动态开点线段树)

wow 出题人太良心了放动态开点线段树过了理解题意,发现我们要维护的是一个长度为 2n2^n2n 的区间。于是我们想到用线段树来维护。线段树的每个节点维护区间内的人数和价值,然后按照题意 pushuppushuppushup 即可。注意如果一个区间内的人数为 000,这个区间的价值为 AAA 。由于 2n2^n2n 很大,所以我们要动态开节点。建树的时候将所有人依次插入线段树中。最后...

2019-02-09 15:34:07 394 2

原创 0x44 磁力块 (分块+BFS)

很容易想到的一个思路就是首先按照距离起点的距离进行排序。用一个队列存储我们得到的石头。我们可以在 O(logn)O(logn)O(logn) 的时间内,找到所有距离小于手上石头,但是我们发现,我们还要考虑质量和磁力之间的关系,但是质量并没有排序。我们自然而然的就想到了将整个序列分为若干小段,序列整体按照距离排序,方便距离的查找,但是小区间内部按照质量排序,方便找到对应距离后的质量的查找。这就是...

2019-02-09 15:04:12 451

原创 0x35 Xor (线性基,高斯消元)

首先求出线性基 然后根据类似二进制的原理 观察 111 的个数 然后可以算出我凑出的异或值是第几大的注意 当线性基个数小于 nnn 时会存在 000 所以要将询问第 kkk 小改为询问第 K−1K-1K−1 小然后板子基本就是高斯消元?反正就是用 O(logw)O(log w)O(logw) 级别的数,代替了原来的 nnn 个数。在什么意义上这两个东西相等呢?就是这 logwlog wlog...

2019-02-09 13:50:39 236

空空如也

空空如也

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

TA关注的人

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