自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

hhz6830975的博客

hhz6830975的博客

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

原创 bzoj1095【ZJOI2007】捉迷藏 (动态点分治总结)

动态点分治,就是在普通点分治的基础上,把每一层重心与上一层的重心连起来,形成一颗点分树,然后在每个点维护该点作重心时管辖的子树的信息。修改某个点时就从点分树中该点的位置开始,一路向它的父亲更新,因为点分树深度lognlognlogn,所以一次最多修改lognlognlogn个点。本题要求最远一对黑点的距离,因此用堆维护距离: C堆:在点分树每个结点u维护以u为根的子树内各个黑点到u管辖子树的...

2018-04-12 21:58:17 230

原创 洛谷 P4068 [SDOI2016]数字配对

两种建图方法: 1、每种数拆点ai,a′iai,ai′a_i,a_i',然后O(n2)O(n2)O(n^2)暴力求出可以匹配的ai,ajai,aja_i,a_j,连边(ai,a′j,INF,c[i]∗c[j])(ai,aj′,INF,c[i]∗c[j])(a_i,a_j',INF,c[i]*c[j])和(a′i,aj,INF,c[i]∗c[j])(ai′,aj,INF,c[i]∗c[j])(a_...

2018-04-12 20:11:32 236

原创 洛谷 P2488 [SDOI2011]工作安排

三倍经验:洛谷 P2050 [NOI2012]美食节、洛谷 [SCOI2007]修车这题感觉就是p2050的弱化版,而且还不用倒着做。。 连边S->产品,容量c,费用0;产品-> 员工,容量INF,费用0;员工->T各连s+1条,容量为分段函数各段长度(最后一条INF),费用为愤怒值。然后跑费用流即可。因为保证各段愤怒值单调递增,所以一定从前面的段选起。 好像不用动态加边...

2018-04-12 19:00:30 219

原创 洛谷 P4037 [JSOI2008]魔兽地图(树形dp)

参考: https://www.cnblogs.com/huibixiaoxing/p/8541096.html http://hzwer.com/5198.html神题。 容易发现这是个有依赖关系的背包,但不同的是,这里各个依赖关系树中是父亲依赖儿子的。 设物品iii的力量、价格分别为p[i],w[i]p[i],w[i]p[i],w[i],如果是高级物品直接处理一下就算出来了;son...

2018-04-12 16:44:20 217

原创 洛谷 P2597 [ZJOI2012]灾难(拓扑排序+lca)

一道很有意思的题目。 首先看到这种题目很容易想到拓扑排序。然后我们考虑建树,让食物成为消费者的父亲,这样食物灭绝其子树就会灭绝。但一个消费者有多个食物,让谁成为它的父亲?我们假设按拓扑序建树,那么加入一个结点u的时候,其食物一定全部在树上了。u灭绝的条件是其所有食物灭绝,也就等价于所有食物的lca灭绝,因此让lca作为u的父亲即可。 注意:可能存在多个生产者,这样建出的树是有多个根的,因此我们...

2018-04-12 14:56:55 238

原创 洛谷 P2486 [SDOI2011]染色(LCT)

很经典的一道题目,这里介绍LCT的做法。 对splay的每个结点维护当前以该结点为根的子树内第一个结点和最后一个结点(即对应区间两端)的颜色,以及该子树内颜色段数。pushup合并的时候,如果合并的两个区间相邻部分的颜色不同,新区间的颜色段数就是两个区间的和,如果相同就-1。修改就打lazy标记。注意打标记要同时更新,不能等pushdown再更新。另外翻转的时候还要交换区间两端颜色。似乎树剖...

2018-04-12 11:41:51 421

原创 洛谷 P2463 [SDOI2008]Sandy的卡片(二分+后缀数组)

先差分(去掉每个串第一个元素),然后把所有串连成一个,中间插一些很大且各自不同的数分割开,建SA,最后二分答案,check时检查能否有连续的一段height全部大于等于枚举的答案len且原本来自不同串的后缀个数为n。 不知为什么wa了一个点。。#include <iostream>#include <cstdio>#include <cstring>...

2018-04-11 21:26:50 216

原创 洛谷 P3965 [TJOI2013]循环格(费用流)

本题最关键的一点在于转化条件。完美循环格,即所有点都在一些环中的条件等价于:所有点入度均为1。 证明:显然,如果某个点入度为0,那么这个点一定不在环中;如果某个点入度大于1,因为每个点出度都为1,那么一定有一些点入度为0,不符合条件。 这样就是一个很简单的费用流了。...

2018-04-11 13:47:58 137

原创 洛谷 P3872 [TJOI2010]电影迷(最小割)

首先有一道题可以作为此类问题的模型:洛谷 P1646 [国家集训队]happiness 简单地说就是每个点由S和向T连边,分别表示选/不选该点;点与点之间连边,表示两个点分别选某一状态的额外权值。本题: S向每个点连边,容量1000-v;每个点向T连边,容量1000;每组dXY由y向x连边,容量d。n*1000-最小割即为答案。总结技巧: 1、权值取负可以化最大值为最小割。 2、...

2018-04-08 21:47:35 223

原创 洛谷 P4303 [AHOI2006]基因匹配(LCS+树状数组)

这题一看不是裸的lcs嘛。。 但看看数据范围,显然不支持传统O(n2)O(n2)O(n^2)算法。 注意到这样一个性质:每个数均只出现5次。考虑这样的lcs做法: 设f[i][1~5]表示s2[1~i]与整个s1的lcs最大长度,且s2[i]必须在lcs中,且s2[i]在s1中第(1~5)次出现。 那么枚举s2[i]在s1中出现的位置pos[i][j],f[i][j]=max{s2[k...

2018-04-08 18:21:58 270

转载 洛谷 P3809 【模板】后缀排序(后缀数组)

http://www.cnblogs.com/jinkun113/p/4743694.html https://www.luogu.org/blog/black-jokers/solution1-p3809 https://xminh.github.io/2018/02/27/%E5%90%8E%E7%BC%80%E6%95%B0%E7%BB%84-%E6%9C%80%E8%AF%A6%E7%...

2018-04-07 18:36:51 244

转载 hdu 3068 最长回文(Manacher模板)

https://segmentfault.com/a/1190000008484167#include <bits/stdc++.h>using namespace std;const int maxn=300010;char s1[maxn],s2[maxn];void init(){ int len=strlen(s1),j=0; s2[j++]='$...

2018-04-06 15:46:06 112

原创 洛谷 P3796 【模板】AC自动机(加强版)

#include <bits/stdc++.h>using namespace std;const int maxl=1e6+10;const int maxn=160;const int maxm=80;int n;char T[maxl],S[maxn][maxm];struct node{ node * son[26],* fail; int id...

2018-04-02 19:05:36 164

转载 hdu 1695 GCD(莫比乌斯反演+分块模板)

https://blog.sengxian.com/algorithms/mobius-inversion-formula公式:约数形式F(n)=∑d|nf(d)⟺f(n)=∑d|nμ(d)F(nd)=∑d|nμ(nd)F(d)F(n)=∑d|nf(d)⟺f(n)=∑d|nμ(d)F(nd)=∑d|nμ(nd)F(d)F(n)=\sum_{d|n}f(d)\quad\Longlef...

2018-03-27 21:00:02 193

原创 洛谷 P3803 【模板】多项式乘法(FFT)

算法导论上讲得很好,暂时先不写了。补充一点书上没有的:项数不是2的整数幂时,要在前面添若干项补成2的整数幂,补的各项系数为0。注意细节:数组不能只开到n+m (2×106)n+m (2×106)n+m\ (2 \times 10^6),因为FFT要求项数必须补到2的整数幂,而大于等于n+mn+mn+m的最小2的整数幂约为26万,所以数组大小要开到这个以上。另外,输出的时候注...

2018-03-24 21:14:14 259

原创 洛谷 P3386 【模板】二分图匹配

匈牙利算法dfs版,原理是不断找增广路(交替路径)。写的时候也可以理解为:为左边的未匹配点u找右边的点v完成匹配,如果v未匹配就直接匹配,如果已匹配就看v原来的匹配点match[v]能否找到新的匹配点,递归下去,如果可以,那么u和v匹配,match[v]与新的匹配点匹配,这样匹配数+1。时间复杂度O(VE)O(VE)O(VE)#include <iostream>#inclu...

2018-03-17 14:04:46 125

原创 洛谷 P3381 【模板】最小费用最大流

一个网络图虽然最大流确定,但达到最大流的方案并不唯一。如果对于每条边,都加一个费用f,表示这条边流过单位流量的代价,求达到最大流时的最小费用,这就是最小费用最大流问题。解决方法:EK费用流或zwk费用流。这里只讲EK费用流。采用贪心的思想。我们每次增广时都选择费用最小的一条。这样,因为最大流是确定的,因此最后结束时得到的一定是最大流;因为采用贪心的方法,所以费用一定最小。具体操作:建图...

2018-03-16 14:16:52 375

原创 洛谷 P1402 酒店之王(dinic模板)

将1个人拆成2个点,常规建图。#include <iostream>#include <cstdio>#include <cstring>#include <queue>using namespace std;const int maxn=450;const int INF=0x3f3f3f3f;int n,p,q,S=0,T;...

2018-03-16 13:18:18 159

原创 洛谷 P4178 Tree(点分治模板)

点分治用于解决与树上路径有关的统计问题。点分治的思想类似一般的分治:对于一棵树,一方面处理跨越不同子树的路径,即经过根的路径(相当于分治后合并时考虑跨越不同区间的影响),另一方面递归到各个子树中处理子树内的路径(相当于分治中考虑区间内的问题)。而实际处理中,我们希望递归层数尽量小。因此,我们在处理一棵无根树时,选取的根要满足:其最大子树的大小尽量小。这个根称为重心。总结起来,点分治流程...

2018-03-06 13:24:29 286

原创 hdu 2191(单调队列优化多重背包模板)

题目链接裸的多重背包,数据也很水,只是打个模板用的一般的多重背包时间复杂度O(V∑N)O(V∑N)O(V \sum N),二进制优化后O(V∑logN)O(V∑logN)O(V \sum logN),但有的题必须O(N⋅V)O(N⋅V)O(N \cdot V)才能过,这就必须用单调队列优化了设物品iii体积v[i]v[i]v[i],价值w[i]w[i]w[i],个数n[i]n[i]n[...

2018-03-04 13:59:02 623

原创 CF149D Coloring Brackets(区间dp,记忆化搜索)

设dp[l][r][x][y]dp[l][r][x][y]dp[l][r][x][y]为区间[l,r][l,r][l,r]两端颜色分别为xxx、yyy的方案数(0为不染色,1为红色,2为蓝色)对于dp[l][r][x][y]dp[l][r][x][y]dp[l][r][x][y],若保证[l,r][l,r][l,r]为一个合法的序列,则:1.若l+1=rl+1=rl+1=r,显然序列为...

2018-03-04 13:58:34 242

原创 [kuangbin带你飞]专题二十二 区间DP

A    ~~zoj 3537B    ~~LightOJ 1422设dp[i][j]dp[i][j]dp[i][j]为区间[i,j][i,j][i,j]的最小花费边界条件dp[i][i]=1dp[i][i]=1dp[i][i]=1考虑区间[i,j][i,j][i,j],对于衣服iii,最差情况下,[i...

2018-03-04 13:58:02 132

原创 [kuangbin带你飞]专题二十 斜率DP

A裸题,不写了B    ~~hdu 2829设dp[i][j]dp[i][j]dp[i][j]为前iii个点分jjj段的最小值设val[i][j]val[i][j]val[i][j]为[i,j][i,j][i,j]的点为一段时的值,val[i]val[i]val[i]表示val[1][i]val[1][i]val[1][i]sum[i]s...

2018-03-04 13:57:25 176

原创 洛谷 P3195 [HNOI2008]玩具装箱TOY(斜率优化入门)

这是一道经典的斜率优化入门题,就用这题来作个总结好了前言:斜率优化的思想其实和高中数学的线性规划有相似之处,因此建议没学过的同学先了解一下线性规划首先提一下单调队列优化:当dp方程为dp[i]=a[i]+b[j]dp[i]=a[i]+b[j]时,这个方程是O(n2)O(n^2)的这时用单调队列可以将其优化为O(n)O(n),具体方法这里不再赘述而dp方程为dp[i]=a[i]⋅...

2018-03-04 13:56:30 439

原创 洛谷 P4032 「CodePlus 2017 12 月赛」火锅盛宴(splay+堆)

离线读入操作,按时间排序分别开两个splay维护煮熟的(T[0])和加入但未煮熟的(T[1])食物,关键字都为t其中T[1]要在每个结点按煮熟的时间(t+s[i])维护一个小根堆(这里直接用stl的优先队列)操作0可以分解为:t时刻将食物插入T[1];t+s[i]时刻将食物从T[1]删除,将食物插入T[0]操作1:找T[0]最小值,删除;若T[0]空则angry操作2:找T[0...

2018-03-04 13:55:57 145

原创 洛谷 P1903 【模板】分块/带修改莫队(数颜色)

莫队算法是一种优化的暴力适用于已知[l,r],可以快速推出[l-1,r],[l+1,r],[l,r-1],[l,r+1]的题目(一般是O(1))它通过调整询问操作的顺序来降低复杂度以l为第一关键字,l在同一分块时以r为第二关键字进行排序这样时间复杂度是O((n+m)*sqrt(n))涉及修改时,再以时间为第三关键字对每个查询记录之前最近的修改编号,操作时记录当前已修改多少个...

2018-03-04 13:55:13 186

原创 洛谷 P3835 【模板】可持久化平衡树

其实在fhq treap的基础上稍作修改就可以了每split和merge到一个点都复制一个就ok复制的地方见代码中标注 #include <iostream> #include <cstdio> #include <cstring> #include <cstdlib> #include <...

2018-03-04 13:54:37 163

转载 洛谷 P3369 【模板】普通平衡树 (fhq treap)

传送门:http://www.yhzq-blog.cc/fhq-treap%E6%80%BB%E7%BB%93/ #include <iostream> #include <cstdio> #include <cstring> #include <cstdlib> #include <ctime&g...

2018-03-04 13:53:43 488

原创 洛谷 P3157 动态逆序对(归并排序+树状数组套主席树)

先归并排序处理出初始逆序对数然后树状数组套主席树进行修改和查询删除数x时(设x位置为pos[x]),从原逆序对数中减去与该数有关的逆序对数,即([1,pos[x]-1]中大于x的数的个数)+([pos[x]+1,n]中小于x的数的个数),并从树状数组中将x删除另外注意存答案要用long long,否则会爆 #include <iostream> #in...

2018-03-04 13:52:08 184

原创 洛谷 P2617 Dynamic Ranking(树状数组套主席树模板)

我是看这个学会的:https://www.cnblogs.com/Empress/p/4659824.html树状数组套主席树可以实现带修改的主席树树状数组每个元素内含一颗权值线段树,初始化逐个动态加点,修改同理,空间复杂度 O(nlognlogn)然而我并不知道这和主席树有什么关系 #include <iostream> #include <c...

2018-03-04 13:50:48 220

空空如也

空空如也

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

TA关注的人

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