摘要:
最长上升子序列#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))... 阅读全文
摘要:
最长公共子序列#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... 阅读全文
摘要:
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... 阅读全文
摘要:
可以说想了好多时间。。。但是最终还是想出来了。。。感觉是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... 阅读全文
摘要:
好难。。看了kuangbin大神的博客讲解才会。。自己写的时候又写了好久。。。#include#include#include#includeusing namespace std;const int maxn=1000000+10;int a[maxn],b[maxn];int c[maxn];i... 阅读全文
摘要:
简单DP,最长上升子序列变形#include#include#include#includeusing namespace std;const int maxn=1000+10;int a[maxn];int dp[maxn];int n;int main(){ while(~scanf("%... 阅读全文
摘要:
简单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)... 阅读全文
摘要:
最长上升序列变形#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... 阅读全文