2012年9月20日
摘要: UVALive_4978 这个题目难点在于如何转化成数学模型,详细的转化思路还是看官方的题解吧:http://cepc10.ii.uni.wroc.pl/solutions.html。 完成数学模型的转化之后,问题就变成了给定了若干个8bit的二进制数,求选出若干个数且这些数或起来为11111111的方法数,这一点可以用容斥原理求解。 首先我们约定a[i]表示最终结果有且仅有i个bit为0的方案数,那么最后我们要求的就是a[0],再约定f[i]表示让结果的8个bit中任意i个bit为0而其他位不管的总方法数,这样f[0]就是2^N。在计算f[i]的时候,先枚举是哪i位为0,然后找到这i位为0的 阅读全文
posted @ 2012-09-20 18:22 Staginner 阅读(188) 评论(0) 推荐(0) 编辑
摘要: UVALive_4975 可以先用Manacher算法预处理出每个字符i处的回文半径Ri,也就是最大的Ri使得i-Ri~i+Ri-1构成回文串。 之后枚举每个字符i作为wwRwwR中后面这个的wwR的起始字符,然后在[i-Ri/2,i-1]的范围内找到最小的j使得j+Rj>=i,如果存在这样的j,那么就存在一个长度为4*(i-j)的wwRwwR式的回文串。#include<stdio.h>#include<string.h>#include<algorithm>#include<queue>#define INF 0x3f3f3f3f#de 阅读全文
posted @ 2012-09-20 14:08 Staginner 阅读(326) 评论(0) 推荐(0) 编辑