随笔分类 -  acm模板

摘要:题目链接:https://vjudge.net/problem/HDU-5977 题意:给一颗树,每个结点上有一个权值a[i],a[i]<=10,求有多少条路径满足这条路径上所有权值的结点都出现了。 思路: 首先利用二进制的思想,将a[i]转化为1<<(a[i]-1)。我们在子树中,计算出结点到重心 阅读全文
posted @ 2019-08-24 11:56 Frank__Chen 阅读(175) 评论(0) 推荐(0)
摘要:点分治的写法1: 题目链接:https://www.luogu.org/problem/P3806 题意:给出一颗带边权的树,结点数n<=1e4,每条边有权值<=1e4,有m组询问(m<=100),每组询问为一个k,表示是否存在一条路经长度为k,存在输出AYE,不存在输出NAY。 思路:点分治模板题 阅读全文
posted @ 2019-08-20 10:38 Frank__Chen 阅读(130) 评论(0) 推荐(0)
摘要:题目链接:https://vjudge.net/problem/POJ-3252 题意:求[l,r]之间的Round Number数,RN数即化为二进制后0的个数不少于1的个数的数。 思路:之前用组合数求写过,最近学数位dp,又用数位dp来写一次。用dp[pos][n0][n1]表示长为pos+1的 阅读全文
posted @ 2019-04-24 20:14 Frank__Chen 阅读(178) 评论(0) 推荐(0)
摘要:LCS--Longest Common Subsequence,即最长公共子序列,一般使用DP来解。 常规方法: dp[i][j]表示字符串s1前i个字符组成的字符串与s2前j个字符组成的字符串的LCS的长度,则当s1[i-1]==s2[j-1]时,dp[i][j]=dp[i-1][j-1]+1,否 阅读全文
posted @ 2019-02-23 23:25 Frank__Chen 阅读(864) 评论(0) 推荐(1)
摘要:题目链接:http://poj.org/problem?id=1631 这个题题目有些难看懂hhh,但实质就是求LIS--longest increasing sequence。 以下介绍LIS的解法模板: 一.O(n^2)解法 用a数组存储数据,f[i]表示以a[i] 结尾的最长子序列的长度,这样 阅读全文
posted @ 2019-02-15 16:14 Frank__Chen 阅读(359) 评论(0) 推荐(0)
摘要:在位数很大到超过long long的大小的时候需要使用高精度,即使用数组存储数,并模拟数的运算和进位。当然会java,python的可以学一学它自带的函数,十分方便。 附上加减乘除的代码: 阅读全文
posted @ 2019-01-30 23:32 Frank__Chen 阅读(330) 评论(0) 推荐(0)