![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
BZOJ
星辰大少主
重庆oier
展开
-
BZOJ3670: [Noi2014]动物园(DP)
前言这道题理解KMP真是再好不过了,虽然和KMP没什么关系。 但是这里核心就是处理KMP的next数组,而KMP的重难点也是next数组,所以对于刚刚学了KMP的少主来说真的是很恰到好处了。题意求出一个序列每一个前缀的不重合的相同前缀和后缀的个数。 看不懂吧。。。。看这个 题目链接分析虽然说和KMP关系密切并且你必须会KMP,但实际上分析和KMP没啥关系。 大概...原创 2018-03-06 23:28:57 · 194 阅读 · 3 评论 -
BZOJ 3329: Xorequ
题目原题链接 有这样一类数,x^(3x)=2x 求n之内有多少个x以及2^n之内有多少个x,第二问要mod x可达1e18分析变形: x^(2x)=3x x^(2x)=x+2x 说明在这里^运算和+运算等价,有2x=x<<1,可以推出只有每位元素都和前一位元素不同时为1才满足这个条件。第一问数位DP第二问由当前选择0,则后一位随便选,当前选择1,则后...原创 2018-03-13 20:22:31 · 177 阅读 · 0 评论 -
BZOJ 1023: [SHOI2008]cactus仙人掌图(仙人掌DP)
题意求仙人掌直径 仙人掌直径:任意两点间最短路的最大值。说两句仙人掌DP包括所有仙人掌题目都是要抓住那个简单环,讨论在环上和不在环上或者是环的根和不是环的根的情况。 如果可能的话尽可能向树的方向靠拢,因为树非常特殊。 具体实现其实主要就差不多是个tarjan算法了。 在有些复杂的时候可能需要先DFS预处理出仙人掌的双亲结点,父亲儿子这些,但是像这种比较简单的题目就没必要预处...原创 2018-03-13 10:46:46 · 222 阅读 · 0 评论 -
BZOJ 4564: [Haoi2016]地图
题目大意原题链接给一个仙人掌,每个结点有一个权值,查询每个仙人掌的子树(算本身)(子树结点满足:必须经过该点才能到达跟,即该点是子树的割点)有多少种小于y的权值个数为奇数(或偶数)。y是每次询问时候给。 可离线,1e5个点和询问算法分析如果在树上那就需要用DFS序,仙人掌也有DFS序,叫做仙人掌序列嘛。 实际上就是需要先预处理出一个结点在环上的相邻结点(有一个一定是DFS的...原创 2018-03-13 10:37:28 · 385 阅读 · 0 评论 -
BZOJ:2726: [SDOI2012]任务安排(斜率优化)
题目你有n个任务和一台机器,第i个任务完成时间是s[i],带来的费用是它的完成时间*费用系数f[i]。 每次启动机器需要时间S,可以将几个任务分成一组,这样只需要启动一次机器,但是所有任务的完成时间都将被计算为最后一个任务完成的时间。 注意计算等待时间!!! 现在你需要使费用最小。 时间可以为负数 0 < N<=300000 0<=S<=2^8 -(2^8)&...原创 2018-03-20 19:00:57 · 209 阅读 · 0 评论 -
BZOJ:3894: 文理分科(网络流)
题目每个同学都只能选择文科或者理科一种,选择文科会获得一个权值,理科也有,如果一个人以及周围四个人都选择了一个学科,那么又会获得一个权值。 将权值最大化。分析很经典的网络流题目,用最小割。 首先我们的模型想法是把最终和S集联通的弄成文集,T集联通的弄成理集,然后用最小割割掉,为了使用最小割,我们采取首先加入所有权值,然后看根据选择减少了哪些权值。连边的方式就是: 对于一个...原创 2018-03-20 21:36:44 · 515 阅读 · 0 评论 -
BZOJ 2668: [cqoi2012]交换棋子(费用流)
题目有一个棋盘,有一些棋子,要求把这些棋子通过和周围的八连块交换,每个格子有交换的次数限制,求从初始状态移动到目标状态的最小交换次数,无解输出-1。分析有几个坑点: - 是八连块 - 交换的时候起点格子和终点格子都只交换一次,而其它格子交换两次我们把点拆成三个点,其中对于一般的路径用最后一个点连接第一个点。 源点连中间那个店,汇点也连接中间那个点。 点与点之间边连接成inf...原创 2018-03-20 23:37:50 · 192 阅读 · 0 评论 -
BZOJ 2120: 数颜色(带修莫队)
题目给定一个序列要求查询一个区间不同颜色的个数,支持修改操作。带修莫队记一个看起来很SB时间复杂度O(n5/3)O(n5/3)O(n^{5/3})连暴力都是O(n2)O(n2)O(n^2)但是有些时候可以代替树套树而且空间非常小而且超好些的高科技算法带修莫队:修改按时间排序查询按左端点的块为第一关键字,右端点的块位第二关键字,时间为第三关键字,每次查询暴力修改、转移。...原创 2018-04-08 20:02:29 · 338 阅读 · 0 评论 -
BZOJ 4571: [Scoi2016]美味(权值线段树查询最大异或和)
题目大意给定一个序列a1~an 给定若干个询问, b , x , L , R 最大化b xor (ai+x)|L<=i<=R分析不考虑x这个偏移量我们用二进制trie现在考虑了有一个新操作就是权值线段树把ai全部丢到权值线段树里面假设我们所有的数二进制长度不超过5假设我们贪心地选择了待选择的ai的前两位是10(之前选择的时候我们可以保证有这样的a存在...原创 2018-03-26 15:34:57 · 179 阅读 · 0 评论 -
BZOJ 2115: [Wc2011] Xor (线性基+生成树)
题意给定一张无向图,求1->n的路径边权最大异或和。分析首先跑一颗任意生成树出来(DFS即可) 然后对于所有非树边,都形成一个环,我们叫它基本环。 通过异或的性质我们发现答案是选取一些基本环异或1~n在树上的路径异或和 所以我们把所有的基本环加入线性基,然后用1~n的路径去匹配贪心找最大值 基本环的寻找实际上结合在DFS中,用异或的性质可以算长度(不要去找LCA)...原创 2018-03-22 11:20:37 · 160 阅读 · 0 评论 -
BZOJ 3489: A simple rmq problem
我以前可能写了个假的KD-Tree,关键是还过了这么多题。。。题目大意题目链接 给出一个长度为n的序列,给出M个询问:在[l,r]之间只出现过一次的数的最大值。要求在线,找不到输出0.分析确定了一个上一次出现和下一次出现的位置之后,就是在一个三元组内查询最值,那么就上KD-Tree即可。代码#include<cmath>#include<que...原创 2018-04-10 20:42:03 · 250 阅读 · 0 评论 -
BZOJ 4827: [Hnoi2017]礼物(循环卷积)
题目大意给定等长一个序列一个环,环可以从任意地方断开形成一个序列,可以把一个序列的值加上c,要求序列各个元素差的平方的和。分析推一推就可以直接把c的最优值求出来,可能是我常数比较大的缘故,三分都要超时 把一个序列反转,就变成了循环卷积的形式。要注意四舍五入的方法:用round这个自带的四舍五入函数(floor)(x+0.5)不要用(int)(x+0.5),在x是负数的...原创 2018-03-28 13:17:59 · 269 阅读 · 0 评论 -
莫比乌斯反演:跟着Po大爷的讲稿刷题
2301: [HAOI2011]Problem b#include<bits/stdc++.h>using namespace std;const int maxn=50000+105,N=50000;int mu[maxn],sum[maxn],p[maxn],sz;bool isp[maxn];void ready(){ sz=0; sum[1]...原创 2018-03-28 16:09:38 · 224 阅读 · 0 评论 -
3924: [Zjoi2015]幻想乡战略游戏(点分树)
题目链接分析点分树裸题!!!其实是不想写题解大概就是要新建立点分树,基本上是一个新树了。要维护以每个结点为根的子树信息来辅助查询。查询的时候就是找子树中比当前结点优的点然后。这里跳到那个结点的根结点去。还有就是会被菊花卡成O(n)的查询,但是这题有限制子树不超过20个。代码#include<bits/stdc++.h>//注意距离都要开LL ...原创 2018-04-03 23:23:18 · 332 阅读 · 0 评论 -
BZOJ 3774: 最优选择(最小割建模的一般方法)
题目大意给定一个矩阵,选择每个元素的代价是aij,如果一个元素被选择了或者上下左右四个元素被选择了,会获得收益bij,要求最大化收益-花费分析想不到我也能自己做出最小割啦哈哈哈首先这道题基本上可以确定使用最小割,第一步就是要把收益累加起来,然后看会用多少花费或者损失多少收益。然后我们要分析出一个重要的性质就是,一个点的收益,要么选择这个点,要么选择周围一个点,要么都不选,肯...原创 2018-03-28 22:50:55 · 486 阅读 · 0 评论 -
BZOJ 4736: 温暖会指引我们前行(LCT)
题目分析动态维护一颗最大生成树,注意查询的值不是用来做最大生成树的那个权值。具体就是把边变成点。一些查找要素都可以放在splay中查找。还有就是要注意如果有一条边不选的话,那么我们可能不会为它建立结点,所以要特判一下修改的时候它是不是出现了,出现了就不管。代码#include<cmath>#include<queue>#include<...原创 2018-04-11 16:54:46 · 357 阅读 · 0 评论 -
BZOJ 4513: [Sdoi2016]储能表(记忆化搜索)
题目原题链接 格子(i,j)的大小是max(i^j-k,0),求一个前缀矩阵mod p(动态给出)的值,范围可达1e18,5000组询问。分析网上搜题解,握草,只写一个状态!? 网上搜代码,握草,全是填表法!?还有什么叫直接DP就好了,小生完全不会啊啊啊啊啊!!!!还有这道题好像可以找规律,然后我数位DP分析着分析着就变成找规律了,而且还很疑惑觉得为什么和周围的小伙伴不...原创 2018-03-14 15:10:16 · 272 阅读 · 0 评论 -
BZOJ1010: [HNOI2008]玩具装箱toy(斜率优化以及斜率优化套路)
题目将n个元素进行分组,每个元素都有一个权值w[i],每组的元素必须是一段连续的元素,将i~j 这一组组带来的费用是(∑jk=iw[k]−L)2(∑k=ijw[k]−L)2(\sum_{k=i}^jw[k]-L)^2,求最小费用分析老子终于写了一道斜率优化啦!!!!先说一下斜率优化的一般步骤: 1. 推出DP方程,大概是f[i=min{f[j]+g(i,j)}的形式,max也...原创 2018-03-19 19:36:01 · 149 阅读 · 0 评论 -
BZOJ2756: [SCOI2012]奇怪的游戏(网络流)(还差代码)
题目原题链接 给定一个N*M的网格,每次操作可以选取相邻两个格子的元素把值+1,求最少操作次数使得所有元素的值相同。分析一个很常见的技巧,黑白染色。 在知道答案之后通过网络流建模满流来简单地判断是否可行。(黑格子进,白格子出) 在知道答案之前通过黑格子白格子的个数直接推导出是否有解,但是不满足二分性质的情况恰好都可以推出解来。代码回头补充...原创 2018-03-19 20:41:56 · 161 阅读 · 0 评论 -
BZOJ 4127 ABS (含对拍程序)(数量剖分、线段树)
各位刷BZOJ的朋友们千万不要同cincout,会RE的!!! 各位刷BZOJ的朋友们千万不要同cincout,会RE的!!! 各位刷BZOJ的朋友们千万不要同cincout,会RE的!!!题目给定一棵树,设计数据结构支持以下操作1 u v d 表示将路径 (u,v) 加d2 u v 表示询问路径 (u,v) 上点权绝对值的和思路明显是个树链剖分嘛 废话!我就是找...原创 2018-02-19 18:35:31 · 231 阅读 · 0 评论 -
BZOJ 3131: [Sdoi2013]淘金(浅谈数位DP高维处理方法不同的原因)
题目原题链接 给定n*n的方格,每个点(i,j)会为点(f(i),f(j))带来一个权值,其中f(i)表示i在十进制下各位数字之积,求最大K个权值的和对1e9+7取模。 其中n达到1e12,k达到1e5分析哎呀妈卡了我好久。。。 以为自己不会数位DP,就不肯好好查错,就发现明明是代码的问题。f(i)的值不是很多,可以用2,3,5,7打表打出来,但是我选择直接用1~9的递归...原创 2018-03-14 20:56:25 · 476 阅读 · 0 评论 -
BZOJ 2480: Spoj3105 Mod
已知数a,p,b,求满足a^x≡b(mod p)的最小自然数x。EXBSGS版子#include<queue>#include<cmath>#include<cctype>#include<vector>#include<cstdio>#include<cstring>#include<iostrea...原创 2018-03-14 23:42:24 · 239 阅读 · 0 评论 -
BZOJ 3530: [Sdoi2014]数数 (关于记忆化哪些元素的选择)
题目原题链接 求<=n的正整数中,有多少个元素不含串s0~sm logn<=1200,m<=100,串的长度和<=1200分析一个数位DP,加上AC自动机来判断是否可以选择。 注意要用到AC自动机的last数组。 注意讨论前导零的情况,不要想着在边界上动手脚。记忆化的选择。关于记忆的问题,因为这道题大多数情况是没有限制以及可以包含0的,所...原创 2018-03-15 09:33:21 · 240 阅读 · 3 评论 -
BZOJ 2434: [Noi2011]阿狸的打字机(AC自动机/Fail树 + BIT + DFS序)
题目题目链接分析这么多串弄个AC自动机吧。。可以在O(n)的时间复杂度弄出那个trie来的然后如果暴力匹配每个y会超时有一种叫做fail树的东西,就是把fail指针作为边弄成一棵树,根还是没变,这样的话每个结点所代表的字符串(rt->该结点)是它所有子树所代表的字符串的后缀。 对于一个询问(x,y),x可以对它的子树产生影响,只需要统计它的子树中有多少个结点是rt-&g...原创 2018-03-08 20:10:06 · 135 阅读 · 0 评论 -
BZOJ2827 千山鸟飞绝 (离散+treap)
题目题目链接好长。。。。。 但是我觉得这个题目的名字特别好。分析尽管感觉是个很弱的题目,好歹是最为数据结构以及 treap的练手题目嘛 首先看起来我们就是需要数据结构去维护个什么东西 坐标比较散,所以我们可以先离散,排个序就可以了,但是要去重!?其实不去也是对的,因为每次都会选择同一个位置 然后就是修改操作 要支持查找最大值、统计元素个数、打上标记(而且是两个),还要分...原创 2018-02-18 11:57:08 · 261 阅读 · 0 评论 -
BZOJ 4520 [Cqoi2016]K远点对(KD-tree+堆)
不要学我的KD-Tree,很不标准,只是不知道为什么把题水过了。话说这个BZOJ真的不行啊,怀疑跟少主家是一样的评测机,哼~。题意已知平面内 N 个点的坐标,求欧氏距离下的第 K 远点对。 k<=100分析既然答案只有一个的话。。。 我想的话是二分猜+KD-tree 时间复杂度大概是60*n*n^1/2 等等。。。K怎么这么小比K大的就搜索,否则不搜索...原创 2018-02-21 21:39:49 · 174 阅读 · 0 评论 -
BZOJ 1797: [Ahoi2009]Mincut 最小割(最小割的充要条件)
题目原题链接 给定一个网络流,判断每条边可否是最小割以及是否一定是最小割。分析大概是个结论题吧 首先跑最大流,然后在残余网络上面进行操作。 如果u->v满流并且还有一条增广路,那么这条边就是删掉了也不会影响最大流,如果没有增广路,那么这条边才可以是最小割里面的边。 跑SCC 如果u->v之间有流并且两者不在同一强连通分量,则这条边可以是最小割。 如果u,v有流并...原创 2018-03-15 15:57:12 · 365 阅读 · 1 评论 -
BZOJ 4566: [Haoi2016]找相同字符(后缀数组的两种做法)
题目原题链接 有两个字符串,询问有多少个相同的子串。 两个字符串长度<=2e5分析后缀数组/后缀自动机裸题,不过我暂时只会后缀数组。然而我做了一上午。。。。我觉得有很大一个问题就是网上有两种题解,然而我没有意识到这两个算法不一样,所以搞混得挺惨的,关键是这两个方法都是用单调栈在维护哎。。首先这道题暴力做法是两两枚举来自不同串所有后缀,它们对答案的贡献就是他们的...原创 2018-03-16 15:33:41 · 323 阅读 · 0 评论 -
BZOJ 3503: [Cqoi2014]和谐矩阵(高斯消元)
题目给定一个矩形,要求你去填上0/1,其中每个格子周围4个格子+自己的1的个数位偶数,求一个方案数,不能全为0,有SPJ。分析暴力算法是一个裸的高斯消元,把每个元素都列出来,而且可以过。进阶版的就是知道第一排元素之后,可以递推出后面的所有元素,如果m+1排元素为0,那么就是可行解。把所有自由元弄成1可以防止出现全0的情况。递推的时候可以用状压。找可行解的方法是先算出...原创 2018-03-22 15:43:58 · 159 阅读 · 0 评论 -
BZOJ 3809: Gty的二逼妹子序列(莫队+分块)
题目Autumn和Bakser又在研究Gty的妹子序列了!但他们遇到了一个难题。 对于一段妹子们,他们想让你帮忙求出这之内美丽度∈[a,b]的妹子的美丽度的种类数。 为了方便,我们规定妹子们的美丽度全都在[1,n]中。 给定一个长度为n(1<=n<=100000)的正整数序列s(1<=si<=n),对于m(1<=m<=1000000)次询问“l,r,a...原创 2018-03-12 22:59:43 · 221 阅读 · 0 评论 -
BZOJ 4031: [HEOI2015]小Z的房间(生成树计数)
题目生成树计数(这么总结题意真的好嘛。。。)分析Matrix Tree定理裸题 而Matrix Tree定理就是用来生成树计数的 行列式的求法: 对于一个矩阵进行高斯消元 最终案为(-1)^S*(主对角线之积),其中S位行与行之间交换的次数Matrix-Tree定理:用于计算生成树计数问题 理论基于基尔霍夫(Kirchhoff)矩阵,但是这里不去证明了: 介绍两个矩阵:...原创 2018-03-22 21:20:04 · 206 阅读 · 0 评论 -
BZOJ 1565: [NOI2009]植物大战僵尸(最大权闭合子图+拓扑排序)(最大权闭合子图介绍)
题目有一个N*M的方格,每个格子有一个权值,每个格子可以保护制定格子以及它后面的格子,只有当一个格子没有被保护的格子的时候才能被获取,求最大权值(原权值有正负)。分析最大权闭合子图的裸题。然而最大权闭合子图是啥?概念闭合子图:选取一些结点使得这些结点所有出边都不会指向当前结点们之外的边。最大权闭合子图:选取权值和最大的它的应用就比如说大学选课,需要先修课...原创 2018-03-21 23:44:48 · 153 阅读 · 0 评论 -
(要重新推导的坑!)BZOJ 4555 [Tjoi2016&Heoi2016]求和 (NTT)
题目大意BZOJ4555[Tjoi2016&Heoi2016]求和分析首先你必须要知道第二类斯特林数的通项公式,也可以自己推,但这时你也需要知道第二类斯特林数的含义是什么,真坑。。。然后化简成卷积的形式就可以了,上NTT。额。。。为什么我不写呢?一个是因为我自己也不是很会推另外是我并不是很会编辑用数学公式(当然主要原因是第一个咯)其实我只是想打个NTT而...原创 2018-03-06 15:05:34 · 142 阅读 · 0 评论 -
BZOJ 3261 最大异或和(可持久化trie)
题目大意给定一个非负整数序列{a},初始长度为N。 有M个操作,有以下两种操作类型: 1、Ax:添加操作,表示在序列末尾添加一个数x,序列的长度N+1。 2、Qlrx:询问操作,你需要找到一个位置p,满足l<=p<=r,使得: a[p] xor a[p+1] xor … xor a[N] xor x 最大,输出最大是多少。范围是3e5分析带区间的二进制tri...原创 2018-03-06 17:08:25 · 214 阅读 · 0 评论 -
BZOJ 4828: [Hnoi2017]大佬(状态搜索)
题目大意挺多操作的,自己看 原题链接分析首先求出最大怼大佬的天数,因为补血和攻击操作是没有关系的,所以可以DP求出最多怼大佬多少天。然后关于F和T的关系处理是很巧妙地,爆搜!!,爆搜出来状态数并不多,处理出来所有可能的值以及所需要的天数然后用一个他们叫tow-pointer的神秘算法。。。其实就是两个指针因为不能让大佬的自信为负数,所以要保证两次直接怼的操作不能让,就...原创 2018-03-29 11:21:01 · 240 阅读 · 0 评论