摘要:额随机开了场多校,做到第二题傻眼了。。这么大的数据搞毛线===试着来了一发暴力T了,没有尝试随机(我来瞅瞅题解==看到了新的算法,哎欠的终究要补,把Miller_Rabin和Pollard_rho算法看了一晚上---->并看不懂2333其实大部分还是可以看懂的,主要就是Miller_Rabin那里的...
阅读全文
摘要:题意是给定n个点,包括坐标和这个点照亮范围,使1、2、3三点连通最多删去几个点,也就是最少留下几个点构造两两之间的边,如果同一个点边权是0,如果可以照亮其中一个边权为1求出1和2和3到所有点最短路,d=min(dist[1][i]+dist[2][i]+dist[3][i]+1),可连通的话n-d-...
阅读全文
摘要:题意比较抽象,说两个集合相等判定是A是B子集且B是A子集,然后给你m个集合关系,表示第一个是第二个的子集,问至少添加多少个关系使所有集合想等把集合想象成点,就变成了:n个点m条有向边,最少加多少条边使只有一个强联通分量思路:先tarjan缩点,然后从出度为0的点向入度为0的点连边,然后其实就是max...
阅读全文
摘要:每个人喜欢某个动物,讨厌某个动物。一个人只有喜欢动物在,讨厌动物不在才会开心==问减去一些动物最多可以让多少人开心==想到->对人建图对于两个人,如果A讨厌的是B喜欢的,或者A喜欢的是B讨厌的,就A->B连边,表示互斥求一遍最大匹配ans,因为一个人被拆成两个,所以(2*n-ans)/2就是最多开心...
阅读全文
摘要:原题少了当前的字符,不过并无差别利用sa数组可以很方便的求出来== 1 #include 2 #include 3 #include 4 using namespace std; 5 struct SA{ 6 int sa[2000005],t[2000005],t2[2000005],c[20...
阅读全文
摘要:设定源点st,汇点ed将任务和每天当作两部分点建图源点连向每个任务,流量为该任务所需时间每个任务连向他可以可以做的每一天,流量为1每天连向汇点,流量为m,表示一天最多做m个任务==跑一遍最大流,如果最大流==所有任务需要天数之和即Yes,否则不能完成任务熟悉各种模型! 1 #pragma comm...
阅读全文
摘要:枚举时间来对于拆的点分层,每增加一个时间,就将所有1s能到达他的上个时间分层点->这个点的该时间分层点连一个边。源点只向第1s的‘X’连边,所有'@'直接终点在任何时间都向汇点连边。假设需要时间为ans,拆出来的点不包括源点汇点应该是ans*n*m*2点,为什么*2呢,因为每个除了'#'点拆成2个点...
阅读全文
摘要:代码。。能力。。为何。。这么。。弱。。英语。。为何。。这么。。渣。。前期打的非常顺,在1个小时的时候甚至到了200+名,然而。。我为何这么弱A.Cutting Banner 我看错了题意,然而却A掉了,一个串只能切一次,后来Hack+4也是靠的这个 1 #include 2 #include 3 #...
阅读全文
摘要:看题意看了半天你敢信===L代表几只蜥蜴的初始位置,一次可以跳到距离 3 #include 4 #include 5 #include 6 #include 7 #define maxn 100005 8 #define maxm 200005 9 #define inf 0x3f3f...
阅读全文
摘要:把以前没做的网络流模型现在都补一下==本题是比较经典的只有点权,题目问在哪些点放置东西使不流通代价最小,拆点然后就是最小割,跑一遍最大流即可对于点i,i->i+n x对于双向边 x+n->y inf y+n->x inf 1 #include 2 #include 3 #include 4...
阅读全文
摘要:额这题卡了dinic的时间==不过还是强行用dinic过了,把stl语句全部换了,包括vector也改成了邻接表还是比较慢,8000+ms,很奇怪的是,我的邻接表中加了当前弧优化竟然慢了1s===至于sap,过两天再写吧== 1 #pragma comment(linker,"/STACK:1677...
阅读全文
摘要:主要是算法的进阶专题和数据结构没学的算法: 网络流专题,后缀数组专题,AC自动机专题 树的学习(总觉得这个要拖到暑假== ※※※比赛!因为太弱还有好多东西没学。。。都不会啊!想想今年打完估计就不玩了。。。可退役了还这么弱说不过去啊!学弟进步都这么快。。。再这样下去就要被学弟虐了啊!哎日常吐槽一...
阅读全文
摘要:之前就听说过数独用DLX解较方便,今天学习了==建立一个N=n*n*n M=n*n*4的bool矩阵,然后跑DLX,这个建图学习了bin巨的,感觉好厉害==对于每一个位置,每放一种数字,都对应要覆盖四个东西-->该位置有这个数字,该行有这个数字,该列有这个数字,该方块有这个数字 think话说,hd...
阅读全文
摘要:额,感觉建立矩阵好强==最多选多少个两两不能整除->将可以整除的记为true,这样跑最大可重复覆盖就是最多可以选的数==看到好多二分图匹配做的,不写了== 1 #include 2 #include 3 #include 4 #include 5 #define eps 1e-8 6 #define...
阅读全文
摘要:这是去年上海赛区网络赛的题目,当时过了好多队我们赛后才知道是DLX,太low了现在回来做竟是一道裸的二分距离+DLX重复覆盖(忽然想起来是kuangbin巨巨出的题2333 1 #include 2 #include 3 #include 4 #include 5 #define eps ...
阅读全文
摘要:可重复覆盖与精准覆盖的区别在于remove和resume函数本题为了优化可以在每次枚举要删点前做一次类似A*的估价函数,看是否可以炸完= 1 #include 2 #include 3 #include 4 #include 5 #define eps 1e-8 6 using name...
阅读全文
摘要:注意到m的范围很小,允许m2,然后重要的起始条件a[i]=i,这样可以k=1的时候用容斥预处理算出答案,然后离线保存在k=2的时候暴力m2更改答案 1 #include 2 #include 3 #include 4 #include 5 #define LL long long 6 using n...
阅读全文
摘要:本题的难点在于--->看懂题意因为比赛纠结于A的二分,比赛还没结束就暴走睡觉了TUT今天起来看了看B===卧槽题意和A一样恶心啊有木有==回到本题,看明白之后首先映入眼前的就是--->暴力大法好这样必然是可以hack超时的,必须要对串进行处理哪些后缀和前缀相等最常规的莫过于kmp里面的next,从结...
阅读全文
摘要:英语弱是硬伤啊==比赛看了A半小时活生生没看懂题意,后来带数据带猜才明白题意输入A,B,n,表示一个首项为A公差为B的数,n个询问每个询问给出l,t,m你需要算出最大的r,使l-r之间的数通过(标题上面)的规则在t次内减完==看明白题意,首先想到就是一个二分,然后在二分中需要快速check出是否可行...
阅读全文
摘要:首先(1,b)(1,d)->(1,b/k)(1,d/k)转化为互质对数设F(k)为gcd(x,y)为k的倍数的对数->F(k)=(b/k)*(d/k)f[1]=mu[1]*F[1]+mu[2]*F[2]+...mu[m]*F[m]再减去重复计算的,变了F[i]再做一遍== 1 #include 2 ...
阅读全文
摘要:(a/b) mod m:gcd(b,m) = 1 求b相对m的逆元b^(-1),即b*(b^(-1))= 1 (mod m),然后计算a*b^(-1) mod m,其值与(a/b) mod m相同gcd(b,m)!=1 不可以用逆元了,倒可以把a/b分解质因数相乘,然后快速幂,将除法取模转化为乘...
阅读全文
摘要:题目链接:http://acm.hust.edu.cn/problem/show/1017上个星期在空闲时间看了一下DLX博客http://www.cnblogs.com/grenet/p/3145800.html然后今天昨天学习了bin巨的DLX模板,关于模板的个人理解代码已标出,下面开始做几道D...
阅读全文
摘要:(男生喜欢特定的女生,女生可以嫁给任何男生=先按题意求出最大匹配,然后在左边增加n-res个虚拟男生喜欢所有女生,m-res个虚拟女生喜欢所有男生,再求最大匹配,这个时候肯定是个完全匹配,求匹配只是确定新的二分图里面每个男生对应的女生是谁=在所有女生女生里面建有向图,将某男生匹配的女生连向所有他喜欢...
阅读全文
摘要:将询问的高度和树的高度都变成离线排个序,然后就可以把砍树变成加树对于一个询问高度b[i],将还未加入的所有大于这个高度的树都加入,加入的树1.左右相邻都有树?连通区域-12.左右相邻都没树?连通区域+1再把这个位置种上树,最后输出答案== 1 #include 2 #include 3 #inclu...
阅读全文
摘要:先预处理阶层逆元算组合数=首先来枚举第一个猴子得到的桃子x,这样就变成了剩下的n-x个桃子分给m-1个猴子且不能有猴子得到桃子大于x的方案,最后求和>>先来看这样一个简单问题:n个桃子分给m个猴子有多少种方案?很简单隔板法因为允许为0所以是C(x-1+y,y)回到这个问题,再来枚举剩下的m-1个猴子...
阅读全文
摘要:很明显缩完点之后入度为0的点是必须要通知的,也仅需要通知入度为0的点==其实第二个邻接表是不用的,只用统计into数组即可 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 stacks; 7 int Now,H...
阅读全文
摘要:额裸的强连通,判断是不是一个强连通分量== 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 stacks; 7 int Now,dfs_clock,scc_cnt,Head[200005],Next[20000...
阅读全文
摘要:很显然加在缩点后的树直径首尾可以最大限度减少桥的数量==所以就是个无向图tarjan求桥和bfs求树直径裸题了明天继续看TUT 1 #pragma comment(linker,"/STACk:10240000,10240000") 2 #include 3 #include 4 #incl...
阅读全文
摘要:题意需要求出每加一条边求出桥的数目,因为询问数不多,所以可以在tarjan预处理之后在每个询问后面暴力查询lca=和有向图强连通分量差不多,反正都是tarjan搞的TUThdu又需要手动扩栈== 1 #pragma comment(linker,"/STACk:10240000,10240000")...
阅读全文