04 2016 档案

摘要:之零: 这一篇都是水题,不过还是有几道被卡了一下,还是总结一下。 A题: 给定a和b的gcd和lcm,求一组满足的a,b,且a最小。 显然,a,b必然是gcd的倍数,是lcm的约数,如果gcd不是lcm的约数则无解,否则,要使a最小,a只能是gcd,又因为b是gcd的倍数,那么b就只能是a的倍数,也 阅读全文
posted @ 2016-04-19 11:50 __560 阅读(650) 评论(0) 推荐(0)
摘要:难得打一场bc,FST了两道,显然我还不在最佳状态,但是我已经感觉到提高了。 这一场比赛开始一个小时后才看的题,当时只剩40分钟,不过由于我急于涨分,所以决定看题,先看C题,很简单的矩阵快速幂+费马小定理降幂,但是调了好久。。。确实不在状态。。。不过还是写完了,,,然后剩下十分钟顺手过了B和A题。最 阅读全文
posted @ 2016-04-18 15:48 __560 阅读(385) 评论(0) 推荐(0)
摘要:每次合并两个同余模方程,然后用exgcd解即可。 ll LCM(ll a,ll b) { return a/__gcd(a,b)*b; } void exgcd(ll a,ll b,ll &d,ll &x,ll &y) { if(b==0){ x=1;y=0;d=a; return; } exgcd 阅读全文
posted @ 2016-04-18 12:24 __560 阅读(619) 评论(0) 推荐(0)
摘要:分块,K小的时候dp,K大的时候直接枚举K的倍数然后判断。 已经尽力优化了,还是没过,,,先留代码,有时间再改。 #include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> #include<algorithm> # 阅读全文
posted @ 2016-04-07 16:34 __560 阅读(358) 评论(0) 推荐(0)
摘要:统计一个字符串中不相交的回文串的对数。 枚举以i为右端点的回文串,乘以在区间[i+1,n]的回文串个数,累加即可。 #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<algorithm> 阅读全文
posted @ 2016-04-07 13:47 __560 阅读(313) 评论(0) 推荐(0)
摘要:直接从两棵树的奇根和偶根dfs就可以了。 #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<algorithm> #include<map> #define REP(i,a,b) for( 阅读全文
posted @ 2016-04-07 13:07 __560 阅读(313) 评论(0) 推荐(0)
摘要:回文树在处理回文方面真的比manacher要好用得多。。。 #include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> #include<algorithm> #define REP(i,a,b) for(int i 阅读全文
posted @ 2016-04-07 01:14 __560 阅读(467) 评论(0) 推荐(0)
摘要:len[u]表示结点u所表示的回文串长度,cnt[u]表示结点u所表示的回文串出现次数,num[u]表示结点u的后缀回文串个数(包括自己)。 由于一个字符串本质不同的回文串最多不超过n个,所以空间开n+2即可,算上每个结点的26个Next指针,空间复杂度o(26*n)。时间复杂度o(n)。 stru 阅读全文
posted @ 2016-04-07 00:36 __560 阅读(366) 评论(0) 推荐(0)
摘要:回文树的裸题。 #include<bits/stdc++.h> #define REP(i,a,b) for(int i=a;i<=b;i++) #define MS0(a) memset(a,0,sizeof(a)) using namespace std; typedef long long l 阅读全文
posted @ 2016-04-07 00:31 __560 阅读(506) 评论(0) 推荐(1)
摘要:由于可以预处理出每个左端点对应的右端点,所以并不需要开二维,复杂度应该是介于n和n^2之间。 #include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> #include<algorithm> #define REP 阅读全文
posted @ 2016-04-05 12:20 __560 阅读(249) 评论(0) 推荐(0)
摘要:#include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> #include<algorithm> #define REP(i,a,b) for(int i=a;i<=b;i++) #define MS0(a) me 阅读全文
posted @ 2016-04-05 12:11 __560 阅读(383) 评论(0) 推荐(0)
摘要:/// D-MST struct Edge { int u,v,w; };Edge e[maxn];int en; int in[25100]; int pre[25100],ID[25100],vis[25100]; /// D-MST 点的标号必须是0~N-1,不能改为0~N或1~N int D 阅读全文
posted @ 2016-04-05 12:10 __560 阅读(328) 评论(0) 推荐(0)