- 博客(8)
- 收藏
- 关注
原创 NOIP2018 Day2 T1 旅行 题解
乍一看,一道基环树。说实话考场上有点懵,Day2T1直接上基环树?再一看,好像只是一道无脑的搜索加剪枝对于NOIP数据范围,O(n^2)是可以可过去的但是对于那个加强版数据,可能需要一个笔者不会的超级玄学。好吧不扯了,咱们来看看数据范围。m=n-1的情况比较简单只需一遍跑一边搜索,每次找字典序最小的往下搜就行了。而对于m=n的情况,就是神(wei)奇(suo)的基环树了。对于基环树...
2018-11-27 19:44:25
682
原创 Luogu p2683 神奇ac代码+Tarjan模板
题目链接Tarjan算法这是一个求一个图中的强连通分量的算法。强连通分量是指这一个子图中所有节点都能互相到达。当然,Tarjan的效率很高,时间复杂度为O(n+m)。这里我们要用到两个关键的数组,一个是dfn,简称豆腐脑,是记录每一个节点在dfs中是第几个被搜到的(时间戳),还有一个就是low,代表了每一个节点的根,就是它的强连通分量的起始点。当一个点没有被搜到过,就继续往下搜,并且更新走...
2018-10-02 16:59:46
230
原创 Luogu p2107 小Z的AK计划 题解
题目链接读入的距离不一定是有序的,读进来先要以距离为关键字排序,对于本身距离大于有的总时间的,或者是本身时间大于总时间的,都处理掉。然后用大根堆来存AK的机房用的时间(不要存距离)。当遇到再往里塞一个时间要超限时,就把你前面用的最大的去掉,直到能再塞,再加上本身的距离(用while来实现)。下面是一段丑陋的AC代码:#include<bits/stdc++.h>using na...
2018-10-02 16:36:36
283
原创 Luogu p2103 道路值守 题解
题目链接这道题很明显是要用Floyd的,所以肯定先用Floyd跑一遍,求出任意两点之间的最路径。这个数据范围摆明了让你O(n^3)去过的,于是我们不难发现这道题可以DP来统计答案。跑完Floyd后,我们去枚举所有于j有连边且在i到j的最短路上的k,每找到一个,就将wzy[j]加1。统计完后,我们再去找所有在i到j最短路上的点(不需要连边),每找到一个,就将i和j这两个点之间的答案加上wzy[k...
2018-10-02 16:25:56
357
原创 bzoj3038 Luogu p4145 上帝造题的七分钟2 题解 线段树
题目链接这道题其实和上帝造题的七分钟1没有什么关系,是一道线段树的题。笔者是第一次看见区间整体开方的题,开始有点慌,结果发现并不难。通过计算,我们不难得出这道题最大可能有的数1e12只需要经过6次开方就可以变成接近1的数,我们又知道如果一个数等于1,那么它的开方永远还是1.因此,我们又可以发现,这道题的数据只有1e5,是可以支持暴力修改的,只需要看这段区间最大值是否超过1.所以,我们可以...
2018-10-02 10:21:27
329
原创 Luogu p4514 上帝造题的七分钟 题解 二维树状数组
题目链接裸体(题)就意味着身体(神题)标准全裸二维树状数组因为这道题二维线段树好像会爆空间,所以二维树状数组是最好的写法了二维树状数组十分的胡扯玄幻,通过一个乱七八糟二维的差分来实现二维区间快速修改查询。但是你以为你会二维树状数组就一定能过吗?这道题有一个猥琐卡人的地方,那就是卡常了。这道题卡常很严重,正常写法都会t掉。这时候,有两种方法可以过掉一,吸吸氧luogu现在有了O2优化...
2018-10-01 22:05:46
241
原创 第一篇博客,就先从最水的开始
读入输出优化现在很多代码在比赛的时候容易被卡常,导致程序A不掉如果是因为输入输出太长的话,你可能需要一个读入输出优化(真的很好用,暴力有时还能多拿分)读入优化代码(位运算会快一点)inline int read(){ int s=0,f=1;char c=getchar(); for(;!isdigit(c);c=getchar())if(c=='-')f=-1; for(;isd...
2018-09-30 22:51:35
163
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人