Codeforces 264B 数论+DP】的更多相关文章

题目链接:http://codeforces.com/problemset/problem/264/B 代码: #include<cstdio> #include<iostream> #include<vector> #include<cstring> using namespace std; ; int dp[maxn]; vector<int> dx[maxn]; void get_div() //筛因子 { ; i<maxn; i++…
题目描述 输入 输出 样例输入 3 2 1 3 2 5 1 样例输出 8 6 75 题解 语文题+数论+dp 花了大段讲述什么叫mu,什么叫phi,只是新定义的mu将2看作有平方因子,新定义的phi(1)=0. 要求的就是mu值为1的数的phi值之和.所有mu值为-1的phi值之和.以及所有mu值为0的phi值之和. 先只考虑前两种,此时无论质因子有多少个,能够使用的只有1个.如果p不是2,那么就有两种情况:使用和不使用.使用的话,素数个数+1,也就是mu变为相反数. 又因为phi是积性函数,所…
正解:数论$dp$ 解题报告: 传送门$QwQ$ 考虑先质因数分解.所以$G$就相当于所有系数取$min$,$L$就相当于所有系数取$max$ 这时候考虑,因为数据范围是$1e8$,$1e8$内最多有8个不同质因子,所以考虑状压记录每个质因子的系数是否取到了上界&下界. 状压$dp$就完事了. $dbq$写得有点简陋,仔细港下趴$kk$ 首先经过前面一番操作,题目已经变成了,给定一些集合,求或起来为全集的方案数$QwQ$ 考虑这个强制选$x$怎么搞鸭,先设$st$表示$x$的状态,$tot$表示…
题目链接: http://poj.org/problem?id=2117 题目大意:统计一个范围内数的个数,要求该数能被各位上的数整除.范围2^64. 解题思路: 一开始SB地开了10维数组记录情况. 首先要求能被各位上的数整除,可以转化为被一个数整除问题. 这个数就是各位上数的最小公倍数LCM(不是GCD). 其次,处理整除问题,得转化成数位DP的余数模板.1~9的LCM最大是2520, 那么%2520,让其可以开数组进行记忆化搜索. 最后, 对于不能%2520最后结果,再%各个数位累计过来的…
http://codeforces.com/contest/2/problem/B 题目大意:给你一个n*n的矩形,问从(1,1)出发到(n,n),把图中经过的所有的数字都乘在一起,最后这个数字有多少个0? 思路:经过分析,只有2和5出现的时候才会有0.所以我们预处理把这个数包含的所有的2和5都给拿出来就好了.但是我发现如果每次转移都要统计2和5的个数的话,状态就炸了,所以我只想到了这里TAT.后来看了一下题解以后发现,只需要知道目前到这个位置以后最小的2(或5)的个数就好了. 然后转移我也想了…
题目链接:http://codeforces.com/problemset/problem/264/B 题目大意:给出n个单调递增的数,让你找出最长的好序列,好序列是一种单调递增的并且相邻元素的最大公因数>1的子序列.解题思路:设dp[x]表示以x为结尾的好序列的最长长度.d[i]表示以i为因子的x中最大的dp[x]值.于是得到状态转移方程dp[x]=max(dp[x],d[i]+1) (i是x的因子)每次求出dp[x]还要顺便更新d[i],即d[i]=dp[x]. 代码: #include<…
A - A Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u Submit Status Practice CodeForces 300C Description Vitaly is a very weird man. He's got two favorite digits a and b. Vitaly calls a positive integer good, if the deci…
题目链接:http://codeforces.com/contest/682/problem/D 思路:dp[i][j][l][0]表示a串前i和b串前j利用a[i] == b[j]所得到的最长子序列, dp[i][j][l][1]表示a串前i和b串前j不利用a[i] == b[j]所得到的最长子序列, 所以,dp[i][j][l][0] = max(dp[i-1][j-1][l][0] ,max(dp[i-1][j-1][l-1][0],dp[i-1][j-1][l-1][1])) + 1 d…
题目链接:http://codeforces.com/problemset/problem/666/A 思路:dp[i][0]表示第a[i-1]~a[i]组成的字符串是否可行,dp[i][1]表示第a[i-2]~a[i]组成的字符串是否可行,显然dp[len-2][0(1)]必定不可行. 转移方程: dp[i][0] = dp[i+3][1] || dp[i+2][0] && (tmp1 != tmp2); dp[i][1] = dp[i+2][0] || dp[i+3][1] &…
题目链接: http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=28214 题目大意:源串有如下变形:每次将串切为两半,位置颠倒形成新串.问经过K次变形后,与目标串相同的变形方案数.mod 1000000007. 解题思路: 奇葩的字符串DP.照着别人的题解写的,解释不出原理是什么. 首先统计出经过1次变形,就能和目标串相同的中间产物串(包含源串)的个数cnt.len表示源串长度,那么len-cnt就表示和目标串不同的个数. 用…