UVA 103 - Stacking Boxes
来源:互联网 发布:手机拍照定位软件 编辑:程序博客网 时间:2024/06/08 17:08
简单的动态规划,转换为DAG上无固定起点,终点求最长路的问题。
#include <iostream>#include <limits>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>using namespace std;const int size = 10 + 5;const int n_size = 30 + 5;int A[n_size][size];int G[n_size][n_size];int d[n_size] , f[n_size];int cmp(int x , int y , int m){int r = A[x][0] - A[y][0];for(int i = 0 ; i < m ; ++i){int t = A[x][i] - A[y][i];if( r * t <= 0) return 0;}if(r < 0) return -1;else return 1;}int dp(int x , int n){if(d[x] >= 0) return d[x];int m = 1 , t;for(int i = 0 ; i < n ; ++i){if(G[x][i]){t = dp(i , n);if(t + 1 > m) { m = t + 1; f[x] = i; }}}return d[x] = m;}int main(){int n , m;while(scanf("%d%d" , &n , &m) == 2){for(int i = 0 ; i < n ; ++i){for(int j = 0 ; j < m ; ++j)scanf("%d" , &A[i][j]);}for(int i = 0 ; i < n ; ++i)sort(A[i] , A[i] + m);memset(G , 0 , sizeof(G));for(int i = 0 ; i < n ; ++i){for(int j = i+1 ; j < n ; ++j){int r = cmp(i , j , m);if(r < 0) G[i][j] = 1;else if(r > 0) G[j][i] = 1;}}memset(d , -1 , sizeof(d));memset(f , -1 , sizeof(f));int m_len = 0 , cur;for(int i = 0 ; i < n ; ++i){int t = dp(i , n);if(t > m_len) { cur = i; m_len = t; }}cout << m_len << endl << cur + 1;cur = f[cur];while(cur != -1){cout << " " << cur + 1;cur = f[cur];}cout << endl;}return 0;}
0 0
- UVa 103 Stacking Boxes
- UVA 103 - Stacking Boxes
- uva 103 - Stacking Boxes
- uva 103 Stacking Boxes
- [UVA 103] Stacking Boxes
- uva:103 - Stacking Boxes
- UVa 103 - Stacking Boxes
- UVA - 103 Stacking Boxes
- uva 103 - Stacking Boxes
- UVA 103 Stacking Boxes
- UVa 103 - Stacking Boxes
- Uva - 103 - Stacking Boxes
- uva 103 - Stacking Boxes
- UVa 103 - Stacking Boxes
- UVa 103 - Stacking Boxes
- Uva-103-Stacking Boxes
- UVa:103 Stacking Boxes
- UVA - 103 Stacking Boxes
- C++中的派生与覆盖
- 【转换模型+扫描线】【UVA1398】Meteor
- POJ 1325 Machine Schedule (最小点覆盖 && 二分图最大匹配)
- 第8周项目5
- Handler消息机制源码分析
- UVA 103 - Stacking Boxes
- 第8周项目 3——2 多多分段函数求值
- 字节输入流BufferedInputStream和字节输出流BufferedOutputStream
- Android Stagefright MPEG4Extractor分析
- Android开发之异步详解(一)Thread+Handler
- OpenGL—多线程渲染共享上下文(share context)
- C#模拟软键盘,keybd_event 用法
- 关于图片上传
- 计算机工程研发中心经验交流会------2014.10.17(最后跟新2014.10.20)