摘要:方法一:LIS/LDS#include"stdio.h"
int lis[30001],lds[30001]; int main()
{ int n,t,len1=0,len2=0,i,left,right,mid; lds[0]=0x7fffffff; lis[0]=-1; scanf("%d",&n); for(i=1;i<=n;i++) { scanf("%d",&t); if(t>=lis[le...
阅读全文
摘要:#include"stdio.h"
#include"string.h"
#include"stdlib.h"
#define MAX 1010
int f[MAX],value[MAX],cost[MAX];
main()
{ int i,v,n,t,j; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&v); memset(f,0,sizeof(f)); ...
阅读全文
摘要:#include"stdio.h"
//#include"stdlib.h"
#define INF 100000000
#define maxn 10010
int p[510],w[510],f[maxn];
int min(int a,int b)
{return a<b?a:b;}
main()
{ int a,b,t,i,j,v,n; scanf("%d",&t); while(t--) { scanf("%d%d",&a,&b); ...
阅读全文
摘要:ans=max{dp[m,j]}(m<=j<=n)其中dp[m,j]为数组中前j个数的m段的最大和,且第m个段包含a[j];而dp[i][j]=max{dp[i,j-1]+a[j],max{dp[i-1,t]+a[j]}}(i-1=<t<j);dp[i][j]只与dp[i][j-1]及i-1阶段j之前的max(dp[i-1][t])有关,故只保存当前阶段的dp值和用b数组保存上一阶段的最大值#include"stdio.h"
#define MIN 0x80000000
#define N 1000001
int a[N],b[N],dp[N];
m
阅读全文