摘要: 严格次小生成树。一开始没有特批一圈都相等的情况,一直WA,十分难受。 先生成最小生成树,枚举每条非树边,连上它构成一个环,拆掉环上树边中最大的一条(若和该边相等则次大的一条)换上这条。 用倍增维护一条链上的最大边和次大边,倍增跑lca同时找出环上最大边和次大边,看能否更新答案。 #include<c 阅读全文
posted @ 2017-09-20 22:00 啊宸 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 水题。爆搜。写得比较丑。 #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<cmath> #include<queue> #include<vector> typedef long l 阅读全文
posted @ 2017-09-20 20:08 啊宸 阅读(114) 评论(0) 推荐(0) 编辑
摘要: 生成树的计数 Matrix-Tree定理 好像之前gerw学长讲过一遍毕姥爷讲过一遍,然而并不懂。本来不打算学的不巧两天内遇到了三道这样的题,十分难受。 定理如下。 1.G的度数矩阵D[G] 是一个n∗n的矩阵 当i≠j时,dij=0;当i=j时,dij等于i的度数;2.G的邻接矩阵A[G]; 我们 阅读全文
posted @ 2017-09-20 18:34 啊宸 阅读(114) 评论(0) 推荐(0) 编辑
摘要: 可以用Prüfer编码与Cayley公式(orz sxy大佬)证; 也可以用矩阵树定理(虽然我不会证)证; 然后因为顺序有关,所以再乘上!(n-1); #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> 阅读全文
posted @ 2017-09-20 18:33 啊宸 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 听LLJ大佬说要学奇怪的算法来增长姿势。 原题可以翻译为给一个无向图染色,保证有连边的两点颜色不同,问最少的颜色数。 用最大势算法。有n+m的写法,但是在下不会,就用个堆。 把每个点势初始为0,扔进去,每次取出最大的,和他相连的没被删掉的点势++,删掉他。 代码很好写啊,在下觉得十分有道理。 #in 阅读全文
posted @ 2017-09-20 15:41 啊宸 阅读(116) 评论(0) 推荐(0) 编辑
摘要: 困到死亡,从问大佬题到AC都仿佛活在梦中。 大佬建边考虑了很多,但N很小这里就直接暴力建了。 考虑找出最小的a,把bmin~bmax这段区间按mod a分成若干份,若是最小的B≡x(mod a)可以构造出,则比它大的在区间中的B≡x(mod a)都可以构造出。 如何找最小的B,当一个数可以构造出,它 阅读全文
posted @ 2017-09-20 14:51 啊宸 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 二分图匹配。 先匹配一次,一定是完美匹配。然后枚举每条边,去掉它,若是不能完美匹配,这条边就必须。 #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<cmath> #include<q 阅读全文
posted @ 2017-09-20 11:36 啊宸 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 差分约束的裸题,虽然我不会。 第一次见差分约束还是之前考试看LLJ大佬写的,感觉十分神奇。 a==b||a>=b||a<=b时连0的边; a>b,a<b时连1的边; 因为每个小朋友都要吃糖,增设源点向每个小朋友连1的边; 然后跑最长路; 注意,等于的时候要连双向边,spfa时要判负环。 然后十分神奇 阅读全文
posted @ 2017-09-20 10:37 啊宸 阅读(117) 评论(0) 推荐(0) 编辑
摘要: 和道路升级差不多,只是用的spfa; 十分有毒,在BZOJ上一直WA,对拍拍出来是一样的却告诉我不一样,然后发现自己把'\n'写成了‘\b’。。。 #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #i 阅读全文
posted @ 2017-09-20 09:21 啊宸 阅读(181) 评论(0) 推荐(0) 编辑