摘要:
嘟嘟嘟 一个比较经典的的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)。这 阅读全文
摘要:
嘟嘟嘟 大佬们都说这是2-SAT入门题,然而对于刚学2_SAT的本菜鸡来说半天才理解…… 题面:新娘和新郎不能坐在同一侧,妻子和丈夫不能坐在同一侧,有**关系的两个人必须至少一个坐在新娘一侧,问方案。 对于有**关系的两个人x, y,如果x坐在新郎一侧,那么y必须坐在新娘一侧,从而得出y的妻子(丈夫 阅读全文
摘要:
嘟嘟嘟 SAT以及2-SAT问题是啥以及定义我就不叨叨了,直接讲怎么求。 比如有一个条件:a || b,就是说a,b必须至少有一个为真。这个可以转化为(!a => b && !b => a),那么就可以连边建图了:首先把每一个点x拆成x和!x,那么对于上述条件,连两条边(!a -> b)和(!b - 阅读全文
摘要:
嘟嘟嘟 首先强连通分量缩点。 然后A就是求有多少个如度为0的点,B就是求如度为0的点和出度为0的点的最大值。 特判强连通图的情况。 1 #include<cstdio> 2 #include<iostream> 3 #include<algorithm> 4 #include<cmath> 5 #i 阅读全文
摘要:
嘟嘟嘟 求出[L, R]中每一个数的约数再相加必定会超时,所以换一种思路:枚举约数d。 对于一个约数d,能整除他的数可以写成k * d, (1 <= k <= ⌊n / d⌋),因此约数d对答案的贡献是⌊n / d⌋ * d,f(i)表示[1, i]的约数和,那么f(n) = ∑⌊n / i⌋ * 阅读全文
摘要:
嘟嘟嘟 L, R很大,所以哪怕用线性筛也会T飞的,但是看到R - L不太大,因此我们可以先筛出[1, √R]所有素数,然后用这些数筛出[L, R]的所有合数。具体做法是对于每一个pi,筛去所有的 i * pi (⌈L / i⌉ <= i <= ⌊R / i⌋)。然后遍历[L, R]的所有素数更新答案 阅读全文