自定义博客皮肤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/欢迎来玩!

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

原创 SPFA——Luogu1073 [NOIP2009]最优贸易

https://www.luogu.org/problem/show?pid=1073 首先能够买进卖出的地点一定与起点和终点连通 我们可以从起点正向SPFA找出在可以走到的范围内能够买进的最小代价,然后从终点反向BFS找出哪些点能够走到终点,最后的答案是:max(本地代价[i]-买进最小代价[i])(i能够走到终点)然后SPFA模板改一下好了#include<bits/stdc++.h>us

2017-03-31 15:59:51 409

原创 数学——Luogu1072 [NOIP2009]Hankson 的趣味题

https://www.luogu.org/problem/show?pid=1072 首先关于最大公约数和最小公倍数的一个很重要的定理:gcd(a,b)*lcm(a,b)=a*b;这个东西在这里是个很有用的东西 我们来推一下公式: x 和 b0 的最小公倍数是 b1,即lcm(x,b0)=x*b0/gcd(x,b0)=b1 继续转化公式得:gcd(x,b0)=x*b0/b1 从这里

2017-03-31 15:29:14 338

原创 K短路——BZOJ1975/Luogu2483 [SDOI2010]魔法猪学院

http://www.lydsy.com/JudgeOnline/problem.php?id=1975 https://daniu.luogu.org/problem/show?pid=2483 首先我们要想到把这题转化成求k短路 这个怎么说呢。。。先看题目一句话 iPig 的总能量是有限的,所以最多能够转换的样本数一定是一个有限数既然要求每种转换方式都不相同,那就不可能是最短路然后贪

2017-03-31 09:31:12 1218

原创 MST——BZOJ1016 [JSOI2008]最小生成树计数

http://www.lydsy.com/JudgeOnline/problem.php?id=1016 我们来分析一下这个最小生成树 如果两颗最小生成树中至少有一条边不同,则这两个最小生成树就是不同的 因为说相同边权的边的编号不影响最小生成树的大小,这个我们就可以算进多个答案了 所以我们可以先把边排序,跑一遍Kruskal记录一下相同边权的边对答案产生影响的数目还有起始终止位置(排序后)

2017-03-31 09:08:44 340 1

原创 最短路——BZOJ1656 [Usaco2006 Jan] The Grove 树木

http://www.lydsy.com/JudgeOnline/problem.php?id=1656 题目可能没讲清楚(或者没翻译清楚),这个树林是一个连通块 因为要绕树林一圈求最短路,我们可以任意取一棵树,然后向下画一条射线表明一条关键的分界线 每个点记录两个状态,1表示走过这条分界线一次,0表示没走过这条分界线 然后分别记录最短路 走过了才有可能绕

2017-03-29 22:25:02 511

原创 搜索+剪枝——CODEVS1288 埃及分数

http://codevs.cn/problem/1288/ 我不知道这到底算是IDA*还是迭代加深DFS+剪枝。。。 应该是后者吧 我们可以直接暴力找出小于目前数的最小分子为1的分数 但是这个枚举可能无限 我们来一个不知道是不是剪枝的东西 if(b*(rp+1-p)<=a*i)break;如果接下来累加分数还要小于答案那么直接返回就好了 然后限制一下层数 最后关于一个数据的坑点

2017-03-29 16:15:47 329

转载 搜索——BZOJ3990/Luogu3322 [SDOI2015]排序

http://www.lydsy.com/JudgeOnline/problem.php?id=3990 https://www.luogu.org/problem/show?pid=3322 部分文字转自lc233,博主添加文字会另外注明 http://blog.csdn.net/largecub233/article/details/67633368 假设分块的长度是2^i 那我们把i

2017-03-29 09:15:56 376

原创 搜索——BZOJ3632 外太空旅行

http://www.lydsy.com/JudgeOnline/problem.php?id=3632 sb的博主表示再次被C++的恶心之处坑到了 (博主:看来还是P党大法好) 有两种做法:蒙特卡罗随机+贪心(我好像以前xjb写过不过肯定不会写啊。。。博主这么蒻)状态压缩暴搜+最优性剪枝我很聪明地选择了第二种 首先我们发现n<=50,而2^50并不会爆long long 所以我们以

