摘要: 嘟嘟嘟 正如题目所述,这就是一道板子题。 不过身为一道板子题,数据还是非常负(du)责(liu)的。 一点点讲。 1.判断欧拉图 判断无向图是欧拉图就是所有点的度数都是偶数;判断有向图是欧拉图就是所有点的入度等于出度。 但是仅这样是不行的,还有判断图是否连通。这个可以用并查集实现。或者是看dfs经过 阅读全文
posted @ 2018-10-09 23:02 mrclr 阅读(246) 评论(0) 推荐(1)
摘要: 嘟嘟嘟 今天学了个欧拉回路~ 理解起来感觉不是很难,证明竟然也看懂了。 首先,得认识这么几个名词: 1.欧拉路径:图中存在一条从s到t的路径,使这条路径经过了所有的边,且每条边之经过一次。简单来说就是这张图可以一笔画出来. 2.欧拉回路:就是欧拉回路中s == t。 3.欧拉图:存在欧拉回路的图。 阅读全文
posted @ 2018-10-09 19:13 mrclr 阅读(554) 评论(0) 推荐(0)
摘要: 嘟嘟嘟 一个比较经典的的2-SAT问题。 因为c只有0或1,所以每个数的取值只有0或1. 把每一个点拆点:x0表示x取0,x1表示x取1. 然后分情况连边: 1.x AND y == 0:连(x1, y0), (y1, x0) 2.x AND y == 1:连(x0, x1), (y0, y1)。这 阅读全文
posted @ 2018-10-09 16:54 mrclr 阅读(292) 评论(0) 推荐(0)
摘要: 嘟嘟嘟 大佬们都说这是2-SAT入门题,然而对于刚学2_SAT的本菜鸡来说半天才理解…… 题面:新娘和新郎不能坐在同一侧,妻子和丈夫不能坐在同一侧,有**关系的两个人必须至少一个坐在新娘一侧,问方案。 对于有**关系的两个人x, y,如果x坐在新郎一侧,那么y必须坐在新娘一侧,从而得出y的妻子(丈夫 阅读全文
posted @ 2018-10-09 15:21 mrclr 阅读(209) 评论(0) 推荐(0)
摘要: 嘟嘟嘟 SAT以及2-SAT问题是啥以及定义我就不叨叨了,直接讲怎么求。 比如有一个条件:a || b,就是说a,b必须至少有一个为真。这个可以转化为(!a => b && !b => a),那么就可以连边建图了:首先把每一个点x拆成x和!x,那么对于上述条件,连两条边(!a -> b)和(!b - 阅读全文
posted @ 2018-10-09 13:54 mrclr 阅读(207) 评论(0) 推荐(0)
摘要: 嘟嘟嘟 首先强连通分量缩点。 然后A就是求有多少个如度为0的点,B就是求如度为0的点和出度为0的点的最大值。 特判强连通图的情况。 1 #include<cstdio> 2 #include<iostream> 3 #include<algorithm> 4 #include<cmath> 5 #i 阅读全文
posted @ 2018-10-09 10:01 mrclr 阅读(306) 评论(0) 推荐(0)
摘要: 嘟嘟嘟 求出[L, R]中每一个数的约数再相加必定会超时,所以换一种思路:枚举约数d。 对于一个约数d,能整除他的数可以写成k * d, (1 <= k <= ⌊n / d⌋),因此约数d对答案的贡献是⌊n / d⌋ * d,f(i)表示[1, i]的约数和,那么f(n) = ∑⌊n / i⌋ * 阅读全文
posted @ 2018-10-09 08:49 mrclr 阅读(184) 评论(0) 推荐(0)
摘要: 嘟嘟嘟 L, R很大,所以哪怕用线性筛也会T飞的,但是看到R - L不太大,因此我们可以先筛出[1, √R]所有素数,然后用这些数筛出[L, R]的所有合数。具体做法是对于每一个pi,筛去所有的 i * pi (⌈L / i⌉ <= i <= ⌊R / i⌋)。然后遍历[L, R]的所有素数更新答案 阅读全文
posted @ 2018-10-09 07:20 mrclr 阅读(185) 评论(0) 推荐(0)