随笔分类 -  实用算法——二分

摘要:这道题市面上就两种法:一种是SA+二分+主席树,一种是SAM+二分+主席树(有不少人打线段树合并???)(除此之外还有一种利用炒鸡水的数据的暴力SA,贼快.....)(当时学SA的时候没做这道题,现在早忘了SA了) 分析题意:就是对于一个字符串,每次询问一个子串在另一个子串里能匹配上的最大前缀(非严 阅读全文
posted @ 2018-01-16 21:42 TS_Hugh 阅读(269) 评论(0) 推荐(0)
摘要:首先让我们来介绍Krukal算法,他是一种用来求解最小生成树问题的算法,首先把边按边权排序,然后贪心得从最小开始往大里取,只要那个边的两端点暂时还没有在一个联通块里,我们就把他相连,只要这个图里存在最小生成树我们就一定可以找到他。(证明:首先如果我们没有选最小的边,那么他一定可以踢掉其他的边来使生成 阅读全文
posted @ 2017-10-12 20:06 TS_Hugh 阅读(354) 评论(0) 推荐(0)
摘要:对于最优解我们发现所有的最优解都可以是前多少多少个,那么我们就二分这个前多少多少个,然后用dfs去判解,我们发现在dfs的过程中如果不剪枝几乎必T,所以我们就需要一些有效的剪枝 I. 我们在枚举过程中每个数选什么是有前后顺序的,然而对于一些相同的数他们并没有顺序我们可以记录上个数的选择点,如果两数相 阅读全文
posted @ 2017-09-20 12:05 TS_Hugh 阅读(163) 评论(0) 推荐(0)
摘要:这个题我们可以想象成_ ___ __的一个水柱它具有一遍优一遍行的性质因此可以用来二分最小值len,而每次二分后我们都要验根,we可以把这个水柱想成我们在每个数段里取前一段的那个数后一段有也不选,而且最后一个区间的第一个数一定可以使这个数区间对应的数,那么我们只要在某个位置上不选或选就可以啦,这we 阅读全文
posted @ 2017-07-02 17:18 TS_Hugh 阅读(371) 评论(0) 推荐(0)
摘要://论全局变量的杀伤力....QAQ#include #include #include #include #include #define MAXN 100005 using namespace std; int f[MAXN]; struct Tree { int to,next; }c[MAXNson[MAXN]; int head[MAXN],t; inline void add(... 阅读全文
posted @ 2017-06-19 16:44 TS_Hugh 阅读(257) 评论(0) 推荐(0)
摘要:先说正解:把所有相同的数相成一个链在每一个区间里的种数就是不同链的链头,那么记录每个数的上个相同数所在位置,那么只要找出l到r之间前驱值在l之前的数的个数就可以了 本人打的暴力,有一个小技巧,用char代替int水题,用int里的值不同来去掉memset 阅读全文
posted @ 2017-06-15 11:07 TS_Hugh 阅读(226) 评论(0) 推荐(0)
摘要:关于在东北育才十天集训的一些收获与感想。 阅读全文
posted @ 2017-06-11 23:51 TS_Hugh 阅读(503) 评论(0) 推荐(0)