3160专题

3160. 所有球里面不同颜色的数目(java)

3160. 所有球里面不同颜色的数目(java) Java hashmap的merge方法: 1.merge是直接运行修改的,比如 if(colors.merge(curc,-1,Integer::sum)==0) ,不论结果真假,这个curc对应的值已经减一了。 2.字典的size和remove方法; 3. HashMap<Integer,Integer> balls = new HashMa

poj 3160 Father Christmas flymouse 强连通+dp

首先我们可以确定的是,对于val值小于0的节点都变成0.   假设一个集合内2个房间都能任意到达,那么我就可以吧集合内的所有点的价值都取到,并且可以达到任一点。实际上集合内的每个点是相同的,这样的集合就是一个强连通分量。 那么我们就可以用tarjin算法进行强连通缩点, 最后形成一个dag的图。在dag的图上面进行dp。可以先用拓扑排序后dp。或者建反响边记忆化搜索 。 VIEW

bzoj 3160 万径人踪灭 FFT

万径人踪灭 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 1936  Solved: 1076[Submit][Status][Discuss] Description Input Output Sample Input Sample Output HINT   题目大意:给定一个由'a'和'b'构成的字符串,求不

BZOJ 3160 万径人踪灭 解题报告

这个题感觉很神呀。将 FFT 和 Manacher 有机结合在了一起。 首先我们不管那个 “不能连续” 的条件,那么我们就可以求出有多少对字母关于某一条直线对称,然后记 $T_i$ 为关于直线 $i$ 对称的字母对的数量,那么答案(暂记为 $Ans$)就会是: $$Ans = \sum 2^{T_i}-1$$ 在不管那个 “不能连续” 的条件的时候,这个应该是显然的。 怎么算的话,我们弄两次。分

BZOJ 3160 万径人踪灭

Description Input Output Sample Input Sample Output HINT 先在串中两两之间插入#,形成新串s,主要是考虑中心不在列上令$f[i]$表示以i为中心,两边为a或b且相同的对数$f[i]=\sum_{x+y=i*2}[s[x]==s[y]]$注意$s[x]s[y]$不能为#发现这其实是一个卷积,于是FFT,求出f[i]于是通