2017-03-28 20:52:07 343

原创 折半搜索+hash——CODEVS1735 [NOI2001]方程的解数

NOI2001的题可以搜索A掉啊 http://codevs.cn/problem/1735/ 看到数据有点萎。。。因为暴搜的时间复杂度150^6 那么试试折半搜索???我们把全部数折半(前n/2个和后n/2个)然后分别暴搜 前半部分的答案可以保存在hash表中,方便与后半部分合并 时间复杂度完美优化到150^3 然后hash的模数再好好注意一下 然后就结束了#include<bits/stdc

2017-03-28 14:58:01 369

原创 IDA*——BZOJ2824/Luogu2534 [AHOI2012]铁盘整理

http://www.lydsy.com/JudgeOnline/problem.php?id=2824 https://www.luogu.org/problem/show?pid=2534 IDA*好题啊 这题可以想到搜索 但是我是一开始没有想到这个估价函数啊。。。 最优性剪枝:直接估价可以选“相邻点差值>1的对数”,实际所需步数是不小于这个估价的。 很巧妙是不是>_<(其实很显然啊

2017-03-28 10:02:11 670

原创 贪心——Luogu1315 [NOIP2011]观光公交

https://www.luogu.org/problem/show?pid=1315 这是一题贪心题 首先在不放加速器的时候所有乘客的旅行时间总和是一定的。。。 因为每个站的出发时间一定是本站最后一位乘客上车时间(好吧不一定也有可能最后一名到了车还没到。。。) 所以应该是max(本站最后一位乘客上车时间,车到站时间)我们需要合理地安排加速器使所有乘客的旅行时间总和最小 那么这个加速器啊就

2017-03-27 20:51:07 375

原创 浅谈矩阵乘法

先来一段百科 矩阵乘法是一种高效的算法,可以把一些一维递推优化到log(n ),还可以求路径方案等,所以更是一种应用性极强的算法。矩阵,是线性代数中的基本概念之一。一个m×n的矩阵就是m×n个数排成m行n列的一个数阵。由于它把许多数据紧凑的集中到了一起,所以有时候可以简便地表示一些复杂的模型。矩阵乘法看起来很奇怪,但实际上非常有用,应用也十分广泛。一个矩阵说穿了就是一个二维数组。一个n行m列的矩

2017-03-27 15:39:14 475

原创 树形DP——BZOJ1060/Luogu1131 [ZJOI2007]时态同步

http://www.lydsy.com/JudgeOnline/problem.php?id=1060 https://www.luogu.org/problem/show?pid=1131 怎么说呢,看懂了明白了以后呢就变得很简单了 题目给定了根,因此我们只需要从根开始遍历 我们可以定义状态:f[i]表示从第i个节点到叶子结点的最长距离 叶子结点f[i]为0 其他结点的状态转移方程是

2017-03-27 14:10:39 342

原创 DP——Luogu2563 [AHOI2001]质数和分解

https://www.luogu.org/problem/show?pid=2563 比较裸的动态规划 完全背包嘛 我们可以把质数先给筛出来(不要看我用了欧拉筛,其实在这道题等于大材小用)然后直接DP 状态转移:f[j]+=f[j-pri[i]](pri是质数) 设个边界条件f[0]=1就好啦#include<bits/stdc++.h>using namespace std;int

2017-03-27 09:14:25 595

原创 AC自动机——Luogu3121 [USACO15FEB]审查(黄金)Censoring (Gold)

https://www.luogu.org/problem/show?pid=3121 这题嘛。。。AC自动机 我们在匹配的时候可以开一个栈,一开始栈内为空,匹配时依次加入字母的位置,当匹配完成时把这个单词弹出继续操作就好了 其他没啥变化 具体看这段代码啦inline void getans(int l){ int now=0; for(int i=1;i<=l;i++){

2017-03-26 19:46:53 389

原创 并查集/DFS——BZOJ1529/Luogu3420 [POI2005]SKA-Piggy Banks

http://www.lydsy.com/JudgeOnline/problem.php?id=1529 https://www.luogu.org/problem/show?pid=3420 从POI找到一题比较水的。。。 题目意思其实可以很快的转化成求连通块个数 所以我们可以用灌水或者并查集很快地解决 先贴并查集:#include<bits/stdc++.h>using namesp

