摘要: 二进制操作+线段树永久化lazy操作 暴力模拟你可能都会写错哦!因为你二进制操作都可能写错! 让我们先解决这两个所谓的“基本操作”: 前$k$位按位取反 我们操作的思路是先把前$k$位独立分开,然后就对剩下的那$k$位进行单独操作。 如何对一个数取反?用~符号? 注意到一个二进制的结论:负数=正数的 阅读全文
posted @ 2018-11-06 22:10 Garen-Wang 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 一道可能不太明显的状压dp 为什么说不明显呢?因为可以状压的元素藏到了后面。 题意已经很清晰了:每个点一个颜色,找到一条最短的点数为$k$、恰好经过全部$k$种颜色的路径。你需要求出这条路径的长度。 虽然$n \leq 100$挺大的,但是$k \leq 13$,而我们要走的也只跟$k$有关,所以我 阅读全文
posted @ 2018-11-06 21:58 Garen-Wang 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 挺水的棋盘dp题目类型 虽然说水,但是我今晚快一个多小时卡在这道题上面。这反映了我对这类dp的不熟悉。 这道题一看上去就知道应该是要dp的,每一步只能走右或走下就已经提示给你要这么转移。 做dp首先想明白怎么定义状态: 设 表示当前走到$i$行$j$列,目前的朝向向右(0)或向下(1)的最大或最小操 阅读全文
posted @ 2018-11-06 21:51 Garen-Wang 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 显然的数论水题吧 这道题一开始来看的话要看一下,然后就能发现这是个数学问题。 显然要是LCA一定在她的子树内,不然不可能她是LCA。 所以先把特殊情况搞掉:自己跟自己只有1种情况,自己跟子树内其他的节点加上双向共有$2 \times (size[u] 1)$种情况。 剩下来的就是那些两个不同子树内的 阅读全文
posted @ 2018-11-06 21:44 Garen-Wang 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 模拟退火求最小球覆盖和最小圆覆盖 原本在我的认识中,模拟退火一定要有一个随机化在里面。 但是有些模拟退火,你可以清楚地意识到答案是可以向某个方向逼近的,这个时候就不用随机了。 比如像第一道题POJ 2069,这道题求的就是最小球覆盖。 对于任意的初始点,我们都能算出以当前点作为圆心的覆盖半径是多少。 阅读全文
posted @ 2018-11-06 09:29 Garen-Wang 阅读(107) 评论(0) 推荐(0) 编辑
摘要: C++党的福音系列 其实这道题的题意有点乱。我在这里总结一下题意。 一个未知的01串,通过 一次 某种的变换,能够变成转换后的单词(输入的单词)。你的任务是倒推出转换前的单词。 可能有多解,但是正向转换的时候有考虑顺序:操作4(不改变)最优先,否则按操作1、2、3顺序为优先级。 操作2的时候先尝试删 阅读全文
posted @ 2018-11-06 09:22 Garen-Wang 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 缩点+分层图+最长路 通过这道题,我再次体会到了分层图的强大之处。 首先可以发现,那些属于同一个强连通分量的点是可以直接看成一个点的,因为他们可以互相访问。 那么直接缩点,可以建出一个新图,就得到了一个DAG。 这道题最难的地方就是在于一次逆向行走。 遇到这种题目,我们直接使用分层图解决。 既然只能 阅读全文
posted @ 2018-11-06 09:13 Garen-Wang 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 部分分分足够的题还要打正解就是折磨了哇! 先看一下这道D2T3的部分分: $n \leq 1000$的部分分,直接暴力模拟即可,因为$q \leq 500$,所以$O(nq)$的模拟是可以过的。30pts到手。 同样$q \leq 500$,但是$n \leq 300000$怎么办?离散化一下,继续 阅读全文
posted @ 2018-11-06 09:07 Garen-Wang 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 贡献法+组合数学 讲道理一看到辣么小的$n$,我就想到了状压dp。 枚举子集?哦,$O(3^n)$的复杂度。但是我没有注意到$n=20$的时候是过不了的。 接下来我就在想70pts的状压dp要怎么写? 没有清楚定义状态的我连样例2都过不了,只能够手动枚举拿30pts。 ~~所以最简单的月赛也爆炸了~ 阅读全文
posted @ 2018-11-06 08:43 Garen-Wang 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 纯最短路模板题? 遇到这种题目就想到了BFS,但是状态会不会太多了啊? 我们可以借助NOIP2017PJT3“棋盘”的思想,用SPFA搞掉。 我们同样搞一个 数组, 数组,在队列里面自己搞个结构体或者pair。 然后就可以类似于SPFA那样写出来一个奇怪的程序了。 不知道为什么,我死活会T掉几个点只 阅读全文
posted @ 2018-11-06 08:12 Garen-Wang 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 肥料掺了金坷垃,一袋能顶两袋撒! 先给出题人点32个赞! 看到这种输入一个数输出一个数的题目就想打表,但是发现$k$辣么大! 所以找规律咯! 不难发现,只有1和2的倍数是满足条件的。 所以题目等价于求$2^{k 1} \bmod 123456789$。 所以直接long long+ksm搞掉。 代码 阅读全文
posted @ 2018-11-06 08:05 Garen-Wang 阅读(150) 评论(0) 推荐(0) 编辑
摘要: “信心赛”T1 如果只要求取一个点的话,直接套用蓝书里面的结论:取中位数即可。 但是这里要求$k$个点,怎么办? 可以定义一个函数为一个点的不合理值,那么可以发现这个函数是先下降后上升的。 换句话说:我们已经知道了中位数那里就是峰底,那么剩下的$k 1$个点就在这些点的旁边取即可。 ~~我的思路也是 阅读全文
posted @ 2018-11-06 08:00 Garen-Wang 阅读(245) 评论(0) 推荐(0) 编辑
摘要: 单调栈模板题 这道题很明显就是让你求最长的向右的都比她小的连续区间长度(不能有中断)。 遇到这种问题我们可以使用单调栈,能够在$O(n)$的时间内求出来。 这是我模拟一下单调栈工作的机制: 可以发现,我们维护的单调栈具有上升的单调性,每次入栈一个新元素就把比她小的元素都搞掉。 其实也不难发现:每个元 阅读全文
posted @ 2018-11-06 07:51 Garen-Wang 阅读(79) 评论(0) 推荐(0) 编辑