首页
Python
Java
前端
数据库
Linux
Chatgpt专题
开发者工具箱
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]于是通
阅读更多...