摘要:
思路: 区间逆序数即是交换次数。 逆序数,可以用树状数组吧。 怎么处理区间变换的时候求逆序数啊。。 这里分成左边的增/删,右边的增/删 因为是按时序插入, 所以左边增,增一个数,计算:ans+=sun(cur_val-1)[比他小的数的个数] 那么删:删一个数,计算ans+=sun(cur_va...
阅读全文
posted @ 2017-02-18 00:20
see_you_later
阅读(137)
推荐(0)
摘要:
THE FIRST 莫队算法。 /************************************************************** Problem: 2038 User: keyboarder_zsq Language: C++ Result:...
阅读全文
posted @ 2017-02-17 21:29
see_you_later
阅读(133)
推荐(0)
摘要:
先膜拜watashi! 前言: 比赛的时候,确定的是这是一个博弈,然后就是各种瞎猜,后面想到DP[ x ][ y ]代表x表白色的状态,y表黑色的状态,无果。挂机开始。GG、巨菜。 思路: 这一发记忆化搜索真是玄学。 仔细想想,首先我只要求权值最大,我不在乎输赢。 直接就是dp[i][j][k]...
阅读全文
posted @ 2017-02-17 20:27
see_you_later
阅读(118)
推荐(0)
摘要:
前言: 和队友一发入魂,很强势。 比赛中题目长的,就和队友一起读,这样比较快,然后还不会梦游,把点一句一句地搞出来。 思路: 在头5次,每次有人踢球就可能会输。 后面谁没进,对方进了救输。 代码: //#include #include#include#include#include#inclu...
阅读全文
posted @ 2017-02-17 18:54
see_you_later
阅读(128)
推荐(0)
摘要:
题意: 百度。 思路: 一个串的插入只能搞出这个串的前缀,然而对于要query的串是子串,所以插入的时候暴力插入所有字母开头的串。。。。 然后还要注意到自己的串本身会叠加字典树中的前缀,要标记掉。 #include using namespace std;typedef long long L...
阅读全文
posted @ 2017-02-16 20:22
see_you_later
阅读(141)
推荐(0)
摘要:
额。。有点遗忘了树状数组特性了。。印象中一直是前缀和,然后一定要记住树状数组是把给出的值(值太大可能可以离散化)也就是点到了区间,然后这个点存的值就是由自己来定了。 题意: 百度。 思路: 树状数组是用来标记的!值->区间点! 因为这里值重复是算的,所有树状数组存的是区间上该位置的个数。 0:插...
阅读全文
posted @ 2017-02-16 19:31
see_you_later
阅读(160)
推荐(0)
摘要:
题意: 有n个区间,每个区间覆盖区间里一段数,求最大连续区间长度被覆盖k次,并输出选取的区间。 思路: 贪心; 感觉一开始肯定是要把区间按left从小到大排序的。 然后肯定是连续k个区间能够达到的重叠最长? 因为left已经足够小了? 3 2 1 100 30 70 31 78 这个案例就说明...
阅读全文
posted @ 2017-02-15 12:24
see_you_later
阅读(161)
推荐(0)
摘要:
在搜1011的时候误搜了1111,简单BFS吧,多一个X就是多四个面,每次看看他的四个面有多少个重复的,然后剪掉,最后答案加上就好了; code: //#include #include#include#include#include#include#includeusing namespace...
阅读全文
posted @ 2017-02-14 22:14
see_you_later
阅读(130)
推荐(0)
摘要:
前言(膜法): 早上10点多开始膜的,然后到中午交了一发,感觉膜法不对啊!然后就兴起小窗了一发管理员,然后管理员给我发了in,out数据。。。可是太大并没有什么可取性。。。 还是自己试,然后发现自己搞的案例都过,后面放着不玩了,然后队友给了我一题以前做过的dfs写,然后写了以后T了,后面我就跟...
阅读全文
posted @ 2017-02-14 21:40
see_you_later
阅读(175)
推荐(0)
摘要:
题意: 给你一堆棒子,这些棒子是你从一堆一样的棒子折断而来的, 现在你忘记了是从那一堆一样的棒子的长度,让你写一个程序,求最短的长度。 思路: 首先这个棒长肯定是和的约数,且大于最大值。 然后是sort一下棒子长度从大到小(我也不知道为啥可行) 最后就是一个判重剪枝: 注意判重剪枝,是对相同情况...
阅读全文
posted @ 2017-02-14 21:25
see_you_later
阅读(173)
推荐(0)
摘要:
(温馨提示:图片外部食用更加) mid=(left+right)>>1,midmid=(mid+right)>>1; 举凸性函数的例子: 首先我们一定要明确问题:求极值,这里是极大值。 如图, 第一种情况下:mid一定在midmid的左边,而且为什么只能确定左端?因为midmid位于极值位...
阅读全文
posted @ 2017-02-13 22:55
see_you_later
阅读(255)
推荐(0)
摘要:
先贡献几个数据(没用别怪我): /*ab40 ab1 ab0 ab1 ababababac40 aba1 aba0 abab1 abababcdefghijklmnopqrstuvwxyz30 abc1 def1 jmnabcdabcd30 cd0 abcd0 abcd*/ 思路: 因为要...
阅读全文
posted @ 2017-02-13 15:31
see_you_later
阅读(114)
推荐(0)
摘要:
HDU5211 思路: 倒着更新每个数的约数,更新完要把自己加上,以及1的情况? //#include #include#include#include#include#include#includeusing namespace std;typedef long long LL;typede...
阅读全文
posted @ 2017-02-13 14:56
see_you_later
阅读(122)
推荐(0)
摘要:
CodeForces - 471A 首先要有四个数相等,然后剩下两个数不同就是Bear,否则就是Elephant。 #include using namespace std;typedef pair PII;int num[10];int a;int main(){ memset(num...
阅读全文
posted @ 2017-02-12 22:30
see_you_later
阅读(119)
推荐(0)
摘要:
萌新感言: 我的天呐! 因为是AC自动机的专题所以没有管别的。。。硬着头皮吃那份题解(代码)。。【请戳简单美丽可爱的代码(没开玩笑)】 首先讲AC自动机: tag存的是以这个节点为后缀的字符串个数(已状压)。 我们在构造fail指针的时候,采用的是BFS的手段,对于树而言,那就是一层一层的向下遍...
阅读全文
posted @ 2017-02-12 17:00
see_you_later
阅读(205)
推荐(0)
摘要:
Fourth AC zi dong ji(Aho-Corasick Automation) of life 9A(其实不止交了10发...) 感言: 一开始多组数据这种小数据还是...无伤大局,因为改完以后还是wa... 一: 最后发现是wa在构造fail指针的时候在建立临时指针查询有没有匹...
阅读全文
posted @ 2017-02-12 09:52
see_you_later
阅读(98)
推荐(0)
摘要:
题意: 给出n个字符串,再给出一个字符串,把之前出现过的字符串全部变成* 思路: AC自动机,Trie树上存的值是一个字符串的长度,也就是往前的长度,然后倒着处理一遍。 感想: 第三题AC自动机,本来就是想脱离模板多练练,虽然之前撒比bug错了一大堆,但是收获很多啊。 重要的感想有两个方面: 一...
阅读全文
posted @ 2017-02-11 21:18
see_you_later
阅读(188)
推荐(0)
摘要:
思路: 因为不同病毒特征码不会相同。 AC自动机,然后对于每一个输出即可。 注意:以上字符串中字符都是ASCII码可见字符(不包括回车);G++ MLE。 //#include #include #include #include #include #include using na...
阅读全文
posted @ 2017-02-11 16:13
see_you_later
阅读(100)
推荐(0)
摘要:
Frist AC zi dong ji(Aho-Corasick Automation) of life #include using namespace std; const int N=5e5+10; //10000个串,长度为50 struct Trie{ int ...
阅读全文
posted @ 2017-02-11 14:44
see_you_later
阅读(173)
推荐(0)
摘要:
ZOJ3321 //there is at most one edge between two nodes. 因为这句话的局限性,又要满足环,那么一定是每个点度为2,然后为n节点的一个环 //#include #include#include#includeusing namespace std...
阅读全文
posted @ 2017-02-11 13:12
see_you_later
阅读(153)
推荐(0)
摘要:
思路: 利用next[]的转化。 //#include #include#include#includeusing namespace std;const int N=1e3+10;char p[N],s[N];int lenp,lens,Next[N];void GetNext(){ i...
阅读全文
posted @ 2017-02-11 00:25
see_you_later
阅读(161)
推荐(0)
摘要:
关于next的解释原文:点点点 //#include #include #include #include using namespace std; const int N=1e6+10; char s[N]; int Next[N],len; void GetNext() { ...
阅读全文
posted @ 2017-02-10 23:54
see_you_later
阅读(154)
推荐(0)
摘要:
题意: 给一个字符串,求满足既是这个字符串的前缀,又是这个字符串的后缀,从小到大输出长度 思路: 细讲next数组含义博文:点我 首先要满足前缀的呀。 KMP的next数组干的是子串最长后缀。 所以从最后一个next一直往前跳,next存的就是最长后缀,知道为0||-1; //#include...
阅读全文
posted @ 2017-02-10 19:24
see_you_later
阅读(214)
推荐(0)
摘要:
题意: 求最小T,满足L的倍数且都由8组成,求长度; 思路: 很强势的福利:点 图片拿出去食用更优 //#include#include#include#include#includeusing namespace std;typedef long long LL;LL eluer(LL ...
阅读全文
posted @ 2017-02-10 15:44
see_you_later
阅读(299)
推荐(0)
摘要:
题意: 有男生女生,男生都认识双方,女生都认识双方,给出一些男女关系,问最大拿多少个人,使得所有人都认识双方。 思路: 原图最大团=总结点数-[【补图(补图为二分图)】的最大独立集=最大完全子图的顶点数];//#include#include#include#includeusing name...
阅读全文
posted @ 2017-02-10 14:06
see_you_later
阅读(118)
推荐(0)
摘要:
题意: n个点的完全图,删掉m条边以后,求与1联通的点的个数。 思路: 直接判断 遍历图,n(n+1)/2=5e7 复杂度n^2......,哦,这样也行。。。 //#include#include#include#includeusing namespace std;typedef long ...
阅读全文
posted @ 2017-02-10 13:54
see_you_later
阅读(129)
推荐(0)
摘要:
题意: 给出一个x,求有多少个矩阵中满足存在x个不同的正方形。 思路: (数学渣+推理渣) #includeusing namespace std;typedef long long LL;const LL N=1e6+10;struct asd{ LL a,b;};asd ans[N]...
阅读全文
posted @ 2017-02-10 10:51
see_you_later
阅读(263)
推荐(0)
摘要:
题意: 给你一个序列,要求你从小到大排序,你可以划分成一个块一个块地进行块内排序,问你最多能分成几个块 思路: 贪心,首先感觉就是有正序的话我就分开啊; 难道倒序不能分块?321肯定不行啊。 存不存在连续两个倒序,但是后面有元素比前面块小,存在:[6 3] [5 1] 这样分成两块是错的。 所以...
阅读全文
posted @ 2017-02-10 09:29
see_you_later
阅读(189)
推荐(0)
摘要:
题意: 检验给出条件是否有同性恋。 思路: 条件并查集。 还是一个类似的前缀和,sum[x]是x到根这段路径上的和,根一定是坐标越小的, 那么如果说对于同类(同一个集合)的判断就sum[a]是否等于sum[b] 对于不同类的话,就是他们的关系取反。 考虑状态压缩中,关系就是叠加。 一直wa,wa...
阅读全文
posted @ 2017-02-09 23:55
see_you_later
阅读(185)
推荐(0)
摘要:
题意: 给出m组区间[a,b],以及其区间的和,问有矛盾的有几组; 思路: 种类并查集。 主要是几个关系:同类元素的关系,父亲与儿子的关系,不同类元素的关系; 我们可以类似看作一个前缀和,sum[x]是x到根这段路径上的和,那么根一定是坐标越小的,那么如果说对于同类(同一个集合)的判断就是sum...
阅读全文
posted @ 2017-02-09 21:38
see_you_later
阅读(141)
推荐(0)
摘要:
思路: ---来源百度 0表示它与根结点为同类, 1表示它吃根结点, 2表示它被根结点吃。 判断两个点a, b的关系,我们令p = Find(a), q = Find(b),即p, q分别为a, b子树的根结点。 1. 如果p != q,说明a, b暂时没有关系,那么关于他们的判断都是正确的,...
阅读全文
posted @ 2017-02-09 20:57
see_you_later
阅读(146)
推荐(0)
摘要:
题意: 求多个字符串的最长公共子串 思路: 4000个串,200长度。 一种暴力,对于一个串最多有200*200=40000级别个子串,然后我要再处理一下next数组200,8e6复杂度; 然后我要和4000个串去匹配一下,看看符不符合,400000*4000*200这样就炸了; 其实显然不需要...
阅读全文
posted @ 2017-02-09 17:55
see_you_later
阅读(265)
推荐(0)
摘要:
题意: 给两个字符串s1,s2,求最长的s1前缀匹配s2后缀的字符串,以及长度 思路: 利用KMP看下最终匹配到了哪个位置;一个是利用常规匹配,另一个是利用next数组的跳转。 #includeusing namespace std;const int N=5e4+10;int lens1,le...
阅读全文
posted @ 2017-02-09 15:42
see_you_later
阅读(127)
推荐(0)
摘要:
CodeForces754A 题意: 给一个数组,让你变成1-n,输出变换区间,要求原区间和不为0. 思路: 如果原数组不为0,那就是YES; 如果为0,则从1开始扫过去,碰到不为0时,分两个区间[1,k],[k+1,n] #includeusing namespace std;int a[11...
阅读全文
posted @ 2017-02-09 13:05
see_you_later
阅读(184)
推荐(0)
摘要:
题意: 给你两个字符串p和s,求出p在s中出现的次数。 这道题,abababa中aba出现了3次。 有其他题是求abababa,aba就是2次。 需注意。 KMP 模板 //#include//using namespace std;#include#include#include#inclu...
阅读全文
posted @ 2017-02-09 00:16
see_you_later
阅读(145)
推荐(0)
摘要:
思路: 打表。 利用公式。 类似素数打表一样。 #includeusing namespace std;const int N=3e6+10;bool isPrime[N];long long res[N];void init(){ res[1]=1; memset(isPri...
阅读全文
posted @ 2017-02-04 17:27
see_you_later
阅读(192)
推荐(0)
摘要:
题意: n,m 给出A1,A2,A3...AN;C1,C2,C3...CN; 给出硬币的价值和个数,问在1-M中间能构造出多少个组合 思路: n种物品的价值,n种物品的个数; 一种物品能组成多种物品的0/1背包 #includeusing namespace std;const int N=1e...
阅读全文
posted @ 2017-02-04 16:20
see_you_later
阅读(128)
推荐(0)
摘要:
前言,根据最终图的样貌搞真厉害 “缩点判根度为结点数-1”牛逼 ----- 题意: 找一个根使得不带根的所有子树内部颜色都相同; 思路: 如果存在两个颜色不一样的连在一起,根就是他们两个中间一个。。。。。。直接搜两次就好了。。。 #includeusing namespace::std;t...
阅读全文
posted @ 2017-02-03 15:36
see_you_later
阅读(152)
推荐(0)
摘要:
题意: N个人,有两种人,M对亲密关系,问最少删除几个人达到没有亲密关系。 思路: 最大匹配 = 最小独立集,删掉该人对最大匹配数的影响,如果没有影响,删不删都无所谓,如果有影响贼删除; 类似HDU1281; 处理可用删除这个点以后找增广,如果找的到增广则无影响,找不到增广则有影响。 错误就是...
阅读全文
posted @ 2017-02-03 14:39
see_you_later
阅读(240)
推荐(0)
摘要:
题意: 给出一个矩阵问能否实现对角线全部是1,能的话输出路径,不能的话输出-1 思路: 首先根据矩阵的性质,这一定是一个满秩矩阵,所以只根据行或列交换就一定能实现。 所以行和列构成二分图,然后跑一发匈牙利就知道行不行。 然后怎么输出交换的步骤呢,我们只考虑列交换的话,在对于数组cy[ ]也就是...
阅读全文
posted @ 2017-02-02 20:42
see_you_later
阅读(144)
推荐(0)