自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

linkfqy

                          ——A link to FQY.

  • 博客(266)
  • 资源 (1)
  • 收藏
  • 关注

原创 【线段树优化建图+费用流】BZOJ4276 [ONTAK2015]Bajtman i Okrągły Robin

题面在这里很显然是网络流。 可以用流量作为使其符合题意的限制条件 那么就是刷最大费用最大流经过上面的分析,很快就有了建图方案:源点到所有贼建边,容量1,费用ci每个贼向能作案的时间点建边,容量1,费用0每个时间点向汇点建边,容量1,费用0边数有点多,那么就线段树优化建图即可示例程序:

2017-07-23 22:37:25 1380 1

原创 【线段树优化建图+最短路】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

原创 【传递闭包+bitset优化】BZOJ2208 [Jsoi2010]连通数

题面在这里首先O(nm)O(nm)的暴力貌似能过?一眼就看到了是传递闭包问题 定义 f[i][j]f[i][j]表示 ii是否能到 jj问题在于怎么转移这个递推 可以用Tarjan缩点后按拓扑序递推,最坏是O(n232)O(\frac {n^2} {32}) 当然了……对于我这种懒人,最适合的还是Floyd大法 然后就变成了 O(n332)O(\frac {n^3} {32})……示例程序:

2017-07-20 22:10:59 1483 2

原创 模拟退火与爬山算法

前言最近学习了一些元启发算法,感觉这些算法的原理都挺有趣的 结合了物理,生物学的现象 (不得不感叹一下前人的脑洞)爬山算法先来讲下爬山算法。考虑这样一个问题: 假设有一个函数 f(x)f(x)如何求它的最大值? 画出它的图像如下: 每次在当前位置的两侧判断是否比当前更高 就像爬山一样往高处爬,最终会到达一个较高的位置但是这通常不是整体最优解,而是局部最优解 像这样: 登山者到

2017-07-18 22:38:57 5921 4

原创 【模拟退火,广义费马点】POJ2420 A Star not a Tree?

题面在这里给定N个点,求这些点的广义费马点 模拟退火的经典题……因为G++的原因WA了一下午…… 万恶的POJ初始值随便给个正常点的 我是用了横、纵坐标的平均值作为初始位置每次随机一个角度,往这个方向走Temp步 这样作为下一状态控制一下降温系数以及内循环次数就可以A啦示例程序:

2017-07-18 21:48:48 1549 1

原创 【2-SAT】BZOJ2199 [Usaco2011 Jan]奶牛议会

题面在这里2-SAT经典题……没什么好说的,直接上代码吧

2017-07-17 22:10:36 723 1

原创 【线段树】BZOJ1012 [JSOI2008]最大数maxnumber

题面在这里又在A水题……这个不用我多说了吧,随便套个什么数据结构就行了示例程序

2017-07-17 12:00:17 562

原创 浅谈2-SAT问题

SAT及2-SATSAT是一类关于变量取值的问题 具体模型:有若干个变量,各变量之间有取值约束,判断是否有一个满足所有约束的可行解,或求出某个特殊解 特殊地,若所有变量的取值都只有两种可能,那么此问题被称为2-SAT问题2-SAT的解法首先是建图。 对于2-SAT问题,我们一般先观察题目条件 把它抽象成约束关系,再进行建图。 建图时,一个变量的两个取值视为两个不同的点。比如:a|ba|b为

2017-07-16 19:29:02 1762 1

原创 【二分+2-SAT+Tarjan】POJ2723 Get Luffy Out

题面在这里2-SAT经典题……钥匙只能二选一,所以很容易看出是2-SAT问题 考虑约束关系: 对于一扇门,假设它两把锁为(a,b) 那么为了过这扇门,选了a’就一定要选b,反之亦然 后面不需要讲了……然而每次枚举过几扇门太慢了,直接二分答案注意:数据范围有点坑示例程序:

2017-07-16 14:46:06 715

原创 【2-SAT+Tarjan】POJ3207 Ikki's Story IV - Panda's Trick

题面在这里典型的2-SAT问题……可以发现,对于任意两条连线,能在O(1)复杂度内判断是否矛盾 (即两条连线必须位于圆的两侧) 这样暴力枚举一下建边,用Tarjan刷强连通分量 最后判断是否有解即可示例程序:

2017-07-16 12:05:25 760

原创 【2-SAT】hihoCoder#1468 新春晚会

题面在这里典型的2-SAT问题此题只能用DFS暴力乱搞,因为要输出字典序最小的一组解示例程序:

2017-07-13 16:07:10 941

原创 【2-SAT】hihoCoder#1467 音乐节

