自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

2333:jzqjzq的博客专栏

我的新博客:https://jzqjzq.coding.me/欢迎来玩!

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

原创 概率+树套树——UOJ#291/Luogu3688 [ZJOI2017]树状数组

题面:Luogu3688 UOJ#291 我考场上这题打都没打QAQ,出来说这题是Day1最水的一道。。。 题目的大意嘛。。。就是这张图啦(Ps:orz SW_Wind) (注意到可怜手上拿着的倒着的“树状数组”了吗接下来开始了无限的懵逼。。。 过了N多个月,看了N多个题解之后,我终于懵逼地在luogu上卡着AC了 然而UOJ还是被卡常90分QAQ 首先要知道的是可怜写的sb“树状数

2017-07-08 15:45:17 336

原创 哈夫曼+堆——UOJ#130/Luogu2168 [NOI2015]荷马史诗

题面:Luogu2168 UOJ#130 追逐影子的人,自己就是影子。 ——荷马这题其实就是一个k叉Huffman树 所以我们用堆维护即可(像合并果子一样做就好了) 不过合并果子可以看作二叉Huffman,这里k叉 没关系,每次选k个合并就好了啊 但是如果(n-1)%(k-1)不等于0的话,那是不可能完全合并掉的 那也没关系,我们把少的用0补上,那就没有问题了 于是这么一道NOI的题就

2017-07-08 08:21:35 240

原创 并查集——Codeforces744A Hongcow Builds A Nation

题面:cf744a div.1A题。。。难度还算简单吧 首先我们把目前所有连通块全部求出来 然后要求能连的边数最多,我们就把所有连通块连成最大团 不考虑原来边的数量m,每个连通块(最大团)的边数是(点数*(点数-1)/2) 然后考虑没有那个限制点(暂且这么说)的连通块,这些连通块两两可以连边 两两最多可以连的数量是(A的点数*B的点数) 最后考虑有限制点的连通块 因为这些连通块不能连

2017-07-06 21:01:02 280

原创 DP——Luogu1941 [NOIP2014]飞扬的小鸟

