HDU 5023 A Corrupt Mayor's Performance Art (计算几何、血坑)
来源:互联网 发布:it618淘宝客导购源码 编辑:程序博客网 时间:2024/06/06 06:52
题意:
N<=30点,求2个不cross,不touch的矩形的最大面积和,拼不出2个矩形输出“imp”
分析:
暴力对角线2个点,然后另外2个点可以算,得到第一个矩形
再暴力2个点,再算出2个点,得到第二个矩形
第二个矩形不能和第一个touch,cross,其实就是这个4个点不在前面那个矩形范围内
血坑:
大的完全包含小的矩形的情况是合法的。。。。。。
代码:
//// Created by TaoSama on 2015-10-23// Copyright (c) 2015 TaoSama. All rights reserved.////#pragma comment(linker, "/STACK:1024000000,1024000000")#include <algorithm>#include <cctype>#include <cmath>#include <cstdio>#include <cstdlib>#include <cstring>#include <iomanip>#include <iostream>#include <map>#include <queue>#include <string>#include <set>#include <vector>using namespace std;#define pr(x) cout << #x << " = " << x << " "#define prln(x) cout << #x << " = " << x << endlconst int N = 1e5 + 10, INF = 0x3f3f3f3f, MOD = 1e9 + 7;int n;struct Point { int x, y; Point(int x = 0, int y = 0): x(x), y(y) {} void input() { scanf("%d%d", &x, &y); } void print() { cout << x << ' ' << y << endl; }} A[35];bool vis[205][205];int l, r, up, down;bool onLine(Point& a, Point& b) { return a.x == b.x || a.y == b.y;}bool isLegal(Point& a) { if(a.x >= l && a.x <= r && a.y >= down && a.y <= up) return 0; return 1;}bool isIn(Point& a) { return (a.x > l && a.x < r && a.y > down && a.y < up);}int getRectArea(Point a, Point b, Point& c, Point& d) { if(a.x > b.x) swap(a, b); c = Point(a.x, b.y), d = Point(b.x, a.y); if(vis[c.x][c.y] && vis[d.x][d.y]) return abs(a.x - b.x) * abs(a.y - b.y); return -INF;}int main() {#ifdef LOCAL freopen("C:\\Users\\TaoSama\\Desktop\\in.txt", "r", stdin);// freopen("C:\\Users\\TaoSama\\Desktop\\out.txt","w",stdout);#endif// ios_base::sync_with_stdio(0); while(scanf("%d", &n) == 1 && n) { memset(vis, false, sizeof vis); for(int i = 1; i <= n; ++i) { A[i].input(); vis[A[i].x][A[i].y] = true; } int ans = -INF; Point C, D; for(int a = 1; a <= n; ++a) { for(int b = 1; b <= n; ++b) { if(onLine(A[a], A[b])) continue; int tmp = getRectArea(A[a], A[b], C, D); if(tmp == -INF) continue; l = min(A[a].x, A[b].x), r = max(A[a].x, A[b].x); down = min(A[a].y, A[b].y), up = max(A[a].y, A[b].y); for(int c = 1; c <= n; ++c) { for(int d = 1; d <= n; ++d) { if(onLine(A[c], A[d])) continue; int tmp2 = getRectArea(A[c], A[d], C, D); if(tmp2 == -INF || tmp < tmp2) continue; if(isIn(A[c]) && isIn(A[d]) && isIn(C) && isIn(D)) { ans = max(ans, tmp); }// if(tmp == 3){// A[a].print();// A[b].print();// A[c].print();// A[d].print();// cout << "max" << endl;// } if(!isLegal(A[c]) || !isLegal(A[d]) || !isLegal(C) || !isLegal(D)) continue; ans = max(ans, tmp + tmp2);// if(tmp + tmp2 == 3){// A[a].print();// A[b].print();// A[c].print();// A[d].print();// cout << endl;// } } } } } if(ans != -INF) printf("%d\n", ans); else puts("imp"); } return 0;}
0 0
- HDU 5023 A Corrupt Mayor's Performance Art (计算几何、血坑)
- A Corrupt Mayor's Performance Art HDU
- 【HDU】5023 A Corrupt Mayor's Performance Art 线段树
- HDU 5023 A Corrupt Mayor's Performance Art
- hdu 5023 A Corrupt Mayor's Performance Art
- hdu 5023 A Corrupt Mayor's Performance Art(线段树)
- hdu 5023——A Corrupt Mayor's Performance Art
- HDU 5023 A Corrupt Mayor's Performance Art
- HDU 5023 A Corrupt Mayor's Performance Art (线段树)
- HDU 5023 A Corrupt Mayor's Performance Art
- hdu 5023-A Corrupt Mayor's Performance Art
- HDU 5023 A Corrupt Mayor's Performance Art (线段树)
- hdu 5023(2014广州网赛1002) A Corrupt Mayor's Performance Art
- HDU 5023 A Corrupt Mayor's Performance Art(线段树+优美的位运算)
- HDU - 5023 A Corrupt Mayor's Performance Art(区间修改)
- HDU 5023 A Corrupt Mayor's Performance Art (线段树)
- hdu 5023 A Corrupt Mayor's Performance Art(广州网络赛)
- hdu - 5023 - A Corrupt Mayor's Performance Art(线段树)
- Android app实现重启、关机功能
- MYSQL命令
- response.sendRedirect()与request.getRequestDispatcher().forward(request,response)比较
- Mac下通过 brew 安装不同版本的php
- PowerDesigner模型
- HDU 5023 A Corrupt Mayor's Performance Art (计算几何、血坑)
- 2015秋季校园招聘小记+公历2015年小记
- Java进制转换, 数据类型, 运算符
- java基本类介绍
- “异或”处理数组的相关算法的面试题
- 欢迎使用CSDN-markdown编辑器
- [leetcode190]Reverse Bits
- hdu 1044 Collect More Jewels(BFS+DFS)
- Java List接口