摘要:
题目链接 除了扫描线,二维前缀和也可以O(\(n^2\))地求出矩形的面积并,且两种方法的前提都是离散化 二维差分:在矩形的四个顶角做标记,也有容斥原理的影子 变量名不能起y1,y2似乎还是C++98时代的事情,打开-std=c++11就没有这个问题了;现在连NOIP都使用C++14标准了,所以应该 阅读全文
摘要:
汉明码的精髓在于,既然你无法分辨更改检验位的情况,就把检验位放到冲突的位置,消掉那一位 位运算的性质:a+b=(a|b+a&b) \(a\oplus b\oplus 0\)+\(a\oplus b\oplus (111…11)\)=111…11 其实D题才是最简单的题目,比赛的整体难度低于省赛,明年 阅读全文
摘要:
题目链接 位运算的性质:各位之间的运算是相互独立的 因此,分别考虑每一位的方案数,显然比你的考场做法更优 阅读全文
摘要:
题目链接 直接做很难下手。考虑“出现次数的立方值”的组合意义,就是在原序列中选三个相同的子序列的方案数,然后DP即可 利用容斥原理计算高维前缀和 老生常谈的取模后运算得负数的问题 阅读全文
摘要:
题目链接 鸽巢原理/抽屉原理:假如有n+1个元素放到n个集合中去,其中必定有一个集合里至少有两个元素 首先,将\(x\)整除\(|a_u-a_v|\)转化为它们模x同余 有n个点,x=n-1时,根据鸽巢原理,一定可以找到这样的两个同余的点,将它们连边 以此类推,解毕 模拟样例以感受题意 阅读全文
摘要:
题目链接 从顶层设计的角度考虑,我们并不关心具体的放置骨牌的方法,而只关心这种覆盖是否可行 而一种覆盖可行等价于该覆盖中不存在“L型” 于是我们就可以优化轮廓线DP的设计以省去DP中构造方案所需要的时空复杂度 本题似乎还卡STL,下次涉及到大量入队出队操作的时候还是手写队列吧,毕竟也就一分钟左右的事 阅读全文
摘要:
题目链接 轮廓线DP:记录状态的连通性信息,维度刻画当前轮廓线的状态,1是起点,2是终点,记录下穿过轮廓线的状态:——|——|—— 为了利用位运算的良好性质,采用四进制状态压缩代替三进制 通过哈希表压缩有限的状态 与普通的按行滚动的滚动数组不同,插头DP中的滚动数组是按格滚动的 因为布尔数组值默认为 阅读全文
摘要:
对多项式求逆有了更深刻的理解,如1-x的逆是1+x 多项式或许可以用向量存储,并重载运算符 如果参与相乘的两多项式的其中一项项数较少,建议直接朴素相乘,使用NTT反而会降低效率导致TLE NTT中step的值需要开一个桶存下来以避免重复计算,否则也会TLE f(\(x^2\))、f(\(x^3\)) 阅读全文
摘要:
借这道题夯实一下计算几何的基础 向量积:顺负逆正 两线交点和夹角都是借助向量工具求解的 分类讨论:圆弧小于180度时,减去三角形面积;大于180度时,加上三角形面积 割补法求面积(正难则反) C++中的角度以弧度制表示 点击查看代码 #include <bits/stdc++.h> #define 阅读全文
摘要:
题目链接 变量的值被莫名修改,往往是因为地址的传递导致两个变量绑定在了一起 怎样搜索替换double为long double呢?或许可以先转化为long Double,再转化为long double 点击查看代码 #include <bits/stdc++.h> using namespace st 阅读全文