摘要: 最长上升子序列#include#include#include#includeusing namespace std;const int maxn=1000+10;int a[maxn];int dp[maxn];int n;int main(){ while(~scanf("%d",&n))... 阅读全文
posted @ 2016-01-17 21:15 Fighting_Heart 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 最长公共子序列#include#include#include#includeusing namespace std;const int maxn=1000+10;int a[maxn],b[maxn];int dp[maxn][maxn];char s[maxn];int main(){ w... 阅读全文
posted @ 2016-01-17 21:09 Fighting_Heart 阅读(200) 评论(0) 推荐(0) 编辑
摘要: dp[i]表示到i这个人所用的最少时间状态转移方程dp[i]=min(dp[i-1]+a[i],dp[i-2]+b[i-1]);最后转换一下时间就可以了,当小时大于等于12的时候显示pm,其余显示am#include#include#include#includeusing namespace st... 阅读全文
posted @ 2016-01-17 20:53 Fighting_Heart 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 可以说想了好多时间。。。但是最终还是想出来了。。。感觉是DAG上的DP,dp[i][j]表示到第i分钟,第j个位置最多能接的数量。dp[i][j]有三个来源:状态转移方程:dp[i][j]=dp[i][j]+max(dp[i-1][j-1],dp[i-1][j],dp[i-1][j+1]) ;#in... 阅读全文
posted @ 2016-01-17 19:55 Fighting_Heart 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 好难。。看了kuangbin大神的博客讲解才会。。自己写的时候又写了好久。。。#include#include#include#includeusing namespace std;const int maxn=1000000+10;int a[maxn],b[maxn];int c[maxn];i... 阅读全文
posted @ 2016-01-17 16:47 Fighting_Heart 阅读(192) 评论(0) 推荐(0) 编辑
摘要: 简单DP,最长上升子序列变形#include#include#include#includeusing namespace std;const int maxn=1000+10;int a[maxn];int dp[maxn];int n;int main(){ while(~scanf("%... 阅读全文
posted @ 2016-01-17 13:07 Fighting_Heart 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 简单dp#include#include#include#includeusing namespace std;const int maxn=1000;int a[maxn];int b[maxn];int n;int ans;int main(){ while(~scanf("%d",&n)... 阅读全文
posted @ 2016-01-17 11:20 Fighting_Heart 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 最长上升序列变形#include#include#include#includeusing namespace std;const int maxn=1000;struct X{ int x,y,z;} s[maxn];int n,tot;int dp[maxn];bool cmp(const... 阅读全文
posted @ 2016-01-17 11:09 Fighting_Heart 阅读(140) 评论(0) 推荐(0) 编辑