3027 线段覆盖 2
来源:互联网 发布:淘宝 国际驾照 编辑:程序博客网 时间:2024/05/17 07:05
刚开始我写这道题目,我的状态转移方程式是:dp[i][i]=dp[i][k]+dp[k+1][j];
AC的代码:
后来才发现 测试数据太大,会导致超时。
接着我又重新梳理了解题的思想, 直接遍历一边可以多选的选项,然后接着用一个Max值存储最大的价值,题目便AC了
先贴出我错误的代码
#include <iostream>using namespace std;void Swap(int a[],int b[]){ int temp; for(int i=0;i<3;i++) { temp=a[i]; a[i]=b[i]; b[i]=temp; }}int main(){ int n,a[1001][3],dp[1001][1001],d[1001][1001]; cin>>n; for(int i=1; i<=n; i++)cin>>a[i][0]>>a[i][1]>>a[i][2]; //按升序排序 /* for(int i=1;i<=n;i++) { for(int j=0;j<3;j++) { cout<<a[i][j]<<"\t"; } cout<<endl; } cout<<endl;*/ for(int i=1; i<=n; i++) { for(int j=n; j>1; j--) { if(a[j][0] < a[j-1][0]) { Swap(a[j],a[j-1]); }else if(a[j][0]==a[j-1][0]&&a[j][1]>a[j-1][1]) { Swap(a[j],a[j-1]); } } } /* for(int i=1;i<=n;i++) { for(int j=0;j<3;j++) { cout<<a[i][j]<<"\t"; } cout<<endl; } cout<<endl;*/ for(int i=n;i>=1;i--) { for(int j=i;j<=n;j++) { if(i==j){ d[i][i]=i; dp[i][i]=a[i][2]; } for(int k=i;k<j;k++) { if(a[d[i][k]][1] > a[k+1][0]) { if(dp[i][k] > dp[k+1][j]) { d[i][j]=d[i][k]; dp[i][j]=max(dp[i][j],dp[i][k]); } else{ d[i][j]=d[k+1][j]; dp[i][j]=max(dp[i][j],dp[k+1][j]); } } else{ d[i][j]=d[k+1][j]; dp[i][j]=dp[i][k]+dp[k+1][j]; } } } } for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { cout<<d[i][j]<<"\t"; } cout<<endl; } cout<<endl; for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { cout<<dp[i][j]<<"\t"; } cout<<endl; } cout<<dp[1][n];}
AC的代码:
#include <iostream>#include<algorithm>using namespace std;void Swap(int a[],int b[]){ int temp; for(int i=0; i<3; i++) { temp=a[i]; a[i]=b[i]; b[i]=temp; }}int main(){ int n,Max=-99,a[1001][3],k=0; cin>>n; for(int i=1; i<=n; i++)cin>>a[i][0]>>a[i][1]>>a[i][2]; for(int i=1; i<=n; i++) { for(int j=n; j>1; j--) { if(a[j][1] < a[j-1][1]) { Swap(a[j],a[j-1]); }else if(a[j][1]==a[j-1][1]&&a[j][0] > a[j-1][0]); } } for(int i=2;i<=n;i++) { k=0; for(int j=1;j<i;j++) { if(a[j][1]<=a[i][0]) { k=max(k,a[j][2]); } } a[i][2]=a[i][2]+k; Max=max(a[i][2],Max); } cout<<Max;}
0 0
- 3027 线段覆盖 2
- 3027 线段覆盖2
- wikioi 3027 线段覆盖 2
- wikioi 3027 线段覆盖 2
- Codevs 3027 线段覆盖2
- CodeVS 3027 线段覆盖2
- 【Codevs 3027】线段覆盖2
- wikioi 3027 线段覆盖2
- CODEVS 3027 线段覆盖 2
- Codevs 3027 线段覆盖 2
- codevs 3037 线段覆盖 5,codevs 3012 线段覆盖 4,codevs 3027 线段覆盖 2
- ACM 3027 线段覆盖 2 (dp+相容)
- CODE[VS] 3027 线段覆盖 2
- Codevs 3027 线段覆盖 2 序列dp
- codevs 3027_线段覆盖 2_dp
- code[vs] 3027线段覆盖2
- 线段覆盖2
- 线段覆盖2
- Android应用使用SyncAdapter传输数据
- 几种clean data的软件用法
- 看了不准笑
- LDD3源码分析之poll分析
- android activity生命周期以及横竖屏切换问题
- 3027 线段覆盖 2
- ImageView属性详解
- 通过网络同步时间
- 删除ssh中旧的RSA key
- FreeMarker中<#include>和<#import>标签的区别
- ceph存储 ceph集群filestore认知
- 解决UnicodeEncodeError: 'ascii' codec can't encode characters in position 问题
- Mac 下使用wireshark解决Interface为空的办法
- python2.7和 python3.4的却别