SWUST/ieacm
34成员关于dp学习。
至少我是看董晓算法。
能看懂,每种dp也基本都讲了,除了dp,看看数据结构也是挺不错的?
SOS(sum of subset)问题
Problem - K - Codeforces题意就是算出每个选取情况下算出字符串的值。首先通过序列自动机能O(m)时间计算出在取某两个物品且不取中间物品的值。但很明显这个值我们只能计算某个状态,我们希望这个状态能传递给其他状态。很明显你可以除了取和不取状态后再加一个无所谓的状态,但时间复杂度也成功上升到了O(3^n)
,很明显会TLE。这怎么办,因为1001其中的某些0是绝对不能取的状态。你希望让某些状态能加它,而某些状态不能。那我们不如让他能转移的全部状态都加上他,然后在部分状态都减去它的一个前缀和思路,不过这次我们做差分是对状压dp的一些状态罢了。
,很明显会TLE。这怎么办,因为1001其中的某些0是绝对不能取的状态。你希望让某些状态能加它,而某些状态不能。那我们不如让他能转移的全部状态都加上他,然后在部分状态都减去它的一个前缀和思路,不过这次我们做差分是对状压dp的一些状态罢了。关于容斥,因为有很经典的韦恩图,并且大伙中学多少学过,我就不多说了。
经典的先把单选的全部加起来,在把加重的减去,在把减重的加回来...
这里说以下二进制枚举可以在O(2^n)枚举容斥情况。
例如0001的意义即是只选最后一件物品的情况,加减很明显取决于一的数量,然后通过数字也很能明显算出这个几何的大小。
951C题
数学推导过程
6N±1素数筛选法
csdn链接首先这是一个时间复杂度O(nlogn),空间复杂度O(n)的算法,只是其常数特别的小,在1e8内不说欧拉筛快一点,至少是一个数量级的。(只不过我测的6N±1素数筛选法都快一点)为什么说这是6N±1素数筛选法呢?因为这和6N±1有关。我们发现除了2与3,其余所有质数都可以表示为6N±1,为什么呢?我们发现在6进制下一个数可以表示为类似于5*6^2+3*6^1+4*6^0,不论其他位数字多大其实都是6的倍数,所以这个数是否为质数我们关心其个位即可。我们又发现6是2*3,所以6N,6N+2,6N+3,6N+4对2或3取模不可能不为0,也就都不可能是质数。也就是说只剩下6N±1了,其中N都为正整数。
FastIO
快读居然还要搞read()等函数,为了我们继续使用cin,一般我们会关同步流,但还有个东西,就是FastIO,但读不了小数就是了。代码
OJ的WA不一定是真的WA
OJ的WA可能只是单纯你空间没开够之类的问题,但它不返回RE,返回WA,WA我一个小时,铭记这个知识点了,希望大家下次看见WA可以先去找找RE方面的问题
poweroj3423