2017-03-26 19:29:02 250

原创 计算几何瞎暴力——Luogu1227 [JSOI2008]完美的对称

https://www.luogu.org/problem/show?pid=1227 比较水的省选题了。。。 有以下几个既定事实此题若想完美对称,则对称点一定只有一个(很显然对吧)若1成立,这个对称点确定为最中间两个点的对称点(如果是奇数个点即为最中间的那个点)所以我们可以为坐标进行双关键字排序(横纵坐标从小到大)然后取中间点的对称点暴力判断即可 其实啊,更方便的是选第一个点和最后一个

2017-03-26 17:44:31 397

原创 线段树——BZOJ1012/Luogu1198 [JSOI2008]最大数

http://www.lydsy.com/JudgeOnline/problem.php?id=1012 https://www.luogu.org/problem/show?pid=1198 经典老题现在才AC。。。 这题方法很多,有单调栈,有线段树,有树状数组…… 我是用线段树写的 其实就是胜者树求区间最大 我们建一棵大小为m的线段树,然后插入节点和询问都是模板了#include<b

2017-03-24 11:06:06 329

原创 IDA*——Luogu1379 八数码难题

https://www.luogu.org/problem/show?pid=1379 很经典的一道题现在才AC。。。 和骑士精神那题差不多 IDA*嘛,限制搜索层数然后启发式搜索。。。 一个最优性剪枝:计算每个方块(空格除外)与目标位置的横纵坐标之差的绝对值之和m,如果m不足以在k步之内走到目标位置,剪枝 然后就可以愉快地AC了#include<bits/stdc++.h>using

2017-03-24 10:31:45 400

原创 ZJOI2017一试酱油试水记

坐等zyy初三dalao省选90分 我就是去试水的。。。day0(3.20) 早上在sxyz机房做了一题二分图(见前面题解) 感谢(a掉)lzq提供帮助。。。 中午草草的吃完饭坐车去温州一个下午车程,块状链表似的隧道一个接一个,风景还是不错的 到温州发现红太阳宾馆没房间了。。。 ∑表了一顿宾馆的人以后我们换到了一个对面的四星级酒店 。。据∑说这是历届住过的最好酒店。。 去温州中学吃晚

2017-03-24 09:35:05 1474

原创 IDA*——BZOJ1085/Luogu2324 [SCOI2005] 骑士精神

从ZJOI2017讲课学来的新东西。。。 这题也就是启发式搜索(或者称A*) 。。哦不对,是IDA*(迭代加深启发式搜索)我们找到空位置以后直接搜索状态直到目标状态 但是显然的,暴搜是过不掉这题的 一个最优性剪枝:计算不在目标位置的骑士个数m,如果m不足以在15步范围内把所有骑士归位,剪枝(写出这个DFS就升级成为A*了) 但是这样好像还是会T啊(不过我没试过) 题中有说,步数大于15步

2017-03-24 08:27:43 567

原创 二分图匹配——Luogu2756 [网络流24题]飞行员配对方案问题

https://www.luogu.org/problem/show?pid=2756 二分图匹配的裸题 不过我不会匈牙利算法。。。。 于是我打了个dinic最大流过掉了 具体做法就是设一个超原点和一个超汇点, 然后超原点与每一位外籍飞行员连一条流量为1的边 超汇点与每一位英国飞行员连一条流量为1的边 然后跑一遍最大流就好了。。。记录方案我卡了很久 在此感谢lzq大佬指教(woc把我

2017-03-20 10:49:07 399

原创 胜者树(线段树RMQ)——Luogu1816 忠诚

