随笔分类 - codeforces/Gym
摘要:裸题。 看之前的模版讲解吧,这里不再赘述了。
阅读全文
摘要:先反复地扫(不超过n次),把所有可以确定唯一取法的给确定下来。 然后对于剩下的不能确定的,跑2-SAT。输出可行解时,对于a和¬a,如果a所在的强连通分量序号在¬a之前,则取a,否则不取a。如果a和¬a在同一个强连通分量,则无解。
阅读全文
摘要:从任意点出发,贪心染色即可。
阅读全文
摘要:三分显然,要注意EPS必须设成1e-6,设得再小一点都会TLE……坑炸了
阅读全文
摘要:按位考虑,每个变量最终的赋值要么是必为0,要么必为1,要么和所选定的数相同,记为2,要么和所选定的数相反,记为3,一共就这四种情况。 可以预处理出来一个真值表,然后从前往后推导出每个变量的赋值。 然后从高位到低位考虑,如果某一位,对于所有变量而言,2的数量大于等于3的数量,就把所选定的数的该位记为0
阅读全文
摘要:二分要删除几个,然后暴力判定。
阅读全文
摘要:按照b[i]-a[i],对物品从大到小排序,如果这个值大于零,肯定要立刻购买,倘若小于0了,但是没买够K个的话,也得立刻购买。
阅读全文
摘要:暴搜
阅读全文
摘要:一次交换,会让Group A里面的某个数字的数量-1,另一个数字的数量+1;对Group B恰好相反。 于是答案就是xigma(i=1~5,numA[i]-numB[i]>0)(numA[i]-numB[i])/2,如果这个值无法被2整除,则无解,或者如果这个值不等于xigma(i=1~5,numA
阅读全文
摘要:从后向前枚举字符串,然后从左向右枚举位。 如果该串的某位比之前的串的该位小,那么将之前的那串截断。 如果该串的某位比之前的串的该位大,那么之前那串可以直接保留全长度。 具体看代码。
阅读全文
摘要:对询问按右端点排序,对每一列递推出包含当前行的单调不下降串最多向前延伸多少。 用multiset维护,取个最小值,看是否小于等于该询问的左端点。
阅读全文
摘要:对第一个人的排序,然后从小到大处理,对第一个人的每枚卡片,从第二个人的卡片中选择一个大于等于它的最小的,否则选择一个当前剩下的最小的,这样可以保证负场最少。 如果选择的改成大于它的最小的,就可以保证胜场最多。 用multiset处理。
阅读全文
摘要:容易发现存在循环节。
阅读全文
摘要:再来回顾一下2-SAT,把每个点拆点为是和非两个点,如果a能一定推出非b,则a->非b,其他情况同理。 然后跑强连通分量分解,保证a和非a不在同一个分量里面。 这题由于你建完图发现都是双向边,所以用并查集亦可。
阅读全文
摘要:处理出前缀和,枚举k的幂,然后从前往后枚举,把前面的前缀和都塞进map,可以方便的查询对于某个右端点,有多少个左端点满足该段区间的和为待查询的值。
阅读全文
摘要:打表找规律即可。 1,1,2,2,2,3,3,3,3,4,4,4,4,4... 注意打表的时候,sg值不只与剩下的石子数有关,也和之前取走的方案有关。
阅读全文
摘要:直接暴力dp就行……f(i,j)表示前i天集齐j种类的可能性。不超过10000天就能满足要求。
阅读全文
摘要:发现值域很小,而且怎么异或都不会超过1023……然后可以使用类似基数排序的思想,每次扫一遍就行了。 复杂度O(k*1024)。
阅读全文
摘要:观察一下,将整个过程写出来,会发现形成一棵满二叉树,每一层要么全是0,要么全是1。 输出的顺序是其中序遍历。 每一层的序号形成等差数列,就计算一下就可以出来每一层覆盖到的区间的左右端点。 复杂度O(log(n))。
阅读全文
摘要:设sum是所有灯泡的亮度之和 有两种情况: 一种是存在结点U和V,U是V的祖先,并且U的子树权值和为sum/3*2,且U不是根,且V的子树权值和为sum/3。 另一种是存在结点U和V,他们之间没有祖先关系,两者的子树权值和都是sum/3。(已经出栈的结点和当前访问的结点之间,必然没有祖先关系) 两次
阅读全文

浙公网安备 33010602011771号
