BZOJ 3359: [Usaco2004 Jan]矩形( dp )
2015-08-10 12:53
363 查看
数据范围这么小..怎么乱搞都可以吧...
先排序一遍然后O(n²) dp
------------------------------------------------------------------
#include<bits/stdc++.h> using namespace std; const int maxn = 109; struct R { int x, y; inline void Read() { scanf("%d%d", &x, &y); if(x < y) swap(x, y); } bool operator < (const R &o) const { return x > o.x || x == o.x && y > o.y; }} A[maxn]; int dp[maxn]; bool ok(int a, int b) { return A[a].x > A[b].x && A[a].y >= A[b].y || A[a].x >= A[b].x && A[a].y > A[b].y;} int main() { int N; cin >> N; for(int i = 0; i < N; i++) A[i].Read(); sort(A, A + N); for(int i = 0; i < N; i++) { dp[i] = 1; for(int j = 0; j < i; j++) if(ok(j, i)) dp[i] = max(dp[i], dp[j] + 1); } cout << *max_element(dp, dp + N) << "\n"; return 0;}-------------------------------------------------------------------
3359: [Usaco2004 Jan]矩形
Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 11 Solved: 7
[Submit][Status][Discuss]
Description
给出N个矩形(1≤N≤100)和它的长和宽(不超过1000),写一个程序找出最大的K,使得有K个矩形满足层层包含的关系,即里层的矩形被所有外层的矩形包含.一个矩形P1包含另一个矩形P2,则P2的一边小于P1的一边,并且P9的另一边不超过P1的另一边.如果两个矩形相同,视为不包含.如2 x 1的矩形被2x2的矩形包含,不被1 x 2的矩形包含. 注意:矩形的顺序可以是任意的,且矩形可以旋转.Input
第1行:整数N. 第2到N+1行:矩形的长和宽,均为整数.Output
一行,输出最大的包含数K.Sample Input
48 14
16 28
29 12
14 8
Sample Output
2HINT
Source
Orange相关文章推荐
- APP性能测试工具GT
- cocos2d-x 3.7 win7 32+Android 环境配置
- 为什么想得慢的人能赢,程序员又如何
- C语言-05-内存分析
- 向eclipse中导入myeclipse项目
- 【Android开发】消息处理类(Handler)与消息类(Message)介绍
- 程序员常去的14个顶级开发社区
- 语音识别&语音朗诵
- CoreAnimation --- CALayer
- Android AsyncHttpClient图片上传
- 位运算求组合,poj2453
- 初试 Julia 语言
- HDU 3397 Sequence operation (线段树区间合并入门)
- Atitit.软件button和仪表板(13)--全文索引操作--db数据库子系统mssql2008
- LIBRARY_PATH和LD_LIBRARY_PATH环境变量的区别
- poj 1515 Street Directions 【tarjan 求割边】【确定无向图边的方向 将其变成有向强连通图】
- sed
- “()” “[]”问题
- JS和JSP的区别
- 位运算之求集合的所有子集