经典DP 嵌套矩形 (南洋理工ACM—16)
2014-08-28 11:37
232 查看
本来是个很水的DP,结果被自己的代码习惯给打败了
代码:
d[]用来实现记忆化搜索,记忆化搜索是这个题的关键,几乎所有的DP都需要记忆化搜索,记忆化搜索是个非常好的技巧。另外map的构建。
代码:
#include<iostream> #include<stdlib.h> #include<string.h> using namespace std; typedef struct rectangle { int x; int y; }Rectangle; Rectangle a[1002]; int map[1002][1002]; int d[1002]; int N; int dp(int t) { int &ans = d[t]; if(ans>=0) return ans; int max=0; for(int i=0; i<N;i++) { if(map[t][i]==1) { if(max<dp(i)) max = dp(i); } } return d[t] = max+1; } int main() { int T; cin>>T; while(T--) { memset(d,-1,sizeof(d)); cin>>N; for(int i=0; i<N;i++) { cin>>a[i].x>>a[i].y; } //构图 memset(map,0,sizeof(map)); for(int i=0; i<N; i++) { for(int j=0; j<N; j++) { if((a[i].x>a[j].x&&a[i].y>a[j].y)||(a[i].y>a[j].x&&a[i].x>a[j].y)) map[i][j]=1; } } int max=0; for(int i=0; i<N; i++) { if(dp(i)>max) max = dp(i); } cout<<max<<endl; } return 0; }
d[]用来实现记忆化搜索,记忆化搜索是这个题的关键,几乎所有的DP都需要记忆化搜索,记忆化搜索是个非常好的技巧。另外map的构建。
相关文章推荐
- NYOJ 题目16 矩形嵌套 dp(经典dp,简单,记忆化搜索)
- DP经典应用(四)二维最长上升子序列问题——矩形嵌套问题
- 经典DP 嵌套矩形
- nyoj 16 矩形嵌套 【经典DP】
- NYOJ 16 矩形嵌套(经典DP)
- 矩形嵌套(经典dp)
- NYOJ - 矩形嵌套(经典dp)
- nyoj--16 矩形嵌套(经典DP)
- nyoj 16 矩形嵌套(基础dp)
- NYoj-16-矩形嵌套-dp
- nyoj16矩形嵌套(第一道dp关于dag的题目)
- 简单DP(矩形嵌套)
- Uva 103-Stacking Boxes(DP/矩形嵌套)
- NYOJ 16 矩形嵌套【DP】
- 嵌套矩形 DAG上的dp(深搜+dp)
- 经典动态规划 嵌套矩形
- NYOJ16 矩形嵌套 【DP】
- NYOJ16 矩形嵌套 ——DP入门题
- nyoj 16 矩形嵌套 (DAG上的DP)
- nyoj46 矩形嵌套(dp)