BZOJ
linkfqy
A link to FQY.
展开
-
【快速幂、组合数学】BZOJ1008 [HNOI2008]越狱
题面在这里BZOJ竟然有这么水的题……考虑不越狱的状态,显然是m⋅(m−1)n−1m\cdot (m-1)^{n-1} 因为第一个人的信仰随意,后面每个人的信仰都只有n-1种选择总共有mnm^n种方案,那么答案就是mn−m⋅(m−1)n−1m^n-m\cdot (m-1)^{n-1}示例程序:原创 2017-06-30 09:16:43 · 943 阅读 · 6 评论 -
【Dinic求最大流】BZOJ1066 [SCOI2007]蜥蜴
题面在这里又是一道网络流题这种题型还需要多练习啊……减少思考建模的时间……不难发现,可以把蜥蜴看做流,每根石柱都是点 曼哈顿距离不超过d的点之间可以建边 但是每个石柱能经过的蜥蜴只数有限制,那么就拆点建边 最后建立超级源点和超级汇点即可。示例程序:原创 2017-06-29 20:45:41 · 737 阅读 · 4 评论 -
【欧拉筛/线性筛】BZOJ2813 奇妙的Fibonacci
题面在这里一道很好的数论题……让人思考很多……参考博客:斐波那契数列的性质 首先有这个公式: n|m⇔fn|fmn|m\Leftrightarrow f_n|f_m 那么题目就转化为:询问i有多少个因子,以及所有因子的平方和可以用欧拉筛一边处理一边统计: eie_i表示i的最小质因数的次数 did_i表示i除去最小质因数后的数 gig_i表示i的因子个数 fif_i表示i的因子的平方和原创 2017-06-29 10:48:44 · 789 阅读 · 4 评论 -
【轮廓线DP,状压DP】BZOJ1087 [SCOI2005]互不侵犯King
题面在这里轮廓线DP的经典题……可以发现,对于当前点(i,j),只有前面n+1个格子与其有关(如下图) 那么这n+1个位置就是(i,j)的轮廓线。 把轮廓线上的状态用位运算压缩一下即可。f[c][s][k]f[c][s][k]表示位置c(滚动数组优化空间),轮廓线上状态s,已经放了k个王的方案数 那么显然,若(i,j)不放王:f[c][ss][k]+=f[c^1][s][k];(ss是新轮原创 2017-06-09 08:08:23 · 1108 阅读 · 0 评论 -
【结论+暴搜】BZOJ1053 [HAOI2007]反素数ant
题面在这里其实就是一道结论题观察可以发现,任意反素数拆分: m=pk11⋅pk22……pknnm=p_1^{k_1}\cdot p_2^{k_2}……p_n^{k_n} 其中,若 1≤i≤j≤n1\le i\le j\le n则有pi<pj,ki≥kjp_i\lt p_j,k_i\ge k_j 其实可以反证一发得到……然后就爆搜了 代码:原创 2017-06-29 15:42:46 · 810 阅读 · 4 评论 -
【并查集】BZOJ1050 [HAOI2006]旅行comp
题面在这里又是一道水题……可以直接枚举最大边与最小边, 那么位于这之间的边都可以走, 用并查集判断S到T是否联通即可示例程序:原创 2017-06-30 11:09:48 · 1065 阅读 · 3 评论 -
【斜率优化DP】BZOJ1096 [ZJOI2007]仓库建设
题面在这里典型的斜率优化DP……定义f[i]f[i]表示前i个工厂已经处理(在第i个工厂修建仓库)的最小费用 剩下的事情,就是去枚举离i最近的仓库是哪个 f[i]=Min{f[j]+c[i]+d[i]∗(g[i]−g[j])−(s[i]−s[j])}f[i]=Min\{f[j]+c[i]+d[i]*(g[i]-g[j])-(s[i]-s[j])\} 其中g[]是p[]的前缀和,s[]是d[]*原创 2017-06-08 12:53:55 · 954 阅读 · 2 评论 -
【斜率优化DP】BZOJ1010 [HNOI2008]玩具装箱toy
题面在这里一道典型的斜率优化DP……很明显,定义f[i]f[i]表示前i个玩具的费用 可以得到: f[i]=Min{f[j]+(i−j−1+s[i]−s[j]−L)2}f[i]=Min\{f[j]+(i-j-1+s[i]-s[j]-L)^2\} 其中s[]s[]是c[]c[]的前缀和,方便统计加和 如下变换: f[i]=Min{f[j]+((s[i]+i−L−1)+(−s[j]−j))2}原创 2017-06-07 22:31:29 · 938 阅读 · 0 评论 -
【最小费用最大流】BZOJ1070 [SCOI2007]修车
题面在这里最小费用最大流的经典题……读题后应该就能意识到:这种资源分配型的问题一般都是网络流然后就去想: 答案要求最短的平均时间,其实就是最短的总时间(相加) 由于求最小值,会往最小费用上面想那么把花费的时间看做费用,流量就可以限制使得方案合法按如下方法建图: 1. 把每个维修人员拆成N*M个点,Ai,jA_{i,j}表示给倒数第j个给i修车 2. S到每个顾客建边。容量=1,费用=0 3原创 2017-05-31 21:24:10 · 730 阅读 · 0 评论 -
【最小割+对偶图=最短路】BZOJ1001 [BeiJing2006]狼抓兔子
题面在这里对偶图应用的经典题……初看题面,可以明显发现这是一道最小割的裸题 但是数据太大,直接T掉(貌似Dinic可以过)仔细观察可以发现,这是一个S-T完全图 那么就可以转化为对偶图的最短路问题 关于最短路求最大流,可以参考周冬《浅析最大最小定理在信息学竞赛中的应用》下面讲一点自己的想法: 对偶图,指的是对于原图G,新建图G’ 其中G’的所有点对应G中的所有面,G’中的边对应G中两个面的原创 2017-05-30 18:57:08 · 1346 阅读 · 3 评论 -
【A*求k短路】BZOJ1975 [SDOI2010]魔法猪学院
题面在这里A*求k短路的经典题目,关于A*可以看这里附上代码:原创 2017-05-23 20:56:17 · 496 阅读 · 0 评论 -
【最短路径树+可并堆/树链剖分】BZOJ1576 [Usaco2009 Jan]安全路经Travel
题面在这里此题最重要的思想就是建立“最短路径树”。 何为最短路径树?就是最短路经过的所有点和边构成的一棵树(以前竟然没有发现这个东西)考虑不经过最短路的最后一条边,其实就是把点x到父亲的边去掉 那么剩下的最短路径必定是这样的: 由一条不在树上的边(u,v)连接x子树和其余部分,则路径为1~u~v~x 可以发现,整个过程只走了一次不在树上的边,这样就保证了答案必定最优 这个方案的答案为:ds原创 2017-05-11 20:52:10 · 1081 阅读 · 3 评论 -
【树状数组+主席树】BZOJ1901 [ZOJ2112]Dynamic Rankings
题面在这里树套树第一题……考虑没有修改(POJ 2104)的情况,就是经典的主席树了 其实就是一个静态的前缀和,利用容斥原理求区间信息但是如果有修改操作呢? 不过是维护这个前缀和罢了。 当然有一个想法,就是修改时O(n)更新后面的所有位置(受此次修改的影响) 这样就太慢了,直接树状数组比较好。 树状数组的每一个单位都是一棵主席树,整个管辖范围的修改都记到它上面修改操作就在树状数组上依次修改原创 2017-05-02 21:30:24 · 1282 阅读 · 1 评论 -
【带修改莫队】BZOJ2120 数颜色
题面在这里带修莫队第一题……十分简单,没有什么可讲的 不会的可以看这里但是查了一个下午……心态奔溃了 原因竟然是pow(n,2/3)的2/3是整数除,外加一些奇怪的东西附上代码:#include<cstdio>#include<algorithm>#include<cmath>using namespace std;const int maxn=10005,maxs=1000005;i原创 2017-04-27 16:24:53 · 1173 阅读 · 1 评论 -
【莫队算法】BZOJ2038 [2009国家集训队]小Z的袜子
题面在这里莫队的经典题…… 对于已知区间[L,R],它的答案是: ∑C2c[i]的个数C2R−L+1\frac{\sum C_{c[i]的个数}^2}{C_{R-L+1}^2} 由于处理分数比较麻烦,所以我们只要维护分子即可 即:对于变化的c[i]个数(设为x),维护C2xC_x^2 减去原来的,加上后面的即可附上代码:#include<cstdio>#include<algorithm原创 2017-04-26 14:07:06 · 1089 阅读 · 1 评论 -
【主席树|莫队|离线树状数组】BZOJ1878 [SDOI 2009]HH的项链
题面在这里这道题有三种解法,以下分别介绍(等我A掉会补全)【主席树】关于主席树戳这里造一个lst[i]表示位置i的这个数上一次出现的位置(如果没有就是0) 那么对于每次询问L~R范围里的数字种数 其实就是询问对于L≤i≤RL≤i≤R,满足lst[i]<Llst[i]<L的个数 那么就很好搞了,对lst造N棵值域线段树 询问就直接找到L-1这个位置看它前面有几个 复杂度O(Qlogn)O(Q原创 2017-04-25 07:18:18 · 1058 阅读 · 1 评论 -
【并查集+离线】BZOJ1015 [JSOI2008]星球大战starwar
星球大战starwar 省选前的信心题……题面: Description 很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统治者整个星系。某一天,凭着一个偶然的 机遇,一支反抗军摧毁了帝国的超级武器,并攻下了星系中几乎所有的星球。这些星球通过特殊的以太隧道互相直 接或间接地连接。 但好景不长,很快帝国又重新造出了他的超级武器。凭借这超级武器的力量,帝国开始有计划 地摧毁反抗军占原创 2017-04-23 15:36:38 · 780 阅读 · 1 评论 -
【Treap/非旋转Treap】BZOJ1503 [NOI2004]郁闷的出纳员
郁闷的出纳员 非旋转Treap的经典题啊…… 题面如下: DescriptionOIER公司是一家大型专业化软件公司,有着数以万计的员工。作为一名出纳员,我的任务之一便是统计每位员工的工资。这本来是一份不错的工作,但是令人郁闷的是,我们的老板反复无常,经常调整员工的工资。如果他心情好,就可能把每位员工的工资加上一个相同的量。反之,如果心情不好,就可能把他们的工资扣除一个相同的量。我真不知道除了原创 2017-04-20 20:04:40 · 796 阅读 · 1 评论 -
【Treap/非旋转Treap】BZOJ3224 [Tyvj1728]普通平衡树
BZOJ 3224 平衡树裸题…… 写了Treap/非旋转Treap两个版本。 题面如下:Description您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作: 1. 插入x数 2. 删除x数(若有多个相同的数,因只删除一个) 3. 查询x数的排名(若有多个相同的数,因输出最小的排名) 4. 查询排名为x的数 5. 求x的前驱(前驱定义为小于x,且最大的数原创 2017-04-18 20:05:24 · 923 阅读 · 2 评论 -
【我可能学了假线段树】【线段树】BZOJ1798 [AHOI2009]Seq 维护序列seq
题面在这里题解之前写的线段树都是数组版的,代码巨长…… 今天试着链式储存线段树,发现极其好用! pushdown,pushup,添加标记等等的操作都可以写成成员函数,代码十分简洁!而且Insert和Query操作都借鉴了ZH神犇的写法,非常省代码 所以说,我以前可能学了假的线段树另外,本题有一个注意点,就是如果一个节点同时拥有两种标记,会有优先级的问题 你不知道到底是先加还是先乘 我们可以原创 2017-04-13 21:33:42 · 800 阅读 · 0 评论 -
【树链剖分+线段树】BZOJ1036 [ZJOI2008]树的统计Count
题面在这里典型的树链剖分……不解释了 不懂的可以看这里#include<cstdio>#include<algorithm>using namespace std;const int maxn=30005,maxe=60005;int n,q;int son[maxe],nxt[maxe],lnk[maxn],tot;void add(int x,int y){ son[++t原创 2017-04-08 20:17:10 · 486 阅读 · 1 评论 -
【Splay】BZOJ1500 [NOI2005]维修数列
维修数列题面如下: 这是Splay的终极模版题,思路非常清晰 这里提几个难点:1.求最大子序列 我们可以对每个节点维护3个信息: lm,rm,ma分别表示该段序列的最大前缀和、最大后缀和、最大子序列 那么maintain的时候就可以由子节点更新信息: lm=max(s[0]->lm,s[0]->sum+x,s[0]->sum+x+s[1]->lm); rm=max(s[1]->rm原创 2017-04-02 12:13:43 · 974 阅读 · 1 评论 -
【DP+最短路】BZOJ1003 [ZJOI2006]物流运输
题面在这里远古时期的省选题…… 所以现在看来有点水如果无视时间的变化,那么就是最简单的最短路了但是随着时间的推移,有些码头被关闭 这时就需要重新规划路线。难道这看着不像是DP吗?f[i]表示到第i天的最小费用,剩下的不用说了…… 把最短路的结果作为转移方程的代价即可。示例程序:原创 2017-07-02 10:35:02 · 1108 阅读 · 3 评论 -
【堆,贪心】BZOJ1029 [JSOI2007]建筑抢修
题面在这里刷水题ing……显然需要贪心。 会有一种想法,就是对结束时刻排序维护一个最大利用时刻lst,在此时刻之前都被利用了1.若当前建筑可以在损毁之前被修复,就修复(增加答案) 2.否则,尝试在之前建筑中寻找所需时间最大的来替换当前(答案不变,但花费的总时间变小了)示例程序:原创 2017-07-02 16:36:24 · 993 阅读 · 2 评论 -
【上下界最小流】BZOJ2502 清理雪道
题面在这里典型的上下界网络流题目把清理雪道的人看作流 那么每条雪道至少被清理一次 即流量至少为1另有: S到所有点的流量无限制 所有点到T的流量无限制套用“有源汇上下界最小流”即可示例程序:原创 2017-07-07 11:24:20 · 848 阅读 · 3 评论 -
【线段树】BZOJ1012 [JSOI2008]最大数maxnumber
题面在这里又在A水题……这个不用我多说了吧,随便套个什么数据结构就行了示例程序原创 2017-07-17 12:00:17 · 562 阅读 · 0 评论 -
【二分+上下界网络流】BZOJ2406 矩阵
题面在这里好题,好题啊!!此题乍一看好像和网络流完全没有关联 其实暗藏玄机题面不讲人话…… 其实就是使矩阵A-B的每一行每一列的绝对值的最大值最小显然可以看出要二分 枚举一个当前的最大值M,则下式恒成立: |SAi−SBi|≤M\vert S_{Ai}-S_{Bi} \vert \le M 等价于下式: SAi−M≤SBi≤SAi+MS_{Ai}-M \le S_{Bi} \le S_{原创 2017-07-07 20:11:32 · 1188 阅读 · 3 评论 -
【bitset乱搞】BZOJ3687 简单题
题面在这里最喜欢这种乱搞题了因为异或两次就等于没有异或 所以只需要记录不同算术和的奇偶即可 用一个bitset存 假设已经统计好了前面一部分算术和,新加一个x 那么每个数加x或不加,新的bitset就是(S<<x)^S果然乱搞题最好了,代码又短 示例程序:原创 2017-07-09 09:54:27 · 840 阅读 · 0 评论 -
【2-SAT】BZOJ2199 [Usaco2011 Jan]奶牛议会
题面在这里2-SAT经典题……没什么好说的,直接上代码吧原创 2017-07-17 22:10:36 · 723 阅读 · 1 评论 -
【平面图判定+2-SAT验证】BZOJ1997 [Hnoi2010]Planar
题面在这里因为平面图有一个性质,就是边数不超过3N-6 所以可以首先确定边数大于3N-6的case了 那么边数就成了O(n)O(n)级别的了 然后是典型的2-SAT问题: 每条边要么在哈密顿回路的内侧,要么在外侧 Tarjan缩点判定即可示例程序:原创 2017-07-30 20:01:33 · 1146 阅读 · 0 评论 -
【树分治】BZOJ2152 聪聪可可
题面在这里树分治的经典题目……统计路径好办,问题在于如何得到答案 因为只需要求模3等于0的路径个数,直接记三个量 分别表示模3等于0、模3等于1、模3等于2的个数 记为num0,num1,num2num_0,num_1,num_2 然后对答案的贡献就是num20+2∗num1∗num2num_0^2+2*num_1*num_2示例程序:原创 2017-07-09 22:40:56 · 701 阅读 · 0 评论 -
【线段树优化建图+最短路】BZOJ3073 [Pa2011]Journeys
题面在这里此题题意很简单,但是会发现直接暴力建边的话,边数会非常多 所以我们就需要一个新姿势:线段树优化建图暴力建图有n2mn^2m条边 考虑一个较为高效的方法: 对于[a,b]向[c,d]连单向边这个子问题,可以新建辅助节点p [a,b]的所有点向p连边,边权为1,p向[c,d]所有点连边,边权为0 这样边数就减为nmnm级别,但还是太多可以发现,上述优化是基于区间的线性操作 这就为我原创 2017-07-23 14:20:08 · 1523 阅读 · 2 评论 -
【KMP,next树】BZOJ3670 [Noi2014]动物园
题面在这里先KMP建出next树,那么num[i]就是i的祖先中最大的编号小于等于i/2的深度用一个指针维护一下就可以得到了示例程序:#include<cstdio>原创 2017-08-07 20:10:53 · 893 阅读 · 0 评论 -
【分块】BZOJ4216 Pig
题面在这里典型的分块题……没什么好说的,直接分块搞就好了示例程序:原创 2017-08-07 21:39:10 · 370 阅读 · 0 评论 -
【线段树优化建图+费用流】BZOJ4276 [ONTAK2015]Bajtman i Okrągły Robin
题面在这里很显然是网络流。 可以用流量作为使其符合题意的限制条件 那么就是刷最大费用最大流经过上面的分析,很快就有了建图方案:源点到所有贼建边,容量1,费用ci每个贼向能作案的时间点建边,容量1,费用0每个时间点向汇点建边,容量1,费用0边数有点多,那么就线段树优化建图即可示例程序:原创 2017-07-23 22:37:25 · 1380 阅读 · 1 评论 -
【单调栈】BZOJ1007 [HNOI2008]水平可见直线
题面在这里A水题ing……多画几个例子,就会发现,其实要我们维护一个类似下凸壳的东西 果断对斜率由小到大排序然后就会发现,对于3条直线i,j,ki,j,k满足ki<kj<kkk_i<k_j<k_k 若xi,k≤xi,jx_{i,k}\le x_{i,j}则j一定被k所覆盖然后就开个单调栈维护即可示例程序:原创 2017-07-11 13:37:05 · 604 阅读 · 0 评论 -
【二分图最大匹配】BZOJ4554 [Tjoi2016&Heoi2016]游戏
题面在这里典型的二分图最大匹配……只需要把每行/每列的空隙看作点 空地就看作空隙之间的联系 建边刷即可这里用了时间戳标记,新姿势Get示例程序:原创 2017-07-26 14:48:31 · 818 阅读 · 1 评论 -
【二分图最大匹配】BZOJ1562 [NOI2009]变换序列
题面在这里题目绕了半天,其实很简单……对于任意 i∈[0,n)i\in [0,n),有Di=min{|i−Ti|,n−|i−Ti|}D_i=min\{|i-T_i|,n-|i-T_i|\} 已知Di的情况下,求Ti 其实讨论一发就会发现,有4种可能: Ti=i+Di或i+Di−n或i−Di或i−Di+nT_i=i+D_i或i+D_i-n或i-D_i或i-D_i+n 其实有两对互相矛盾的存在,原创 2017-07-26 20:58:53 · 899 阅读 · 0 评论 -
【哈夫曼树,贪心】BZOJ4198 [Noi2015]荷马史诗
题面在这里显然是哈夫曼树 如何让最长的串最短? 显然只需要改变比较的优先级就好了 如果权值相同则深度小的优先示例程序:原创 2017-08-04 22:48:23 · 718 阅读 · 0 评论 -
【FFT】BZOJ2179 FFT快速傅立叶
题面在这里FFT裸题……双倍经验,但是为了巩固还是重新打了一遍示例程序:原创 2017-08-12 21:56:16 · 403 阅读 · 0 评论