09 2018 档案

摘要:这个题一看就是nim游戏的变形。每次先手取出巧克力就是新建一个nim,但假如先手取一个为0的而且无论后手怎么取剩下的都无法为零就行了。然后用dfs跑。 题干: 代码: 阅读全文
posted @ 2018-09-29 22:58 DukeLv 阅读(2115) 评论(0) 推荐(0)
摘要:又一道区间dp,和上一篇类似,但是比他简单,这个只有两种转移方法,不是很复杂。直接判断是否为重复的串就行。 题干: 代码: 阅读全文
posted @ 2018-09-29 22:31 DukeLv 阅读(140) 评论(0) 推荐(0)
摘要:这个题我状态想对了,但是转移错了。。。dp的代码难度都不大,但是思考含量太高了。。不会啊,我太菜了。 其实这个题就是一个正常的区间dp,中间多了一个特判的转移就行了。 题干: Description 给一个由小写字母组成的字符串,我们可以用一种简单的方法来压缩其中的重复信息。压缩后的字符串除了小 写 阅读全文
posted @ 2018-09-29 21:37 DukeLv 阅读(230) 评论(0) 推荐(0)
摘要:这个题bzoj上没有图,luogu上样例有问题。。。其实这个题代码不难,但是思考起来还是有一定难度的,其实这些题的重点都在于思考。我就不写了,洛谷上唯一的题解写的挺好,大家可以看一看。 题干: 在dos系统诞生以前,美国曾研究出一种类似的操作系统,名为Tinux系统。但由于硬件设施的制约,Tinux 阅读全文
posted @ 2018-09-29 20:25 DukeLv 阅读(551) 评论(0) 推荐(0)
摘要:这个题有点意思,其实不是特别难,但是不太好想...中间用二分找最大的可买长度就行了. 题干: 代码: 阅读全文
posted @ 2018-09-28 14:56 DukeLv 阅读(177) 评论(0) 推荐(0)
摘要:这个题就是一道树链剖分的裸题,但是需要有一个魔性操作___编号数组需要开longlong!!!震惊!真的神奇. 题干: 代码: 阅读全文
posted @ 2018-09-28 11:37 DukeLv 阅读(153) 评论(0) 推荐(0)
摘要:这个题就是一道树剖板子题,就是每走一步就把所有的经过点加一就行了。还有,我的树剖板子没问题!!!谁知道为什么板子T3个点!我不管了!反正这道题正常写A了。 题干: 代码: 顺便附赠树剖板子: 阅读全文
posted @ 2018-09-26 23:46 DukeLv 阅读(160) 评论(0) 推荐(0)
摘要:这个状压dp其实很明显,n < 18写在前面了当然是状压.状态其实也很好想,但是有点问题,就是如何判断空间是否够大. 再单开一个g数组,存剩余空间就行了. 题干: 代码: 阅读全文
posted @ 2018-09-26 19:03 DukeLv 阅读(180) 评论(0) 推荐(0)
摘要:自己想出来了!这个dp比较简单,而且转移也很简单,很自然,直接上代码就行了. 题干: 一种EDIT字母编辑器,它的功能是可以通过不同的变换操作可以把一个源串X [l..m]变换为新的目标串y[1..n]。EDIT提供的变换操作有: 源串中的单个字符可被删除(delete); 被替换 (replace 阅读全文
posted @ 2018-09-26 14:18 DukeLv 阅读(285) 评论(0) 推荐(0)
摘要:其实之前写过一个板子,但是一点印象都没有,所以今天重写了一下,顺便把这个题当成板子就行了。 其实费用流就是把bfs换成spfa,但是中间有一个原则,就是费用优先,在费用(就是c)上跑spfa,顺便求出流量。 其实理解起来还算简单,就是先spfa找最小费用路径,然后在路径上找能跑的最大流。 题干: 代 阅读全文
posted @ 2018-09-24 19:54 DukeLv 阅读(223) 评论(0) 推荐(0)
摘要:其实就是一道很简单的栈,只要明白什么情况会被挡住就行了。假如斜率一样则下面的被挡住,假如不一样就算交点,看那个交点在上面就行了。 题干: 代码: 阅读全文
posted @ 2018-09-24 11:35 DukeLv 阅读(154) 评论(0) 推荐(0)
摘要:就是一道离散化的裸题,但是在写的时候遇到了一些不可描述的问题,但是还是很顺利的。 题干: 代码: 阅读全文
posted @ 2018-09-23 21:49 DukeLv 阅读(223) 评论(0) 推荐(0)
摘要:最近因发现基础不好而狂刷板子,导致bzoj的计划放了一段时间。现在板子搞得差不多了,还剩一个90分的负环和70分的树刨搞不出来,就很慌,希望大家帮我调一下,都是T了。 接下来重心放到bzoj去,按照hzwer的顺序吧。 下面放代码: 90分负环: 70分树刨: 有人帮我debug吗? 阅读全文
posted @ 2018-09-23 21:11 DukeLv 阅读(162) 评论(4) 推荐(0)
摘要:之前搞了一个树的中心,结果当时把点分治给扔下了,现在搞一搞。其实点分治的分治思想很明显,就是把树切成一个个小树,然后在重心的位置再分治就行了。 代码实现有一定困难,但就我觉得前一个函数和树刨的dfs1很像吗,详情见代码。 题干: 代码: 阅读全文
posted @ 2018-09-23 20:22 DukeLv 阅读(234) 评论(0) 推荐(0)
摘要:这是一道简单版的AC自动机,之前我搞过一个这个东西,但是没具体学习,现在来学一下。 其实就是一个trie树上跑的kmp,每个节点存一个fail指针,指向前一次出现的地方。查询的时候直接加一起就行了。 题干: 代码: 阅读全文
posted @ 2018-09-22 22:57 DukeLv 阅读(146) 评论(0) 推荐(0)
摘要:这是洛谷一个比赛中的一道题,和去年NOIP D1T1挺像。我看了一眼之后想“这不是小学奥数吗?求一个数字和就好了呀”。。。然后,60,剩下T了,gg。 只好看正解,但是一脸懵逼???然后看了证明,c**,竟然是先转换然后等差数列求和,说白了又是一道猜结论的题。。。我太菜了。 题干: 60分 AC代码 阅读全文
posted @ 2018-09-22 21:50 DukeLv 阅读(369) 评论(0) 推荐(0)
摘要:这个题是一道差分约束系统的裸题,什么是差分约束系统呢?就是给了一些大小条件,然后让你找一个满足的图。这时就要用差分约束了。 怎么做呢?其实很简单,就是直接建图就好,但是要把所有条件变为小于等于号,假如是大于等于就要移项,小于要减一。然后根据这个建图。 相等怎么办?好办,就直接连就行了,长度随意,反正 阅读全文
posted @ 2018-09-22 21:11 DukeLv 阅读(182) 评论(0) 推荐(0)
摘要:这个题是一个卡特兰数的裸题,为什么呢?因为可以通过划分来导出递推式从而判断是卡特兰数,然后直接上公式就行了。卡特兰数的公式见链接。 https://www.luogu.org/problemnew/solution/P2532 代码实现不难,就是一个高精乘|除低精。 题干: 题目描述 输入输出格式 阅读全文
posted @ 2018-09-22 20:16 DukeLv 阅读(188) 评论(0) 推荐(0)
摘要:manacher是一种处理字符串的算法,用来判断最长的回文串的长度. 主要思路就是要让指针跳跃就行了,mid和maxright,分别代表对称轴和最左边的位置.再搞一个存最长串的东西,来回更新答案. (其实就是乱搞暴力) 题干: 代码: 阅读全文
posted @ 2018-09-22 13:59 DukeLv 阅读(125) 评论(0) 推荐(0)
摘要:矩阵快速幂是一个快速幂的延伸,但实际上区别不大,主要思想是一样的. 题干: 代码: 阅读全文
posted @ 2018-09-21 18:56 DukeLv 阅读(199) 评论(0) 推荐(0)
摘要:三分是一种求函数的最高点的算法,好像很好做?核心思想就是每次取中点左边一点的值和右边一点的值,判断左右的函数值哪个大,然后舍掉较小的区间就行了. 我才知道这是二分求导... 题干: 代码: 阅读全文
posted @ 2018-09-21 14:40 DukeLv 阅读(178) 评论(0) 推荐(0)
摘要:2-sat问题主要解决的是一类二取一的问题.做法就是先建图,然后跑tarjan,然后就判断正负是否冲突,假如有冲突,就说明无解,否则就判断哪个的序号大...话说我也不知道为什么序号大就代表1. 题干: 题解: 阅读全文
posted @ 2018-09-21 14:19 DukeLv 阅读(161) 评论(0) 推荐(0)
摘要:裴蜀定理其实不是一种特殊的算法,他就是一个定理,来证明ax + by | gcd(x,y) 其实这个定理正确性显然,但是这个板子其实看不出来和这个定理有什么关系,这就很慌. 但是仔细一想,其实就是求出来这些数的gcd就行了,但是负数要变成正数. 题干: 代码: 阅读全文
posted @ 2018-09-21 11:47 DukeLv 阅读(202) 评论(0) 推荐(0)
摘要:这个题是对刚才线性基的一个补充,就是中间有一些小贪心,贪心就很有意思,先按权值排序,然后就瞎搞就行了. 题干: 代码: 阅读全文
posted @ 2018-09-21 11:30 DukeLv 阅读(190) 评论(0) 推荐(0)
摘要:线性基就是一种可以维护异或和的东西,我还没太懂它到底有什么用,但是很好写,而且思路也很清晰,所以板子还是很简单的。 题干: 代码: 阅读全文
posted @ 2018-09-20 23:01 DukeLv 阅读(192) 评论(0) 推荐(0)
摘要:一开始不太会,结果看完题解就是一个建图的网络流。然后就结了。 题干: 代码: 阅读全文
posted @ 2018-09-19 19:16 DukeLv 阅读(159) 评论(0) 推荐(0)
摘要:这个题的n<15,一看就是状压dp。但是状态不是很好想。f[][]存i关的状态j。 这个题另一个关键思想在于倒推,我一开始想的是正推,但是只能记忆化了。 题干: 代码: 阅读全文
posted @ 2018-09-19 15:50 DukeLv 阅读(120) 评论(0) 推荐(0)
摘要:这个题正解是最小生成树,但是。。。最大值最小?一看就是二分答案啊!不用多想,直接二分答案加暴力验证就行了。 题干: 代码: 阅读全文
posted @ 2018-09-18 20:12 DukeLv 阅读(190) 评论(0) 推荐(0)
摘要:这就是一道变得比较奇怪的线段树,维护每个区间的最大值和区间和,然后关键在于每次取根号的话数值下降的特别快,不用几次就都是1了,所以每次暴力单点修改,然后直接找区间最大值,假如区间最大值是1的话,就直接返回就行了。 具体看代码就行了。 题干: 代码: 阅读全文
posted @ 2018-09-18 19:16 DukeLv 阅读(147) 评论(0) 推荐(0)
摘要:这个题一开始看着没什么思路,但是一看题解就明白了不少,主要是数学证明,代码很好写。 贴个网址: hzwer 题干: 代码: 阅读全文
posted @ 2018-09-18 16:10 DukeLv 阅读(169) 评论(0) 推荐(0)
摘要:其实就是一个爆搜加剪枝。直接爆搜肯定不行,而A*算法则是想假如剩下都是最优的话,我当前步数还是不足以达到这个状态,那么就直接返回,因为最优状态也无法做到显然不行。 这道题可以用A*最主要就是因为有15步上限这样的明显条件。 还有一个小优化,就是 就是这个dx和dy的枚举顺序,不知道为什么,这样枚举就 阅读全文
posted @ 2018-09-18 16:01 DukeLv 阅读(165) 评论(0) 推荐(0)
摘要:就是基于普通数独上的一点变形,然后就没什么了,普通数独就是进行一边dfs就行了。 题干: 题目描述 输入格式 输入一共15行,包含一个新数独的实例。第奇数行包含左右方向的符号(<和>),第偶数行包含上下方向的符号(^和v)。 输出格式 输出包含9行,每行9个1~9的数字,以单个空格隔开。输入保证解惟 阅读全文
posted @ 2018-09-17 18:43 DukeLv 阅读(237) 评论(0) 推荐(0)
摘要:就是一道最短路的裸题,直接跑spfa就行了。(spfa死了) 最后在答案处判断是否障碍物太多,然后就直接找最大值就行。 (数据特别水,我错误算法60) 题干: 代码: 阅读全文
posted @ 2018-09-16 22:19 DukeLv 阅读(211) 评论(0) 推荐(0)
摘要:平衡树题,求每个点的前驱,照例可以用set水过。。。(平衡树还是不会写) 又新学了一个用法: set <int> ::iterator s1; 这样s1就可以直接附为set中的地址了。但是调用值的时候要加一个*。 题干: 代码: 阅读全文
posted @ 2018-09-13 20:30 DukeLv 阅读(249) 评论(0) 推荐(0)
摘要:其实就是并查集的题。维护一个前缀和,然后用并查集维护前缀和,每次判断是否合理就行了。 题干: 代码: 阅读全文
posted @ 2018-09-13 19:50 DukeLv 阅读(144) 评论(0) 推荐(0)
摘要:想明白算法之后特别水,因为b只有可能出现一次,所以直接在b的左右找就行了,比他大的为1,比他小的为-1,然后维护前缀和就行了。 假如b有可能出现多次呢?按照这种方法好像也很好办,就是枚举每个点就行了,复杂度有点大,所以直接求一遍前缀和就行了。 题干: 代码: 阅读全文
posted @ 2018-09-13 19:21 DukeLv 阅读(206) 评论(0) 推荐(0)
摘要:原来做过,看大家都做这道题都热情高涨,沈爷爷debug这道题4天,作为告诉他这个题的人,我还有点不好意思。。。我自己也就做了一个小时。 其实这个题思路还好,就是维护每个点的出块次数和跳出块的位置,然后访问的时候直接调用块。 这个题还有一个比较坑的地方,就是每个绵羊只有到队尾的时候才会被弹飞,所以不用 阅读全文
posted @ 2018-09-12 23:37 DukeLv 阅读(136) 评论(0) 推荐(0)
摘要:先检讨一下,前一段时间开学,做题懒得发博客,也不总结。。。现在捡起来。 这个题一看是裸的二分图匹配,但是仔细一看还有一些区别,就是必须要连续的连接,否则直接退出。因为前一道题答不出来的话后面的题就没有机会了。 顺便练一下匈牙利算法,跑二分图还是很好写的。 题干: 代码: 阅读全文
posted @ 2018-09-12 11:57 DukeLv 阅读(455) 评论(0) 推荐(0)
摘要:虽说是模板题,但是竟然中间有dp的部分...先tarjan缩点,重新建图.然后记忆化搜索,搜索dag中的最小环. 题干: 代码: 阅读全文
posted @ 2018-09-07 15:50 DukeLv 阅读(276) 评论(0) 推荐(0)
摘要:这个题主要是预处理比较复杂,先枚举打每只鸟用的抛物线,然后找是否有一个抛物线经过两只鸟,然后就没了。 题干: 代码: 阅读全文
posted @ 2018-09-07 12:44 DukeLv 阅读(300) 评论(0) 推荐(0)
摘要:只想做水题,大家有没有值得做的题啊???(我没做过的,或博客没发过的) 阅读全文
posted @ 2018-09-06 22:10 DukeLv 阅读(108) 评论(0) 推荐(0)
摘要:竟然模拟退火能做!我就直接抄代码了,我加了点注释。 题干: 代码: 阅读全文
posted @ 2018-09-06 17:34 DukeLv 阅读(302) 评论(0) 推荐(0)
摘要:两遍dfs,第一遍有点像找重链,第二遍维护答案,每个点维护一个当前深度,然后就没啥了。 ps:memset(lst,-1,sizeof(lst));这一句多余的话让我debug半天。。。 题干: 代码: 阅读全文
posted @ 2018-09-05 23:05 DukeLv 阅读(187) 评论(0) 推荐(0)
摘要:其实说是概率dp,本质上和dp没什么区别,就是把所有可能转移的情况全枚举一下就行了,不过dp方程确实有点长。。。 ps:这个题的floyed我竟然之前写跪了。。。 题目: 题目描述 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程。 在可以选择的课程中,有 2n2n2n 节 阅读全文
posted @ 2018-09-05 22:59 DukeLv 阅读(156) 评论(0) 推荐(0)
摘要:没调出来,明天搞。 阅读全文
posted @ 2018-09-04 20:06 DukeLv 阅读(124) 评论(0) 推荐(0)
摘要:deque真的秀,queue和stack。。。没啥用了啊。操作差不多,就是在前面加一个front||back_就行了。 题干: 题目描述 题目描述 约翰的N只奶牛(编为1到N号)正在直线上排队.直线上开始的时候一只牛也没有.接下来发生了S(1≤S≤100000)次事件,一次事件可能是以下四种情况之一 阅读全文
posted @ 2018-09-01 14:57 DukeLv 阅读(206) 评论(0) 推荐(0)
摘要:直接最短路板子,dij堆优化。 题干: 代码: 阅读全文
posted @ 2018-09-01 13:42 DukeLv 阅读(239) 评论(0) 推荐(0)