题面在这里2-SAT的最经典应用……不说了,直接上代码:

2017-07-11 21:20:29 625 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

原创 树分治-点分治

前言很久以前就学过树分治,但是掌握不熟练(其实是弃坑了) 所以现在重新拾起这个算法,终于填坑完成…… 发现还是挺简单的正文树分治,是用于统计树上路径的算法POJ1741就是一个很好的例子 下面会以此题为例,详细讲解树分治树分治分为两种:点分治与边分治 点分治:每次找一个点,分治所有以它的儿子为根的子树 边分治:每次找一条边,分治它连接的两个点为根的子树由于边分治容易被特殊数据卡,所以一般使

2017-07-10 21:29:15 3050

原创 【模板】树链剖分

树链剖分,很实用的图论技巧 可以维护树上路径系列问题参考博客:树链剖分-总结

2017-07-10 20:01:34 401

原创 【模板】上下界网络流

上下界网络流,很常见的题型呢 这里总结了有源汇上下界最大/小流的模板参考博客:浅谈上下界网络流

2017-07-10 16:07:43 1196

原创 【模板】主席树/函数式线段树/可持久化线段树

参考博客:主席树/函数式线段树/可持久化线段树万年老物…… 今天才发出来……不想扯什么了,直接上代码吧

2017-07-10 15:54:55 364

原创 【树分治】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

原创 【楼天城男人八题】【树分治|Treap+启发式合并】POJ1741 Tree

题面在这里待我先膜拜一下楼教主……首先这题是很明显的树分治 想说点什么却发现已经没什么好说了然后我们来看另一种解法:平衡树乱搞 这里用的是Treap实现对于每个节点,用Treap记录该子树每个节点到根(默认为1)的距离 那么如何统计答案? 对于兄弟子树,他们之中的任意节点间都可统计方案数,而且不会重复 其实统计方案数就是询问某Treap中key比x小的个数 统计两棵Treap之间的方案数

2017-07-09 20:05:21 2643 2

原创 【bitset乱搞】BZOJ3687 简单题

题面在这里最喜欢这种乱搞题了因为异或两次就等于没有异或 所以只需要记录不同算术和的奇偶即可 用一个bitset存 假设已经统计好了前面一部分算术和,新加一个x 那么每个数加x或不加,新的bitset就是(S<<x)^S果然乱搞题最好了,代码又短 示例程序:

2017-07-09 09:54:27 840

原创 C++ STL nth_element原理与应用

LZ最近的考试中,某题可以通过调用nth_element()来水过70%的数据 但是LZ并不会啊(历史总是惊人的相似) 于是就有了这篇blog在编写代码时,有时会有“在一个无序表中快速得到第K小的元素”的需求 而直接排序 不能水过一些测试点 时间不能承受 于是STL的algorithm头文件就给我们提供了nth_element()这样的部分排序函数调用的正确姿势是这样的:nth_elemen

2017-07-09 08:57:23 10546 3

原创 浅谈上下界网络流

背景最近一直在做这类题目…… 感觉题目变化还是挺多的 就在这里总结一下好了……首先Orz Lynstery 本文参考博客:有上下界的网络流学习笔记——by liu_runda正文上下界网络流,显然就是对每条边有上下界流量限制的网络流问题 众人:这不废话嘛 对于上下界网络流问题,最重要的思想是“转化” 因为学习后你会发现:处理每一种情形都是要由前一种更为简单的情形转化过来,然后用同样的方法

2017-07-07 21:18:29 4933 4

原创 【二分+上下界网络流】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

原创 【上下界最小流】BZOJ2502 清理雪道

题面在这里典型的上下界网络流题目把清理雪道的人看作流 那么每条雪道至少被清理一次 即流量至少为1另有: S到所有点的流量无限制 所有点到T的流量无限制套用“有源汇上下界最小流”即可示例程序:

2017-07-07 11:24:20 848 3

原创 【bitset】POJ2443 Set Operation

题面在这里参考博客: C++ bitset使用教程 bitset最基础的练习题示例程序

2017-07-06 20:02:52 792 3

原创 C++ bitset使用教程

前言话说昨天考试有一道题目,可以用bitset艹过去 可是LZ并不会啊……于是只好打暴力…… 结果可想而知…… 于是LZ下定决心一定要把bitset学透 然后……就有了这篇blogbitset定义与初始化bitset是用于记录01串的容器 也就是bitset的每个元素只能为0/1用bitset之前别忘了:#include<bitset>以下是正确的定义方式:bitset<16> a; /

2017-07-06 19:34:55 2430 3

原创 【二分+上下界最大流】ZOJ3496 Assignment