题面:Luogu1941 首先可以有这么一个暴力DP f[i][j]表示到第i行高度为j时的最少点击次数 转移直接从前一行枚举点击次数k过来(不写了) 时间复杂度n*m^2,不能接受 那我们试着优化这个DP 首先我们发现点击使小鸟上升这个过程类似于完全背包 那么我们只要改一下上升的转移方程就好了 f[i][j]=min(f[i][j],min(f[i-1][j-p[i-1],f[i]

2017-07-06 20:46:04 228

原创 DP——BZOJ1855/Luogu2569 [SCOI2010]股票交易

题面:BZOJ1855 Luogu2569 DP肯定的 状态:f[i][j]表示前i天目前持有j股的最大收益 有几种转移方式: 不买不卖:f[i][j]=f[i-1][j] 买:f[i][j]=max(f[i-1][k]-ap[i]*(j-k))(k < j) 卖:f[i][j]=max(f[i-1][k]+bp[i]*(k-j))(k > j) 但是枚举k的话时间复杂度是O(t*ma

2017-07-02 22:38:05 599

原创 平衡树(STL)——Luogu2073 送花

题面:Luogu2073 有意思,上一篇博客采来的花都送掉了2333 这题做法太多啦hhh 对于这种用码量来征服的题目,我的决定是: Standard Template Library! 像这种乱七八糟的操作,平衡树随便搞搞,set也能 我们开结构体set,以价格为关键字 插入的时候开个数组记录一下该价格有没有放过 弹出的时候记得更新一下这个数组,都清清空(我被坑到了QAQ) 最小

2017-06-27 22:39:14 323

原创 莫队——Luogu2056 采花

题面:Luogu2056 题目意思还是很清楚的吧感觉和HH的项链十分相像,只不过HH是1,这里是2数据范围1e5所以直接莫队不虚。。。具体做法和HH其实一样的,就是add的时候统计答案一开始T的原因竟是sort炸了?据说正解是树状数组+前缀和?~~我不会~~奥妙重重

2017-06-27 15:42:57 314

原创 二进制乱搞——Luogu1582 倒水

题面:Luogu1582 发现这题以前膜你赛做过啊。。。 当时的算法是开一个栈,然后怎么搞一下的什么(忘了666) 当时是80分T了两个点,然后听axs说可以优化然后AC 我说一下现在我的做法啊 因为一样的可以合并,所以我们把原来的数量转成二进制 首先我们可以发现,二进制位上0表示已经合并或者能够合并的位置,1表示不能够再合并的位置 我们又发现,转化之后原来能够合并的都合并了,所以剩下

2017-06-25 18:47:47 281

原创 三分——BZOJ1857/Luogu2571 [SCOI2010]传送带

题面:BZOJ1857 Luogu2571 观察题目加上一定分析计算画图像等等可以得出,从某一条传送带的某一位置直接到达终点的函数是一个二次函数 这一结论同样可以推到两条传送带上 我们看作从第一条传送带的某一点直接到达第二条传送带的某一点(把这个点当终点好了),再沿着传送带到终点 这样我们就可以搞一搞喜闻乐见的三分啦OWO这个其实是三分套三分啦,首先三分第一条传送带的点,然后把这个点当终点,

2017-06-22 14:42:35 246

原创 模拟退火——BZOJ2428/Luogu2503 [HAOI2006]均分数据

题面:Luogu2503 BZOJ2428 这题使用其他的常规算法不太现实,所以我们想一些奇怪的方法 模拟退火其实就可以(这题拿来入门了) 我们首先把每个数随机分组,然后随机地把一个数从原来的组里移到另一个组,计算答案,这个用退火搞一搞 也就是说如果新的答案比原来小,那就往新的答案去,否则随机地是否往新的答案去(当然随着时间推移往新的答案去概率越小,答案越稳定) 保证答案的话随个5000~

2017-06-22 08:04:05 339

原创 费用流+构图——Luogu1251 [网络流24题]餐巾计划问题([HNOI2001]软件开发)

餐巾计划题面:Luogu1251 经典题啊。然后被HN省选拿去当原题考了??? HNOI传送门:BZOJ1221 Luogu2223 除了输入略有出入以外其他包括题面和思路算法都是一样的,所以放在一起写了= = (双倍经验啊韩寒会画画后悔画韩红) 首先可以发现这是一个最小费用最大流问题 建图比较麻烦。。。我们把图看成一个餐巾的清洗关系循环图 首先要保证每一天有一定数量的餐巾能够使用,我

2017-06-20 10:04:29 273

原创 数论+高精度——BZOJ2822/Luogu2532 [AHOI2012]树屋阶梯

题面:BZOJ2822 Luogu2532 本题就是Catalan数 Python:暴力直接求100B– C++:质因数分解+高精度 首先是这个公式:所以我们直接对1~2n质因数分解一下,然后高精乘单精就可以解决问题了代码:

2017-06-16 07:58:16 307

原创 线段树——Luogu1471 方差

题面:Luogu1471 一眼数据结构题 然后我们要维护区间方差?带区间修改? 听起来是不是很麻烦? 首先题目给的方差公式: 这个是平均数 我们可以化开来看: 然后因为中间一项的a[1]+a[2]+…+a[n]=*n 是不是? 所以继续化: 然后我们只要用线段树维护一下区间和还有平方和就可以了 但是区间修改怎么下传平方和呢? 我们把要加上的数记为v,那么:

2017-06-15 09:16:50 557

原创 欧拉路+STL——Luogu1333 瑞瑞的木棍

题面:Luogu1333 欧拉路的裸题。。。 很良心的没让你求路径,只让你判断是否能一笔画 那么直接dfs灌水一发记录每个点的度就好了 恶心就恶心在字符串。。。 没想过啥hash和trie,懒所以写了个std::map 发现T了 后来zhzh神犇教我了一种特技! C++11标准里有一个unordered_map,基本操作和map差不多 只不过map的维护方式是平衡树,所以里面的元素

2017-06-13 14:25:49 326

原创 最大流——BZOJ1189/Luogu3191 [HNOI2007]紧急疏散evacuate

题面:BZOJ1189 Luogu3191 首先我们预处理出每个空地到每扇门的最短时间 然后我们二分时间t,然后把每扇门拆成t个点 接下来建图:超级原点->每块空地(流1),每扇门的每一个时刻->超级汇点(流1) 然后对于每块空地,枚举能够在t时间内到达的门,连上边(流1,空地->门(对应的最短时间那个时刻点)) 然后等待的问题只要每扇门的某一时刻点向下一时刻点连上就行了(流INF) 然

2017-06-13 13:57:33 319

原创 费用流——BZOJ1877/Luogu2153 [SDOI2009]晨跑

题面:BZOJ1877 Luogu2153 把每个点拆成两个点(起点和终点不用拆) 给你的连边E{x,y,z}从x的第一个点连到y的第二个点(流1费z),然后每个点的第二个点连向第一个点(流1费0),这样就可以保证每个点只经过一次了 然后起点1开始跑最小费用最大流,到终点n,第一个天数的答案就是最大流,最短路就是最小费用#include <cstdio>#include <algorithm

2017-06-12 20:15:42 243

原创 一种更高效的费用流算法——zkw费用流

orz原创者zkw%%% 送上zkw神犇的blog原址:传送门费用流建立在网络最大流的基础上,一张图中最大流有且仅有一个,但是最大流条数往往不止一条,这时候对于我们来说,可能要找出这些最大流中最小(或者最大)的那一条路径(贪心策略嘛),这就是最小(最大)费用最大流 ——以上就是定义嘛我们求费用流的算法也是非常多的,目前最流行的就是Edmond-Karp经过修改过后的费用流算法了,这个我就不多说了

2017-06-12 16:15:27 18777 9

原创 ST表+堆——BZOJ2006/Luogu2048 [NOI2010]超级钢琴

题面:BZOJ2006 Luogu2048 权当ST表练手第一题 题面大意是求出前K大连续字段和(长度在l到r之间)的和 首先想到贪心的想法,我们要找到以i为开头的长度在l到r之间的最大连续字段和,然后丢到堆里面,每次都取最大的就是答案了 但是可能以i为开头的对答案有贡献的方案有很多种,所以我们还要进一步做,考虑把这段区间分开 我们首先记下原序列最大时结尾的下标,然后分开的时候直接下标左边

2017-06-12 09:54:40 415

原创 后缀数组——Luogu2852 [USACO06DEC]牛奶模式Milk Patterns

题面:Luogu2852 题目就是让我们求在串s中出现至少k次的最长子串c 首先Height这个性质还是要用:lcp(x,y)=min(Height[rank[x]]~Height[rank[y]]) 不过这题的rank倒没多大用。。。 然后我们可以二分这个长度l(答案啦),然后利用这个性质贪心 这样就可以求出串s中lcp长度大于等于l的最大连续长度,与k比较一下就好了 就是跑得慢了点

2017-06-09 21:02:28 546

原创 贪心——Codeforces814D An overnight dance in discotheque

题面:cf814d 简要题意:有n个圈,之间的关系只有包含和完全分离两种,一个圆和它的的直接上层(包含它的最小那个)不能同时选(选是加上这个圆的面积,而不选是减去这个圆的面积,具体看cf的图),问最多能选到的圆的面积是多少大力贪心不虚啊,直接按照圆的大小排序,然后最大的选上,然后有奇数个上层(包含它的圆的个数)不选,偶数层的选上就好了 然后就AC了。。。 判断两圆是否包含:圆心距<两圆半径之和

2017-06-09 20:05:38 391

原创 后缀数组/AC自动机——BZOJ3172 [Tjoi2013]单词

题面:BZOJ3172 首先把论文给造出来是吧。。。(单词中间加空格好了) 然后在这篇文章(其实是一串字符串)求Height(后缀数组实现) 把Height数组求出来之后我们对于每个单词暴力向左向右找相邻的lcp,如果Height[i]大于等于单词长的话,那么这个串在那个后缀中出现了(而且是在前缀位置),如果小于了那就说明后面的都没有了,直接跳出 因为相邻的Height肯定比不相邻的Heig

2017-06-09 14:21:11 295

原创 后缀数组——BZOJ1031 [JSOI2007]字符加密Cipher

题面:BZOJ1031 题目意思就是让我们按照环排一个序,然后按排序后的顺序输出每个串的最后一个字符实际上这样的操作我们直接用后缀数组处理一下就好了具体就是把字符串复制一遍,求出SA数组之后按照SA数组的顺序贪心找下去然后判断输出即可因为SA数组其实也是一个排序编号的过程嘛。。。没什么可以多说的了。。。

2017-06-08 19:57:49 260

原创 后缀数组(入门)——51nod1732 51nod婚姻介绍所

题面:51nod1732 要死的SA! 今天入门后缀数组,具体的后缀数组教程网上也很多 这里推荐一个:传送门,讲的还不错 听说这题可以用hash直接过,不过的确是SA的入门题哦 这题要我们求的是串s对于x,y的最大公共前缀 掌握SA的基本操作之后这题的答案就是min(Height[rank[x]]~Height[rank[y]]) 然后可以用线段树维护一下,否则T了QAQ#includ

2017-06-08 16:59:23 420

原创 乱搞(吧?)——Codeforces814C An impassioned circulation of affection

题面:cf814c QAQ比赛的时候清零清错FST了QAQ 我们其实可以用一种离线的做法来做这题 我们把同一字母的询问归到一起,然后一起做掉 比如对于字母c,我们直接处理出对于c的一个数组p[i]表示最多改动i个字母成c后可以连出来最长的串 这样我们可以很快地扫一遍做出来,打个前缀 然后把一类字母的统计答案 这样时间复杂度还是有保证的(虽然我不会算) 然后。。。然后我p数组清空的时候

2017-06-08 08:35:19 802

原创 并查集+map——BZOJ4195/Luogu1955 [Noi2015]程序自动分析

题面:BZOJ4195 Luogu1955 由于这个区间范围挺大的,但是点不多,所以考虑离散化 离散化之后呢就直接并查集就好了 等于的直接合并,不等于的判断是否在同一连通块里 要注意的是要所有合并完之后才能判断不等于的情况 离散化用的std::map#include <cstdio>#include <cstring>#include <algorithm>#include <cma

2017-06-07 16:16:44 253

原创 构图(+BFS)——BZOJ2541/Luogu3716 [CTSC2000]冰原探险

题面:Luogu3716 BZOJ2541 无限烧脑预处理建图系列,同时也是我攻下的CTSC第一题! 只要把图能建得出来就Accepted了 所以只说建图(最后的bfs有什么好说的。。。) 我们把冰山拆成四个点,冰山的每一边是一个点 然后我们暴力对每一个点(也就是冰山的边)往上下左右找最近的能撞的冰山(或者直接掉进洞里),然后连上有向边(注意有向边!!!) 当然啦,每一条边要么上下方向要

2017-06-06 10:08:41 360

原创 差分约束/并查集——BZOJ1202/Luogu2294 [HNOI2005]狡猾的商人

题面:Luogu2294 BZOJ1202 带权并查集直接做 路径压缩的时候把并查集的权值算好,最后判断矛盾是只要前缀减一下就好了 还有一种做法是差分约束,暴力按照题意建边然后spfa判负环即可 luogu实测两者的速度都在130ms左右,差距不大并查集:

2017-06-05 16:02:15 251

原创 分治——Luogu1429 平面最近点对(加强版)

题面:Luogu1429 关于求平面最近点对的方法有很多很多。。。 像是那种随机旋转角度然后暴力算的这种方法就很鬼畜QAQ 靠谱一点的算法呢就是分治了(我不知道这是不是CDQ分治) 我们计算区间l~r的最近距离 首先计算l~mid和mid~r的最近距离,然后考虑一下mid左边和mid右边对答案的贡献 首先记录下dist=min(l~mid答案,mid~r答案),然后把左边x坐标与mid的

2017-06-05 09:57:28 425

原创 最大生成树+树链剖分——Luogu1967 [NOIP2013]货车运输

题面:Luogu1967 乍一看,网络流水题? 不存在的,有多组询问+起始点和终止点各不相同。。。 那不能用网络流还能用什么? 我们可以发现,题目所要求的那条路径一定在当前连通块的最大生成树上 这是一定的,否则找不到更大的一条路径里边的最小值比这条更大 所以就很容易想到Kruskal求出最大生成森林(图不一定连通)之后在树上进行操作了 具体什么操作呢?就是找两点间在树上路径的最小值即可

2017-06-02 20:27:22 388

原创 差分约束——BZOJ2330/Luogu3275 [SCOI2011]糖果

题面:Luogu3275 BZOJ2330 差分约束入门题? 好吧是的,把约束条件转成图之后直接跑SPFA 怎么转就不说了吧。。。 然后输出-1的条件就是已知条件矛盾 这种矛盾有两种形式:直接和间接直接:给出条件中明确矛盾间接:SPFA跑最长路出现正环这两种情况直接判掉好了 最后答案就是所有的dist加起来就好了#include<cstdio>#include<cstring>

2017-06-02 14:04:14 320

原创 树分块——BZOJ1086/Luogu2325 [SCOI2005]王室联邦

题面:BZOJ1086 Luogu2325 树分块模板题? 很懵逼我这个算不算树分块QAQ,暂且当它是吧到时候学树上莫队的时候再说 因为题目要求随便一组即可,所以我们可以考虑一下贪心 当子树大小超过B的时候单独作为一个省,子树根为省会(没算在那个省里),然后清空一下当前的子树大小 然后最后会剩下这么点城市,这些城市大小必定 < B(显然,否则也被分进另外一个省了) 于是把这一小部分分进相

2017-06-02 10:47:41 340

原创 二分+堆——Codeforces812C Sagheer and Nubian Market

题面:cf812c 简要题意:有n个纪念品,第i个纪念品底价为a[i],购买时如果购买k个,第i个纪念品的价格就是a[i]+k*i,问钱数为S时最多能买的纪念品个数以及购买这些纪念品所花费的最少钱数直接二分要购买的纪念品个数即可我的二分判断做法是开一个小根堆,然后依次把每个数当前的价格扔进去。。。然后取出最小的mid个就可以了,如果符合答案那么这些取出的纪念品的价格总和就是最小花费数了WA了四发不开心QAQ

2017-06-02 08:20:50 423

原创 主席树——Codeforces811B Vladik and Complicated Book

题面:cf811b 简要题意:给定一个1~n的排列, 询问区间l,r经过排序后数列第k个数是否还处在原位(l<=k<=r)和求区间k小很像,转化一下题目就是询问区间l,r中数列第k个数是否为区间第(k-l+1)小 所以权值主席树直接上不虚。。。 据说暴力能过。。。QAQ(毕竟是B题,数据范围这么小+毛子机子跑得快肯定能过)#include<cstdio>#include<algorith

2017-06-01 15:44:22 394

原创 贪心——Luogu2255 [USACO14JAN]记录奥林比克

题面:Luogu2255 显然是一个贪心嘛。。。慢慢分析摄像机台数=1这种情况,在当前时间我们只要找开始时间大于等于当前时间,结束时间尽量小的节目,这样才能留出更多时间拍后面的节目,所以排个序找一下就好了摄像机台数=2这种情况嘛。。。上面那个贪心就不对了,反例可以自己找一个(很好想的) 但是按照这个思想是可以的,我们其实可以找当前空闲的摄像机拍是吧 有几种情况:两台摄像机都在拍摄其他节目,这

2017-06-01 15:22:01 376

原创 Tarjan+最长路——BZOJ1179/Luogu3627 [APIO2009]ATM 抢掠计划

题面:BZOJ1179 Luogu3627 首先题目意思就是让你求一条点权最长路,而且每个点的点权只能累加一次 但是发现图中有环,不能直接求。。。那怎么办? 那就把图缩成DAG不就好了,然后把所有缩在一起的点权全部加起来 先Tarjan缩点,然后重新建图,再跑最长路就可以了 最长路可以DP也可以直接BF,当然啦SPFA也是可以的啦 给SPFA的代码吧:#include<cstdio>#

2017-05-26 21:40:35 460

原创 最大流——Luogu2762 [网络流24题]太空飞行计划问题

题面:Luogu2762 网络流24题之二最大权闭合子图 ,首先建图 我们先从源点向每个实验连上权值为实验收益的边,再从每个器材向汇点权值为配置费用的边 然后每对配对方案连一条权值为INF的边 跑最小割即可,答案就是实验收益总和-最大流 具体证明不证了 两个比较容易炸的地方:读入:挺恶心的因为并没有告诉你到底配对的方案数有多少,请不要使用类似读入优化的读入方式(我试过好像这对于换行符不敏感。。。)

2017-05-25 10:21:29 293

原创 贪心——BZOJ4813/Luogu3698 [CQOI2017]小Q的棋盘

题面:BZOJ4813 Luogu3698一个很好想的贪心注意到这个图是一棵树,所以我们可以直接往树的深度最深处一直下去(注意是不回来了的),这样可以保证浪费是最少的 然后呢如果沿着这条链一直下去把n的步数用完了,那点数就是m+1(还有根节点) 如果没用完(这条路径到头了但是还有剩余步数),那就把剩余的步数全部除以2(一条路径走两次,为什么自己yy),加上原来答案就可以了 这样生成的答案它

2017-05-25 07:58:43 662 1

原创 区间DP(记搜)——BZOJ1032/Luogu2145 [JSOI2007]祖码Zuma

题面:BZOJ1032 Luogu2145 一个很明显的区间DP 首先预处理,把相同颜色的连续珠子全部搞到一个数组段里去 v记录该段的数值,w记录该段的长度 定义状态:f[i][j]表示区间从i段到j段全部消掉所需最少珠子数 然后一个最显然最基础的状态转移方程:f[i][j]=min(f[i][j],f[i][k]+f[k+1][j])这是区间DP几乎必有的转移方程了吧,k从i到j-1枚举

2017-05-23 20:01:16 311

原创 二分图匹配——BZOJ4554/Luogu2825 [Tjoi2016&Heoi2016]游戏

题面:BZOJ4554 Luogu2825 首先把图转成二分图 我们把行看作二分图的左边,列看成二分图的右边 然后每一行由“#”进行分段,也就是说,在两个“#”中间的是一段(包括最左边和最右边) 然后把“*”点看成连接行和列的边,这样就构图完成了 要想放最多,跑一遍二分图最大匹配就可以了 匈牙利算法:#include<cstdio>#include<cstring>#include<

2017-05-23 14:14:46 284

原创 带修改莫队——BZOJ2120/Luogu1903 数颜色

题面:BZOJ2120 洛谷上呢这题作为带修改莫队的模板题:Luogu1903 所以这题做法就是带修改莫队算法辣 如何在原来的离线莫队上面加上修改操作呢? 我们可以多维护一个时间,当区间做到某个询问时,把询问前面的修改全部加上,把后面的修改全部还原,这样就可以兹瓷修改操作了 具体实现呢和原来移动区间差不多,也是移动时间轴 然后排序的方法是三关键字:左端点处在的块 -> 右端点 -> 时

2017-05-23 11:07:32 587

空空如也

空空如也

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

TA关注的人

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