CF 256D. Good Sequences(DP)】的更多相关文章

题目链接 主要是标记前面素数的最大的DP值,要认真一些.没想到居然写了一个很难发现的错误. #include <cstdio> #include <cstring> #include <string> #include <cmath> #include <ctime> #include <cstdlib> #include <iostream> using namespace std; ]; ]; ]; ]; ]; int…
Two Merged Sequences 感觉是个垃圾题啊, 为什么过的人这么少.. dp[ i ][ 0 ]表示处理完前 i 个, 第 i 个是递增序列序列里的元素,递减序列的最大值. dp[ i ][ 1 ]表示处理完前 i 个, 第 i 个是递减序列序列里的元素,递增序列的最小值. 然后随便转移转移顺便记录一下路径就好啦. #include<bits/stdc++.h> #define LL long long #define fi first #define se second #de…
335B - Palindrome 题目: 给出一个字符串(均有小写字母组成),如果有长度为100的回文子串,输出该子串.否则输出最长的回文子串. 分析: 虽然输入串的长度比较长,但是如果存在单个字母100或以上的话,直接输出即可. 利用抽屉原理发现,如果不存在上面所说的情况,长度不会超过26*99 dp[l][r]表示l到r的回文子串的长度,dp转移方式比较明显,记录一下得到最优值时的位置. 输出方案时,如果dp[1][len]>=100的话,显然可以输出长度100的子串,否则直接输出该长度.…
题目链接:http://codeforces.com/problemset/problem/435/D 题意:求三角形个数,三个点必须的白点上,而且三条边必须是横线,竖线或对角线,三条边上不同意出现黑点. 解法:dp,计算以每一个点为三角形左下角的个数,当中共同拥有8种形状.为了O(1)查询某段横线竖线和对角线是否有黑点,须要预处理各个方向的黑点数量: 代码: /****************************************************** * @author:xi…
传送门:Ilya and Escalator 题意:有n个人排队进车厢,每秒只能进一个人,而且第1个人进了后面的人才能进,第一个人每秒进入车厢的概率为p,不进的概率为1-p,求t秒后进入车厢总人数的数学期望. 分析:设dp[i][j]表示第i秒进了j个人的概率,则: dp[i][j]=dp[i-1][j]*(1-p)+dp[i-1][j-1]*p. 注意边界限制: 当j=0时:dp[i][j]=dp[i-1][j]*(1-p) 当j=n时:dp[i][j]=dp[i-1][j]+dp[i-1][…
题目:http://codeforces.com/problemset/problem/264/B 题意:给你一个递增序列,然后找出满足两点要求的最长子序列 第一点是a[i]>a[i-1] 第二点 gcd(a[i],a[i-1])>1 也就是说两个数不能互质 找出最长的子序列长度 思路:首先想互质问题,如果两个数互质说明两个数之间没有素因子相同,我们想以每个素因子结尾的最大长度是多少 然后比如样例 2 3 4 6 9 第一个数 2      2结尾 1 第二个数 3      3结尾 1 第三…
传送门:点我 You've got an n × m pixel picture. Each pixel can be white or black. Your task is to change the colors of as few pixels as possible to obtain a barcode picture. A picture is a barcode if the following conditions are fulfilled: All pixels in ea…
解题报告:dp+数论 解题报告: 传送门! 开始看这题的时候想挂了,,,想了个显然是错解的想法,,,就是,我也不知道我怎么想的,鬼迷心窍地就想开个数组存每个质因数的倍数的出现次数,然后排下序的max就是ans了,,,显然的一个错解,但是其实给正解提供了一点点启发 还是先说一个对正解毫无启发的暴力趴 就是个最简单的dp,当做最长上升子序列这种做,n2转移即可 显然是过不了的 然后我们既然想到最长上升子序列了,就应该能想起,那种题目其实可以二分然后O(nlogn)地过去,举一反三一下,这题484也能…
题目链接: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<…
题目链接:http://codeforces.com/contest/126/problem/D 题意:一个数能够有多种由互不同样的斐波那契数组成的情况: 解法:dp,easy证明:每一个数通过贪心能够找到一种最少数量的斐波那契数组成方案.然后找到有多少种取代的方案:dp[i][0]表示前i个里面第i个数不动的方案数.dp[i][1]表示前i个里面第i个数下放的方案数.由于下放最多下放到已经有了的数,并且下放过程中,i下放.那么i-1就会固定无法下放,最多仅仅能继续下放i-2.直到下放到已经存在…