vijos 1055 奶牛浴场(最大子矩阵DP)
来源:互联网 发布:建淘宝优惠群网站 编辑:程序博客网 时间:2024/04/29 18:30
求最大子矩阵,用的王知昆的论文里的第一种方法
算法复杂度是0(s^2 )
AC代码如下:
#include <iostream>#include <cstring>#include <cstdio>#include <algorithm>using namespace std;struct Node{ int x, y;};int L, W;int N;Node node[5100];int cmp1( const void *a, const void *b ){ if( ((Node*)a)->x > ((Node*)b)->x ){ return 1; }else{ return -1; }}int cmp2( const void *a, const void *b ){ if( ((Node*)a)->y > ((Node*)b)->y ){ return 1; }else{ return -1; }}int solve(){ qsort( node, N, sizeof( Node ), cmp1 ); int h, l, ans; ans = 0; for( int i = 0; i < N; i++ ){ h = W; l = 0; for( int j = i + 1; j < N; j++ ){ ans = max( ans, ( node[j].x - node[i].x ) * ( h - l ) ); if( node[j].y >= node[i].y ) h = min( h, node[j].y ); if( node[j].y <= node[i].y ) l = max( l, node[j].y ); if( node[j].y == node[i].y ) break; } ans = max( ans, ( L - node[i].x ) * ( h - l ) ); } for( int i = N - 1; i >= 0; i-- ){ h = W; l = 0; for( int j = i - 1; j >= 0; j-- ){ ans = max( ans, ( node[i].x - node[j].x ) * ( h - l ) ); if( node[j].y >= node[i].y ) h = min( h, node[j].y ); if( node[j].y <= node[i].y ) l = max( l, node[j].y ); if( node[j].y == node[i].y ) break; } ans = max( ans, ( node[i].x ) * ( h - l ) ); } qsort( node, N, sizeof( Node ), cmp2 ); for( int i = 0; i < N - 1; i++ ){ ans = max( ans, L * ( node[i+1].y - node[i].y ) ); } ans = max( ans, L * ( node[0].y ) ); ans = max( ans, L * ( W - node[N-1].y ) ); return ans;}int main(){ while( scanf( "%d%d", &L, &W ) != EOF ){ scanf( "%d", &N ); for( int i = 0; i < N; i++ ){ scanf( "%d%d", &node[i].x, &node[i].y ); } printf( "%d\n", solve() ); } return 0;}
0 0
- vijos 1055 奶牛浴场(最大子矩阵DP)
- 【Vijos P1055】[WC 2002]奶牛浴场(最大子矩阵)
- Vijos 1055 奶牛浴场 最大子矩阵 算♂法①
- oldssoj1107奶牛浴场(最大子矩阵)
- vijos 1055 奶牛浴场
- [Vijos P1055]奶牛浴场(最大子矩形)
- Vijos[1055]奶牛浴场 极大化思想
- P1055 奶牛浴场 - Vijos
- vijos p1055奶牛浴场
- Vijos P1055 奶牛浴场
- vijos 奶牛浴场
- vijos p1005 奶牛浴场[ 极大化思想]
- [Vijos1055]奶牛浴场(极大子矩形)
- 最大子矩阵 (DP)
- 最大子矩阵 DP
- Vijos 1255 月饼盒 最大子矩阵
- poj1050(dp最大子矩阵)
- 最大子矩阵和【dp】
- UVA 之11300 - Spreading the Wealth
- HDU 1753.大明A+B
- UVA 之11729 - Commando War
- UVA之11292 - Dragon of Loowater
- 测试测试试试
- vijos 1055 奶牛浴场(最大子矩阵DP)
- 关于泛化、继承、实现、关联、聚合、组合、依赖关系比较
- ftk学习记(首篇)
- 关于response.sendError()方法的参数
- Wolfram技术融入编程马拉松活动
- 手机传感器的意义:未来生活将被彻底改变
- 矩阵求逆c++实现
- git学习笔记---建立简单的git环境
- 第五章作业