随笔分类 -  OJ -- HDU

摘要:题目传送门 通过看题解画图可以发现: 不论怎么转,一列里的横边/一行里的竖边始终平行 当我们加固一个格子时,会让它所在的这一行的竖边和这一列的横边保证垂直 而我们的目标是求所有竖边和横边都保证垂直的方案数 把一行里的所有竖边看成一个点,把一列里的所有横边看成一个点。一共$n+m$个点 把图看成二分图 阅读全文
posted @ 2019-03-20 18:45 guapisolo 阅读(275) 评论(0) 推荐(0)
摘要:题目传送门 题目大意:有$n$个小岛,每个小岛上有$a_{i}$个城市,同一个小岛上的城市互相连接形成一个完全图,第$i$个小岛的第$a_{i}$个城市和第$i+1$个小岛的第$1$个城市连接,特别地,第$n$个小岛的第$a_{n}$个城市和第$1$个小岛的第$1$个城市连接。现在要断掉图中的一些边 阅读全文
posted @ 2019-02-07 14:36 guapisolo 阅读(298) 评论(0) 推荐(0)
摘要:题面传送门 题目大意: 假设现在有一个排列,每个数和在它右面第一个比它大的数连一条无向边,会形成很多联通块。 定义一个联通块的权值为:联通块内元素数量的平方。 定义一个排列的权值为:每个联通块的权值之积 求长度为$n$所有排列的权值之和,$n\leq 1e5$,$1e4$组询问 原题面描述不清楚啊. 阅读全文
posted @ 2019-02-06 22:35 guapisolo 阅读(310) 评论(0) 推荐(0)
摘要:题目传送门 题目大意:给你一个长度为$n$的自然数序列$a$,定义一段区间的权值为这一段区间里所有数的和,分别输出权值为$[0,\sum a_{i}]$的区间的长度之和 想到了生成函数的话,这道题并不难做。但很多细节真是不太好搞 我们首先预处理出前缀和s,那么一段区间$[l,r]$的权值就是$s_{ 阅读全文
posted @ 2019-02-05 21:50 guapisolo 阅读(230) 评论(0) 推荐(0)
摘要:题目大意:略 题目传送门 四维偏序板子题 把插入操作和询问操作抽象成$(x,y,z,t)$这样的四元组 询问操作拆分成八个询问容斥 此外$x,y,z$可能很大,需要离散 直接处理四维偏序很困难,考虑降维 而$t$这一维有一个神奇的性质,任意两个四元组的$t$互不相同,是最好处理的,所以尽量保证$t$ 阅读全文
posted @ 2019-01-10 11:38 guapisolo 阅读(180) 评论(0) 推荐(0)
摘要:题目大意:让你维护一个字符串,支持在开头结尾插入字符,以及查询本质不同的回文串数量以及回文串总数量 开头结尾都维护一个$last$指针,如果插入新字符后,整个串是一个回文串,就把另一个$last$赋值成当前的$last$ 为什么这样做就是正确的呢? 首先,对于这道题而言,一个回文串开头/结尾是等价的 阅读全文
posted @ 2018-12-18 20:31 guapisolo 阅读(292) 评论(0) 推荐(0)
摘要:题目大意:当一个数字,从左到右依次看过去数字没有出现先递增接着递减的“山峰”现象,就被称作 Valley Number。它可以递增,也可以递减,还可以先递减再 递增。在递增或递减的过程中可以出现相等的情况。 比如,1,10,12,212,32122都是 Valley Number。 121,1233 阅读全文
posted @ 2018-11-28 20:32 guapisolo 阅读(206) 评论(0) 推荐(0)
摘要:题目大意:略 每次选择一个最大深度K,跑IDA* 估价函数H=8-中间8个格里出现次数最多的数的个数x,即把它填满这个数最少需要8-x次操作,如果dep+H>K,就跳出.. 深搜的时候暴力修改,记录操作的方向,回溯再改回来就行了,根本不用把网格压进状态里嘛.. 又水了一篇博客 阅读全文
posted @ 2018-11-24 11:38 guapisolo 阅读(165) 评论(0) 推荐(0)
摘要:题目大意:裸的八数码问题,让你输出空格的一条合法移动路径 首先利用康托展开对排列编号,可以预处理出排列,就不必逆展开了 然后利用A*算法求解 A*算法是一种启发式搜索,具体实现要用到优先队列/堆,不同于$dijkstra$,它的堆不是按照 初始状态向当前状态的花费$dis_{i}$进行贪心转移,而是 阅读全文
posted @ 2018-11-23 16:10 guapisolo 阅读(298) 评论(0) 推荐(0)
摘要:题目大意:给你一个8*8的棋盘,上面有四个棋子,给你一个初始排布,一个目标排布,每次移动,可以把一个棋子移动到一个相邻的空位,或者跨过1个相邻的棋子,在保证棋子移动不超过8次的情况下,问能否把棋盘上的棋子由初始排布变成目标排布 8*8的棋盘,刚好不爆ull,状压那些位置有棋子 然后从初始状态开始,暴 阅读全文
posted @ 2018-11-22 18:33 guapisolo 阅读(472) 评论(0) 推荐(0)
摘要:题目大意:给你一个无序的1~n的排列a,每次询问[l,r]之间任取两个数得到的最大gcd是多少 先对所有询问离线,然后把问题挂在区间的左端点上(右端点也行) 在预处理完质数,再处理一个next数组,表示 i 的任意一个质因子,这样我们分解质因数的时间降低到而不是 因为能对答案产生贡献的都是成对出现的 阅读全文
posted @ 2018-10-10 19:47 guapisolo 阅读(219) 评论(0) 推荐(0)
摘要:依然是扫描线,只不过是求所有矩形覆盖之后形成的图形的周长。 容易发现,扫描线中的某一条横边对答案的贡献。 其实就是 加上/去掉这条边之前的答案 和 加上/去掉这条边之后的答案 之差的绝对值 然后横着竖着都做一遍就行了 阅读全文
posted @ 2018-09-24 22:22 guapisolo 阅读(178) 评论(0) 推荐(0)
摘要:题目大意:让你在1~n中选择不多于k个数(n,k<=500),保证它们的乘积不能被平方数整除。求选择的方案数 因为质数的平方在500以内的只有8个,所以我们考虑状压 先找出在n以内所有平方数小于等于n的质数,然后我们把它们作为状压的状态 然后要对每个小于n数进行状压,如果它不能被它能被质数的平方整除 阅读全文
posted @ 2018-09-24 22:13 guapisolo 阅读(213) 评论(0) 推荐(0)
摘要:题目大意:给你一个无向连通图(n<=30),点分为高点和低点,高点数量<=15,如果两个高点和低点都直接连边,那么我们称这三个点形成一个valley,每个点最多作为一个valley的组成部分,求valley的最大数量 高点状压,然后枚举低点,判断这个低点能否影响答案 注意:上一层的值要全都先赋给这一 阅读全文
posted @ 2018-09-24 22:10 guapisolo 阅读(183) 评论(0) 推荐(0)
摘要:题目大意:一群猴子打字,给定猴子输入每种字符的概率以及输入次数,求输出的文本中出现指定字符串的概率 强烈建议看这篇文章:http://www.matrix67.com/blog/archives/366 里面对这道题的分析很详细 思路比较清奇,我们先用KMP求出指定串的next,接下来是DP的过程 阅读全文
posted @ 2018-09-24 22:05 guapisolo 阅读(166) 评论(0) 推荐(0)
摘要:题目大意:给你一个字符串,求所有前缀在原串的出现次数之和 KMP的next指针相当于可以转移的位置呀 把next指针当成边跑拓扑就行啦! 阅读全文
posted @ 2018-09-24 22:05 guapisolo 阅读(110) 评论(0) 推荐(0)
摘要:题目大意:给你两个串,一长一短,如果长串中某个子串和短串完全相同,则这个子串可以被替换成"#",求长串所有的表达形式....... 比如"hehehehe"和"hehe",则有5种情况,"#hehe","he#he","hehe#","##","hehehehe" 首先我们KMP/哈希找出长串中所有 阅读全文
posted @ 2018-09-24 22:04 guapisolo 阅读(164) 评论(0) 推荐(0)