胜者树是一种特殊的线段树 这个东西支持查询区间查询极值,修改某值 听老师说这个东西可以代替二叉堆。。。 和线段树写法一样的 我们以找区间最小值为例 建树:void build(int l,int r,int nod){ if(l==r)t[nod]=a[l];//叶节点 else{ int m=(l+r)/2;//中间点 build(l,m,

2017-03-17 15:15:40 327

原创 Trie——Luogu2292/BZOJ1212 [HNOI2004]L语言

https://www.luogu.org/problem/show?pid=2292 http://www.lydsy.com/JudgeOnline/problem.php?id=1212 一题Trie字典树 这题原本标算是AC自动机!!!(好像说是因为文章长度有1M) 其实也不用AC自动机,Trie上面乱搞也能过。。。 (会不会是出题人为了吓吓人写了文章长度233) 我们开个数组f

2017-03-17 14:38:07 307

原创 NOIP普及2016悲惨翻车记

其实博主一直是个蒟蒻。。。初赛(day -……(我没数过)) 想当年刷pj,初赛都过不了。。。。(就差2分还是3分) 今年(应该是去年),总算是考进了复赛,不过也只有93QAQ 要知道,zj分数线一向很高 前年却因为指针炸掉(从此以后我曾发誓好好学指针到现在还是不会用。。。) 最后程序填空二分最后答案填错55555……复赛(day1)AM 因为pj是下午开赛,我们上午八点从sx去衢州

2017-03-17 11:08:27 841 2

原创 Trie——BZOJ4567/Luogu3294 [Scoi2016]背单词

http://www.lydsy.com/JudgeOnline/problem.php?id=4567 https://www.luogu.org/problem/show?pid=3294 比较有趣的Trie题目之一(而且还挺新的) 我们可以按照各串的后缀建一棵Trie树,然后dfs序遍历出需要的点并标记(指那些位于各串结尾的节点,这些是有用的) 接着我们来考虑题目中的三种情况:如果存

2017-03-17 09:51:12 449

原创 DP——Luogu2543 [AHOI2004]奇怪的字符串

https://www.luogu.org/problem/show?pid=2543 这根本不像是省选题!!!(好吧忘记看年份了) 裸的最长公共子序列,状态转移方程:f[i][j]=f[i-1][j-1]+1(串1位置i与串2位置j匹配)f[i][j]=max(f[i][j-1],f[i-1][j])(不匹配)然而这题n范围大,我们可以把第一位滚存掉#include<bits/stdc++.h

2017-03-17 08:26:56 481 1

原创 Trie——51nod1526 分配笔名

https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1526 这题主线思路肯定是Trie对吧 定义笔名和真名之间的相关度是他们之间的最长公共前缀 题目要求分配笔名,使得匹配质量最大 那么我们可以先按照真名建立一颗字典树,并且在经过的一条路线上的标记+1 然后把所有笔名依次在字典树上匹配,从根开始遍历,如果当前标记大于

2017-03-16 19:49:58 334 1

转载 AC自动机——HDU2222(题号很鬼畜)Keywords Search

http://acm.hdu.edu.cn/showproblem.php?pid=2222 这道题的算法就是我之前在trie中提到的高深算法——AC自动机!!! 千万不要以为AC自动机就是能使你的程序自动Accepted的东西。。。 具体的算法讲解请看我同学的详细讲解:http://blog.csdn.net/fop_zz/article/details/62418370 这题就是裸的的A

2017-03-16 15:50:20 398

原创 字符串hash+map——BZOJ2081/Luogu3498 [Poi2010]Beads

http://www.lydsy.com/JudgeOnline/problem.php?id=2081 https://www.luogu.org/problem/show?pid=3498 一题字符串hash 一开始因为各种原因导致我TLE和WA等等。。。。。 发现基数base会有各种问题,注意一下就好了 我的方法是hash+map映射,所以long long自然溢出不影响结果 所以

2017-03-16 15:41:43 467

原创 戏说Trie字典树算法+Luogu2580 于是他错误的点名开始了

首先讲一下Trie这个东西(其实很简单) 在计算机科学中,trie,又称前缀树或字典树,是一种有序树,用于保存关联数组,其中的键通常是字符串。与二叉查找树不同,键不是直接保存在节点中,而是由节点在树中的位置决定。一个节点的所有子孙都有相同的前缀,也就是这个节点对应的字符串,而根节点对应空字符串。以上摘自百度百科 这就像英文字典一样,每个字母按照字典序排 举个例子,比如我们要插入几个字符串:

2017-03-15 19:57:59 553

原创 KMP——BZOJ3670/Luogu2375 [Noi2014]动物园

http://www.lydsy.com/JudgeOnline/problem.php?id=3670 https://www.luogu.org/problem/show?pid=2375 洛谷有分点信息真好。。。(用多了不好不利于自身提高) 标算Kmp,第一次写渣了BZOJ只有提示WA洛谷一测爆蛋 这题的主要坑点在于限制后缀与前缀不重叠,其他和普通的Kmp并没有什么本质区别 这个其实

2017-03-14 19:39:06 258

原创 KMP——51nod1277 字符串中的最大值

https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1277 标算Kmp啦 题目中让我们求的前缀出现次数是可以用Kmp中的nex数组推出来的 就是当前i的border长度可以累加到nex[i]的次数答案中 所以我们先求出字符串的nex数组(border),然后倒推答案(sum[nex[i]]+=sum[i]) 最后输

2017-03-14 19:24:30 450

原创 Border——BZOJ1355 [Baltic2009]Radio Transmission

http://www.lydsy.com/JudgeOnline/problem.php?id=1355 这个题一开始我样例解释根本看不懂,其实这个解释是错的(也没必要看) 我来重新解释一下这个样例吧 8 cabcabca 这个串是cabcabcab的子串对吧,那么就是cab不断自我连接得到,答案是3 首先我们来看一下,cabcabca这个串的最大border(除了自己)是5(就是cab

2017-03-14 15:52:15 200

原创 KMP——CODEVS1204 寻找子串位置

http://codevs.cn/problem/1204/ 裸的Kmp吧 (Pascal的可以用pos水过我就不说了) 具体见我前一篇说Kmp的文章,这里不再展开谢谢#include<bits/stdc++.h>using namespace std;int nex[1000001],l1,l2;char a[1000001],b[1000001];int main(){

2017-03-14 15:33:33 326

原创 字符串匹配-Kmp算法详解

OI竞赛中,字符串匹配也是一个比较有趣的东西 一般地,字符串匹配问题通常给出原串(String)与模式串(Pattern),要求输出模式串在原串中出现的起始位置。比如: 原串:abacaba 模式串:aca 答案就是3 今天我们来讨论只有两个串的情况(就是没有trie和AC自动机QAQ) 对于这种问题,我们有好几种方法来解决1.暴力只需暴力枚举起始位置,然后暴力判断,复杂度O(n*m)。

2017-03-14 12:50:41 394

原创 二分+高精度——BZOJ1213/Luogu2293 [HNOI2004]高精度开根

http://www.lydsy.com/JudgeOnline/problem.php?id=1213 https://www.luogu.org/problem/show?pid=2293 首先说一下,这又是我们某次膜你赛的题目。。。先上题解:这题只要求一个数非负根取整后的结果,没有小数部分,所以思路很简单 我们可以直接二分答案,二分出某个值然后判断这个数的m次幂与原数判断:mid^m==n,答案直

2017-03-13 20:37:26 708

原创 并查集——BZOJ1015 [JSOI2008]星球大战starwar

http://www.lydsy.com/JudgeOnline/problem.php?id=1015 并查集模板题是不是? 我们可以倒序处理,先计算出所有被攻击的星球消失以后的连通块数目,然后根据倒序分别加回被攻击的星球,这个统计和合并用并查集维护一下就好了 每合并完一次不要忘记把被攻击的星球自己算进去#include<iostream>#include<algorithm>#incl

2017-03-13 10:07:41 368 1

原创 最短路+DP——BZOJ1003/Luogu1772 [ZJOI2006]物流运输

http://www.lydsy.com/JudgeOnline/problem.php?id=1003 https://www.luogu.org/problem/show?pid=1772#sub 这题一开始,我乍一看,不会做啊(好吧其实这题还是很水的) luogu的题目标签说是DP啊,还有最短路 其实就是这样做的呀(后来发现真的很水) 因为在某一区间段时间内有码头会暂时关闭,所以我们

2017-03-13 09:24:03 327

原创 数学+高精度——BZOJ1876/Luogu2152 [SDOI2009]SuperGCD

http://www.lydsy.com/JudgeOnline/problem.php?id=1876 https://www.luogu.org/problem/show?pid=2152 其实就是高精度gcd,因为辗转相除要试乘很麻烦而且耗时间(~~我是不会告诉你我其实是不会高精度除法~~),有个更相减损法很好用:> 可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也。以等数约之。——《

2017-03-12 21:28:08 387

空空如也

空空如也

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

TA关注的人

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