摘要: 所有想练习A*的人都先来敲一下这道题吧。 数据范围即便只有5*5,但朴素的爆搜还是会超时。 因此考虑剪枝。 对于这道题,肯定只要进行最优化剪枝,判断现在走的步数+剩下最少要走的步数,如果大于ans或者15就return; 那么,估价函数怎么写? 利用小学生的思想,将目前的图与目标状态对比一下,还有多 阅读全文
posted @ 2018-01-13 12:10 空気力学の詩 阅读(145) 评论(1) 推荐(0) 编辑
摘要: 说实话,看到这道题的洛谷评级我傻了(传说中的最高难度) 然后看完题目才确定这真的是一道k短路的裸题。 也就敲了个A*吧,15分钟竟然没有调试一遍过。 欧洲玄学。 看题目,主要是找几条从1走到n的路加起来小于等于给定的E即可。 所以就是一道k短路。 A*和DJ很像,就是把堆的比较操作从当前路径长度+该 阅读全文
posted @ 2018-01-13 10:59 空気力学の詩 阅读(204) 评论(0) 推荐(0) 编辑
摘要: 这名字诡异(然而就是这样) 这次主要是yekehe和yu‘ao都来了,所以很开心的讨论(上了200)。 但是,yu’ao dalao又AK了!(666666) 不过总体难度也不高,主要是T3没思路。 T1 二分或桶 ·如果你不会这道题,出门右转找傅哥去。 去年蒟蒻时期的噩梦啊。然而只是一道PJ的水题 阅读全文
posted @ 2018-01-11 20:01 空気力学の詩 阅读(193) 评论(1) 推荐(0) 编辑
摘要: 去年的比赛了,然而今天才改好。 总体难度适中,有大佬AK。 主要是自己SB第二题没想出来,然后又是可怜的100来分。 T1 一道二分+数学的题目。 我们可以二分叫的次数,然后用公式(等差数列,公差都是zi)算一个最大的可行的数目。 最后把多余的加上去即可。 注意当xi,yi都等于0的情况。 CODE 阅读全文
posted @ 2018-01-11 19:38 空気力学の詩 阅读(218) 评论(1) 推荐(0) 编辑
摘要: 这就是一道很朴素的LCA题。 算法应该主流的有三种:DFS序+RMQ;倍增;Tarjan; 其中前面两个是在线算法,O(n log n),后一个是离线的,复杂度也是线性的O(n+q)。 所以对于这道题n,q都偏大的情况下还是选择了Tarjan(后两种我不会)。 简单说一下Tarjan的思想,对整个树 阅读全文
posted @ 2018-01-05 13:20 空気力学の詩 阅读(215) 评论(2) 推荐(0) 编辑
摘要: Luogu在博客里的第20题! 这其实是一个想明白的就很简单的问题。 首先,我们可以否决那些直接跑最短路然后看能拆出几个2^k次方的算法。 其次,Floyd求最短路大家肯定都知道,但是求传递闭包的方法也是利用了Floyd。 所以,这道题的大致思想就是Floyd两次! 我们可以先把题目中给定的点先连一 阅读全文
posted @ 2018-01-04 18:34 空気力学の詩 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 俗话说得好:模板敲得好,NOIP炸不了。 因此为了防止比赛时想到了题解而敲不出来的情况,我们要坚持刷模板。 (争取每次上线的话打1~2个吧) (排名顺序没有任何意义,想到什么写什么) SPFA(对应题目Luogu P3371 【模板】单源最短路径) Dijstra(堆优化)(对应题目Luogu P3 阅读全文
posted @ 2018-01-02 19:28 空気力学の詩 阅读(442) 评论(4) 推荐(1) 编辑
摘要: 一年没写博客了(滑稽)。 这道题很玄学,导致自己都有一个坑人的问题求解。如果有大佬有能力求帮助:https://www.luogu.org/discuss/show?postid=30231 再来讲一下我对这道题的理解吧。 首先,对于判断两个数是否在同一列战舰中,我们只需要朴素的并查集就可以。 但这 阅读全文
posted @ 2018-01-02 18:42 空気力学の詩 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 不会Tarjan,难道就不能与邪恶的SCC作斗争了吗? 祭出Kosaraju。 一些变量名的意义: a[N] 原图的vector存储 b[N] 原图的所有边反向vector存储 s dfs得出的拓扑序列栈 c[[N] 每个点的SCC编号 算法框架: 1.将原图做一遍类似于拓扑的dfs,越早访问的顶点 阅读全文
posted @ 2017-12-28 20:10 空気力学の詩 阅读(1057) 评论(1) 推荐(0) 编辑
摘要: 这显然是一道求强连通分量(SCC)的题目。 只要你正常,都知道应该写Tarjan。 然后(假装会写Tarjan),其实我当然不会。但是求SCC还有另一个算法。复杂度和Tarjan一样,只不过常数大了点而且不为人所知而已。 蓝书和挑战程序竞赛上都有这个算法,好像叫Kosaraju。是不是很拽的感觉。 阅读全文
posted @ 2017-12-28 19:54 空気力学の詩 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 好不容易搞来的题目,不写一写怎么行呢。 不过难度真心不高(一小时K掉),都是老题+暴力题,没有欧洲玄学。 再说一句,这试卷是叶可禾出的吧。 T1 好老的题目,看到有多组数据我还怕了,以为有更流弊的算法。没想到减了数据范围。 首先把边sort一遍,因为要求,max-min最小,所以枚举最短边,然后向后 阅读全文
posted @ 2017-12-26 18:58 空気力学の詩 阅读(261) 评论(1) 推荐(0) 编辑
摘要: 我会用高级(???)的单调栈来打这道题吗? 线段树即可水过。 假设这个数列刚开始所有数都是0,然后我们每次只要进行一个点的修改和区间求和即可。 这不就是 线段树大法。 只要用一个len记录一下当前数列长度即可 (刚开始智障把求最大数打成求和了,还过样例了) CODE 阅读全文
posted @ 2017-12-24 14:24 空気力学の詩 阅读(186) 评论(1) 推荐(0) 编辑
摘要: 这又是一道坑题! 思想进行了大幅转变,并查集炸了之后终于搞出了一种奇葩的算法,终于卡时间A了。 把思路按顺序理一理。 先把边从大到小排序一下。 <1> 看完题目,我去这不是并查集模板么吗,马上敲了个裸并查集,判断两个点如果之前已经联通了,直接退出输出当前值即可。 CODE(WA) 帅气得搞了50分· 阅读全文
posted @ 2017-12-24 09:55 空気力学の詩 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 怎么说呢,想通了就是一道模板题了。 自己的数论也很烂,但竟然没有看题解搞了过去(奇迹). 首先对于ax ≡ 1 (mod b); 观察数据范围可以发现b≥2,所以转化成 ax mod b=1 从mod的定义中我们可以看出原方程就是ax-by=1(y是整数) 因为一定有解,然后由裴蜀定理可以知道gcd 阅读全文
posted @ 2017-12-22 20:18 空気力学の詩 阅读(134) 评论(1) 推荐(0) 编辑
摘要: 以后平时练习还是写一写吧。 (题目搞来搞去太烦了,直接PDF存起来) T1 水题(???),主要是数据水,正解是设一个阙值,然而根本没人打。(暴力出奇迹) CODE T2 猥琐数学题(???)一定要想到,如果有解那么h[i]+l[j]≡k-a[i][j](mod k) 然后可以每次枚举第一列的数来当 阅读全文
posted @ 2017-12-22 13:44 空気力学の詩 阅读(271) 评论(1) 推荐(0) 编辑
摘要: 还以为是什么神坑数论题。 看到题,第一眼想到φ,然后暴力。 然后发现暴力其实是有可能的啦。 一个数的因数个数=所有质因数的次数+1,然后乘起来。 例如 60=2^2*3^1*5^1,so g(60)=(2+1)*(1+1)*(1+1)......(后面都是1)=12。 然后我们就要构造(而不是枚举) 阅读全文
posted @ 2017-12-15 19:48 空気力学の詩 阅读(125) 评论(0) 推荐(0) 编辑
摘要: BZOJ的题目,就是高大上。 然而是一道入门(稍微难一点)的水题。 先读题,发现可以tarjan,对,这很适合tarjan。 然后看数据范围,这不就是。。。暴力枚举+BFS找点。 水题不做多解释。 CODE 阅读全文
posted @ 2017-12-15 13:34 空気力学の詩 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 最近在二中苦逼地上课,天天听数论(当然听不懂) 但是,简单的还是懂一点的 1.欧几里得算法 说得这么高级干什么,gcd入门一个月的人都会吧,还需要BB? 证明可参照其他博客(不会),主要就是gcd(a,b)=gcd(b,a%b); 特殊的,gcd(a,0)=gcd(0,a)=a; 然后一行 2.扩展 阅读全文
posted @ 2017-12-14 20:22 空気力学の詩 阅读(346) 评论(1) 推荐(0) 编辑
摘要: (一周没写过随笔了) 这道题有坑! 看到题目,发现这么明显(??)的要求顺序,还有什么想法,拓扑! 将每条路范围内等级大于等于它的点(不能重复(坑点1))和它连一条边,注意起点终点都要有(坑点2),然后拓扑求解即可。 BFS的拓扑感觉更好。 然后打了个map判重交上去帅气的TLE了3个点 然后一想, 阅读全文
posted @ 2017-12-14 19:38 空気力学の詩 阅读(257) 评论(0) 推荐(0) 编辑
摘要: 看了题目心中只有一个字——搜索!!! 但是很显然,朴素的搜索(回溯)绝壁超时。 剪枝&优化(要搞很多,要不然过不了) 1:从小到大搜索它们的因数,这样找到就exit。 2:将数据从大到小排序,因为长的是肯定要选的,所以早点选可以减小接下来的可能。 3:如果一组它后面的几组都无法搜出,那么可以直接跳过 阅读全文
posted @ 2017-12-07 20:01 空気力学の詩 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 终于没有打模板题了。 一道简单的拓扑题目(但记得以前第一次做的时候爆0了)。 发现这个做事的过程是按一定顺序的,然后如果一个工作的前面没有任何事情的话,它一定先被完成(如果不的话就不能使时间最小化,其实一点贪心的思想)。 然后更新与它有边连接的,再找没有工作的。 就是个拓扑模板(然而调了半小时) C 阅读全文
posted @ 2017-12-05 17:41 空気力学の詩 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 方法很多,hash,双hash(个人想到一种三hash),挂链,还有STL; map 乱搞 CODE hash就是将一个字符串映射成一个数。中间的方法有很多,不停地乘上一个seed然后%一下。 然后单hash炸了。 果断双hash!(hash twice) 阅读全文
posted @ 2017-12-03 15:47 空気力学の詩 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 终于再过线段树。 参考可禾大神的线段树,然后在down的时候把 add[root*2]+=add[root] 打成了 add[root+2]+=add[root]; 调了一个下午,还被嘲讽。 对于区间修改主要用的是Lazy Tag,把增量延迟下方。 可以达到O(nlogn)。 这次代码里有注释。 阅读全文
posted @ 2017-12-03 14:47 空気力学の詩 阅读(244) 评论(1) 推荐(0) 编辑
摘要: 又是模板题呵,但这次的难度有点增加。 先看题目第一个想到DP的经典算法,要O(n^2),然后想其它的算法。 其实我们衢州市一次联考有一题很像这题,不过还要难一点。 思想是离散化+最长不下降子序列(在这里和最长上升子序列等价,因为没有重复的值) 先离散一下第二串里每个点的第一串里的位置(数组也可以,但 阅读全文
posted @ 2017-12-01 13:36 空気力学の詩 阅读(224) 评论(0) 推荐(0) 编辑
摘要: 真正的模板题。 树状数组的思想很简单(不如说背代码更简单),每个节点记录多个节点的信息(每个点存x&(-x)个)。 道理可以参见很多大佬的博客,最后前缀和的思想搞一下就好了。不想说也不会说。 CODE 其实我是想用线段树再打一遍的,然后发现建树都不会打了。 明天看线段树+Lazy Tag (Tarj 阅读全文
posted @ 2017-11-30 20:25 空気力学の詩 阅读(181) 评论(0) 推荐(0) 编辑