hdu1069 LIS 变形
2016-04-10 11:39
260 查看
/**********************jibancanyang************************** *Author :jibancanyang *Created Time : 日 4/10 10:30:34 2016 *File Name : hdu1069.cpp *题目类型: LIS 变形 *感悟:这里实际上是定义了一种严格减小到偏序关系,但是我开始的排序思路,和cnt大小都弄错了,有些按照习惯的就是容易出错,看来每个细节都要去实际思考,而不是凭借习惯,这实际上是一种思维懒惰. ***********************1599664856@qq.com**********************/ #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #include <vector> #include <queue> #include <set> #include <map> #include <string> #include <cmath> #include <cstdlib> #include <ctime> #include <stack> using namespace std; typedef pair<int, int> pii; typedef long long ll; typedef unsigned long long ull; vector<int> vi; #define pr(x) cout << #x << ": " << x << " " #define pl(x) cout << #x << ": " << x << endl; #define xx first #define yy second #define sa(n) scanf("%d", &(n)) #define rep(i, a, n) for (int i = a; i < n; i++) #define vep(c) for(decltype((c).begin() ) it = (c).begin(); it != (c).end(); it++) const int mod = int(1e9) + 7, INF = 0x3fffffff, maxn = 1e5 + 12; int dp[200]; struct node { int x, y, z; }a[200]; bool cmp(node &a, node &b) { if (a.x > b.x) return true; if (a.x == b.x) return a.y > b.y; return false; } int main(void) { #ifdef LOCAL freopen("in.txt", "r", stdin); freopen("out.txt", "w", stdout); #endif cin.sync_with_stdio(false); int n, cnt = 1, T = 1; while (cin >> n, n) { cnt = 1; rep (i, 0, n) { int x, y, z; cin >> x >> y >> z; a[cnt].x = max(x, y), a[cnt].y = min(x, y), a[cnt++].z = z; a[cnt].x = max(y, z), a[cnt].y = min(y, z), a[cnt++].z = x; a[cnt].x = max(x, z), a[cnt].y = min(x, z), a[cnt++].z = y; } sort(a + 1, a + cnt , cmp); //for (int i = 1; i < cnt; i++) pr(i),pr(a[i].x), pr(a[i].y), pl(a[i].z); for (int i = 1; i < cnt; i++) dp[i] = a[i].z; for (int i = 2; i < cnt; i++) { for (int j = i - 1; j > 0; j--) { if (a[i].x < a[j].x && a[i].y < a[j].y) dp[i] = max(dp[i], dp[j] + a[i].z); } //pl(dp[i]); } int ans = 0; for (int i = 1; i < cnt; i++) ans = max(ans, dp[i]); cout << "Case " << T++ << ": maximum height = "; cout << ans << endl; } return 0; }
相关文章推荐
- iOS中 语音识别功能/语音转文字教程详解 韩俊强的博客
- 数学学习感悟
- iOS中 语音识别功能/语音转文字教程详解 韩俊强的博客
- java异常总结
- iOS SDWebImage源码研究(二)
- 转载:Java的异常处理机制:try、catch、finally、throw、throws
- 如何查看使用的那个Linux发行版
- 第三部分 关于HHibernate中关键字ID的配置
- java中OutputStream字节流与字符流InputStreamReader 每一种基本IO流BufferedOutputStream,FileInputStream,FileOutputStream,BufferedInputStream,BufferedReader,BufferedWriter,FileInputStream,FileReader,FileWriter,InputStr
- VMware网络模式介绍
- 表、视图、存储过程、函数、触发器、事件
- Floyd算法与Dijkstra算法(最短路径)
- VS2010+OpenCV 项目生成EXE文件如何在其他电脑上直接运行
- 一张图系列——从CreateProcess到main函数的过程
- UIViewController的生命周期及iOS程序执行顺序
- JavaScript实现简单人机五子棋
- rpm包卸载时error: specifies multiple packages
- 全球最低功耗蓝牙单芯片DA14580的软件体系 -RW内核和消息处理机制
- 【leetcode】3. Longest Substring Without Repeating Characters
- 数据结构:List和Stack