题面在这里首先要明确,B公司肯定会把流量最大(小)的边代价设为P,其他代价为0(根据贪心原理)。 然后就是要使 流量最大的边最小(或流量最小的边最大) 二分枚举答案,然后就确定了每条边的流量范围 妥妥的上下界最大流注意:如果二分确定的范围不在一条边原有的流量范围内,就验证失败 (因为流量取不到当前的值) 这个错误很容易被忽略,我因此WA了一个下午……示例程序:#include<cstdio

2017-07-06 18:11:46 852 2

原创 【上下界网络流】ZOJ2314 Reactor Cooling

题面在这里上下界网络流的裸题……直接套用“无源汇有上下界可行流”即可示例程序:

2017-07-04 21:59:00 751 3

原创 【堆,贪心】BZOJ1029 [JSOI2007]建筑抢修

题面在这里刷水题ing……显然需要贪心。 会有一种想法,就是对结束时刻排序维护一个最大利用时刻lst,在此时刻之前都被利用了1.若当前建筑可以在损毁之前被修复,就修复(增加答案) 2.否则,尝试在之前建筑中寻找所需时间最大的来替换当前(答案不变,但花费的总时间变小了)示例程序:

2017-07-02 16:36:24 993 2

原创 【DP+最短路】BZOJ1003 [ZJOI2006]物流运输

题面在这里远古时期的省选题…… 所以现在看来有点水如果无视时间的变化,那么就是最简单的最短路了但是随着时间的推移,有些码头被关闭 这时就需要重新规划路线。难道这看着不像是DP吗?f[i]表示到第i天的最小费用,剩下的不用说了…… 把最短路的结果作为转移方程的代价即可。示例程序:

2017-07-02 10:35:02 1108 3

原创 【并查集】BZOJ1050 [HAOI2006]旅行comp

题面在这里又是一道水题……可以直接枚举最大边与最小边, 那么位于这之间的边都可以走, 用并查集判断S到T是否联通即可示例程序:

2017-06-30 11:09:48 1065 3

原创 【快速幂、组合数学】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

原创 【结论+暴搜】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

原创 【欧拉筛/线性筛】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

原创 斐波那契数列的性质

斐波那契(Fibonacci)数列: fi=⎧⎩⎨01fi−1+fi−2i=0i=1i≥2 f_i =\begin{cases}0 & \text{i=0} \\1 & \text{i=1} \\f_{i-1}+f_{i-2} & \text{i≥2}\end{cases} 这个东西貌似是一种很神奇的存在…… 这里列举一些性质: 1.f1+f2+……+fn=fn+2−1f

2017-06-28 20:39:34 2796 5

原创 关于素数筛法的一点讨论

前言在数论领域,解决问题时经常会有得到素数的需求 如何快速得到一定范围内的所有素数,就成了人们一直追求的问题 这里列举一些素数筛法,也许会有帮助埃氏筛法(Sieve of Eratosthenes)笔者在最早接触数论时,就学到的算法 思路比较简单: 对于每个素数,都枚举其倍数打上标记 那么没打过标记的就都是素数了 示例程序:

2017-06-28 19:45:07 1021 3

原创 【模板】Manacher 算法 最长回文子串

参考博客:Manacher算法——最长回文子串 Manacher算法的模板,写得比较简洁 作为一个模板,还是不错的

2017-06-13 15:18:59 593 4

原创 Manacher算法——最长回文子串

今天抽空学习了下这个简单的算法……背景Manacher用于求最长回文子串问题 是最简单也是最为常用的算法首先,我们需要考虑回文串长度的奇偶 会发现长度为奇时,回文串有一个对称点 长度为偶时则不然 为了方便解题,我们需要对原字符串进行预处理:orzLynstery#o#r#z#L#y#n#s#t#e#r#y#可以发现,每个空隙中填充’#’后,回文子串长度一定为奇做法定义f[i]f[i]表示

2017-06-13 15:13:39 909 1

原创 【Trie树】POJ2001 Shortest Prefixes

题面在这里Trie树的经典题……观察一下题目,就会发现: 用cnt表示子树下的字符串数,那么当cnt第一次为1时 所走过的路径就是对应的缩写主要还是练手用,这种题目一定要熟练打完并1A 不然考场上遇到大题就真的挂了

2017-06-12 20:56:25 437 3

周东《浅析最大最小定理在信息学竞赛中的应用》

周东大神关于s-t平面图与对偶图的转化PPT 可以快速求解s-t平面图中的最大流问题 解释很详细,很有帮助

2017-05-30

空空如也

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

TA关注的人

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