Bestcoder
Winterfell30
这个作者很懒,什么都没留下…
展开
-
HDOJ 5677 ztr loves substring (Manacher+背包型DP)
题意问能不能从给出的字符串中找到k个回文子串能组成总长度为l的串。思路先Manacher预处理出所有长度的回文串的个数,然后就变成一个多重背包了,即dp[i][j][l]表示枚举到长度为i的回文串时已经取了j个串总长度为l的情况是否存在,因为长度为i的回文串有很多,一个一个枚举肯定就T了,我们就用多重背包那种做法把数量变成二进制来处理就行了,总复杂度L∗K∗K)∗log(∑cnt[i])L*K*K)原创 2016-05-02 13:50:15 · 571 阅读 · 0 评论 -
HDOJ 5676 ztr loves lucky numbers (贪心+数位DP)
题意定义幸运数为只包含4和7并且4和7数量相等的数,给一个小于1e18的数,求大于这个数的第一个幸运数。思路思路一:实际上可以先打表dfs出所有的小于1e18的幸运数,然后每次输入n之后二分找就可以了,复杂度2^18,但是我想万一这个幸运数大于1e18不是不大好处理么,于是我就跑去贪心了(强行作死)。。。其实大于1e18只有一种情况,也就是大于777777777444444444LL(18位),这样原创 2016-05-02 13:37:09 · 522 阅读 · 0 评论 -
HDOJ 5807 Keep In Touch
A - Maximum Increase求最长连续子串长度int a[maxn];int main() { //freopen("H:\\in.txt","r",stdin); //freopen("H:\\out.txt","w",stdout); int n; scanf("%d", &n); int ans = 0, mmax = 0, now = 1;原创 2016-08-01 17:17:00 · 472 阅读 · 0 评论