随笔分类 - OI
摘要:C++党的福音系列 其实这道题的题意有点乱。我在这里总结一下题意。 一个未知的01串,通过 一次 某种的变换,能够变成转换后的单词(输入的单词)。你的任务是倒推出转换前的单词。 可能有多解,但是正向转换的时候有考虑顺序:操作4(不改变)最优先,否则按操作1、2、3顺序为优先级。 操作2的时候先尝试删
阅读全文
摘要:缩点+分层图+最长路 通过这道题,我再次体会到了分层图的强大之处。 首先可以发现,那些属于同一个强连通分量的点是可以直接看成一个点的,因为他们可以互相访问。 那么直接缩点,可以建出一个新图,就得到了一个DAG。 这道题最难的地方就是在于一次逆向行走。 遇到这种题目,我们直接使用分层图解决。 既然只能
阅读全文
摘要:部分分分足够的题还要打正解就是折磨了哇! 先看一下这道D2T3的部分分: $n \leq 1000$的部分分,直接暴力模拟即可,因为$q \leq 500$,所以$O(nq)$的模拟是可以过的。30pts到手。 同样$q \leq 500$,但是$n \leq 300000$怎么办?离散化一下,继续
阅读全文
摘要:贡献法+组合数学 讲道理一看到辣么小的$n$,我就想到了状压dp。 枚举子集?哦,$O(3^n)$的复杂度。但是我没有注意到$n=20$的时候是过不了的。 接下来我就在想70pts的状压dp要怎么写? 没有清楚定义状态的我连样例2都过不了,只能够手动枚举拿30pts。 ~~所以最简单的月赛也爆炸了~
阅读全文
摘要:纯最短路模板题? 遇到这种题目就想到了BFS,但是状态会不会太多了啊? 我们可以借助NOIP2017PJT3“棋盘”的思想,用SPFA搞掉。 我们同样搞一个 数组, 数组,在队列里面自己搞个结构体或者pair。 然后就可以类似于SPFA那样写出来一个奇怪的程序了。 不知道为什么,我死活会T掉几个点只
阅读全文
摘要:肥料掺了金坷垃,一袋能顶两袋撒! 先给出题人点32个赞! 看到这种输入一个数输出一个数的题目就想打表,但是发现$k$辣么大! 所以找规律咯! 不难发现,只有1和2的倍数是满足条件的。 所以题目等价于求$2^{k 1} \bmod 123456789$。 所以直接long long+ksm搞掉。 代码
阅读全文
摘要:“信心赛”T1 如果只要求取一个点的话,直接套用蓝书里面的结论:取中位数即可。 但是这里要求$k$个点,怎么办? 可以定义一个函数为一个点的不合理值,那么可以发现这个函数是先下降后上升的。 换句话说:我们已经知道了中位数那里就是峰底,那么剩下的$k 1$个点就在这些点的旁边取即可。 ~~我的思路也是
阅读全文
摘要:单调栈模板题 这道题很明显就是让你求最长的向右的都比她小的连续区间长度(不能有中断)。 遇到这种问题我们可以使用单调栈,能够在$O(n)$的时间内求出来。 这是我模拟一下单调栈工作的机制: 可以发现,我们维护的单调栈具有上升的单调性,每次入栈一个新元素就把比她小的元素都搞掉。 其实也不难发现:每个元
阅读全文
摘要:终于掌握了两种处理哈希冲突的方法了!特意来总结 哈希是很好的一样东西。~~但是 更好啊~~ By the way, NOIP是可以用 的,需要这么用: 亲测在NOI Linux下面可以编译,所以就ok了哇! 解决哈希冲突的好方法有两种:一种是开放地址法,一种是拉链法。 开放地址法 一句话的思路:自己
阅读全文
摘要:神奇的解法(分治) 这道题是亲爱的dhk推荐给我写一写的水题,我TM还写出来了。。。 题意简化:把$n$分成若干份,满足用这若干份能表达出$[1,n]$内任意的整数且没有重复的大于1的,求最小划分的份数。 ~~感觉自己简化得很鸡肋~~ 看上去就想打暴力,但是又好像挺难打的。因为要算出每个数能否被表达
阅读全文
摘要:数据结构学傻了吧! 这道题我一看上去:哦,数据结构。 再看上去:哦,分块题啊。 兴致冲冲地敲了个不熟练的分块,直接WA到只剩10pts。 过后很气地打了个暴力,60pts。。。 果然是暴力出奇迹啊! 不服气的我再打了个分块,终于写对了,却只有65pts,因为数据范围还是很大的,根号算法撑不住啦! ~
阅读全文
摘要:去年模拟赛D1T1 ~~杨爷对Fibonacci情有独钟~~ 我乍一看是不知道这棵树有什么规律的。但是看久了就会发现一个点跟她爸编号的差值跟她的颜色有关。 其实原理就在这里了。 颜色代表一个点她是第几轮被生的,那么通过暴力搞一搞就能发现有这么一个事实:一个点跟她爸的下标差等于斐波那契数列的第$(co
阅读全文
摘要:根号算法 这道题暴力92pts。。。 所以说暴力出奇迹! 其实用什么哈希都是在做幌子,要你求的就是从$k$位置开始,隔$p$个数的数字加起来的和。 我们考虑用一个二维数组存下来,用$ans[p][k]$表示模数为$p$,余数为$k$的答案。 如果把所有的模数都处理,跟暴力是没有差别的,甚至还会更劣。
阅读全文
摘要:曾经吓死我的背包题 一看就知道是背包啊, 但是不是一般的01背包。 但说到底也就5种决策: 1. 不取主件 2. 只取主件,不取任何附件 3. 取主件,取附件1,不取附件2 4. 取主件,取附件2,不取附件1 5. 全都取 按照这5种决策,在她们各自合法的情况下转移即可解决。 代码:
阅读全文
摘要:很随意的字符串模拟题 题外话:样例很良心! 这道题就直接看题意做就可以了。不要管其他花里胡哨的话,直接照点去做就可以了。 因为数据范围真的小,所以可以直接用string,甚至可以用stringstream来做! 不知道为什么是TG+难度啊。 代码: cpp include include inclu
阅读全文
摘要:dp例题 or 水题 先说下题意吧,题面给的题意我都看不懂: 有$n$本书,每本书有一个页数%a_i%。每个人能写连续的几本书,他们写书的速度可以认为是1页1天。求让$k$个人抄完这$n$本书的最短时间。 PS:$k$个人抄书的时间是其中抄的最慢的人用的时间。 dp的状态非常容易想: 表示前$i$本
阅读全文
摘要:次短路模板题吧 题意已经非常裸了:求无向图的1到n次短路。 直接套用最短路(dijkstra)的主要框架。但在这个的基础上添加另外一个数组 。 走到一条边的时候来三个判定: 1. `dist[u] + weight dist[v] && dist[u] + weight include includ
阅读全文
摘要:T1爆零系列 这道题是一道纯模拟,用心写一写一定能些出来。 但是T1爆零怎么办啊??? 检查这些东西: 1. 开数组的范围。最大差不多就开一千万的一维数组,最小也一定要比最大数据范围 大至少5以上!!千万不要看错数据范围! (我就崩在这里了) 2. 看清所有的题目条件,特别是所有特意加粗的那些字体!
阅读全文
摘要:真正的最短路计数问题 这道题就是传说中的最短路计数问题了。 其实最短路计数就是在最短路算法上面添加两句话就完事了。 一句是在判断有道路与当前最短路一样长的时候,答案会变多。 一句是在更新最短路的时候,答案会变成从那个点开始的最短路。 所以就没有问题了? 这道题不仅有重边,还可能后面给你更小的边! 解
阅读全文
摘要:一道假的蓝题,真的假 ~~讲道理我没看题解乱搞的就过了~~ 一看就知道要二分答案啊。 初始化直接对所有的边排下序,贪心地取一号路,用并查集维护一下连通性就能建出生成树。我们要求的其实就是生成树。 方案因为有spj所以乱搞就可以了。我用vector再套pair,排一下第一维就可以了。 代码:
阅读全文

浙公网安备 33010602011771号