题目;http://acm.hdu.edu.cn/showproblem.php?pid=5128

给你n个点,问能否组成两个不相交的与坐标轴平行的矩形,能就输出两矩形的面积和,不能就输出一个字符串。

由于n的范围就30,所以就是枚举一下就行,先将能够组成的矩形找出来,然后再两两比较,注意的是有一个矩形包含另一个矩形的

情况,此时和就是大矩形的面积。写的时候细心一点就好。

 #include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std; struct point{
int x,y;
}a[]; int ju[][],dir1[][]; int max(int x,int y){return x>y?x:y;} bool cmp(point a,point b)
{
if (a.x==b.x) return a.y<b.y;
return a.x<b.x;
} int check(int *x,int *y){
if (a[x[]].x<a[y[]].x&&a[x[]].x>a[y[]].x&&a[x[]].y>a[y[]].y&&a[x[]].y<a[y[]].y)
return ;
return ;
} int main()
{
int n,i,q,k,u;
while (~scanf("%d",&n)&&n)
{
int ans=;
for (i= ; i<=n ; i++) scanf("%d%d",&a[i].x,&a[i].y);
sort(a+,a+n+,cmp);
for (i= ; i<=n ; i++){
int j=i;
while (a[i].x==a[j].x) j++;
for (k=i+ ; k<j ; k++){
for (u=j ; u<=n ; u++){
if (a[u].y==a[i].y){
for (q=u+ ; q<=n ; q++){
if (a[q].y==a[k].y){
ju[ans][]=i;
ju[ans][]=k;
ju[ans][]=u;
ju[ans++][]=q;
}
}
}
}
}
}
/*for (i=0 ; i<ans ; i++) {
for (int j=0 ; j<4 ; j++)
cout<<ju[i][j];
cout<<endl;
}*/
int sum=;
if (ans<) {puts("imp");continue;}
for (i= ; i<ans ; i++){
memset(dir1,,sizeof(dir1));
int ar1=(a[ju[i][]].x-a[ju[i][]].x)*(a[ju[i][]].y-a[ju[i][]].y);
for (k=a[ju[i][]].x ; k<=a[ju[i][]].x ; k++){
for (q=a[ju[i][]].y ; q<=a[ju[i][]].y ; q++)
dir1[k][q]=;
}
for (int j=i+ ; j<ans ; j++){
int flag=;
for (k=a[ju[j][]].x ; k<=a[ju[j][]].x ; k++){
for (q=a[ju[j][]].y ; q<=a[ju[j][]].y ; q++){
if (dir1[k][q]==) flag=;
}
}
if (flag==||check(ju[i],ju[j])||check(ju[j],ju[i])){
int ar2=ar1;
ar2+=(a[ju[j][]].x-a[ju[j][]].x)*(a[ju[j][]].y-a[ju[j][]].y);
if (check(ju[i],ju[j])) ar2=ar1;
if (check(ju[j],ju[i])) ar2-=ar1;
sum=max(ar2,sum);
}
}
}
if (sum==) puts("imp");
else printf("%d\n",sum);
}
return ;
}

hdu 5129 (枚举) The E-pang Palace的更多相关文章

  1. hdu 4770(枚举 + dfs爆搜)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4770 思路:由于最多只有15个".",可以直接枚举放置的位置,然后判断是否能够全部 ...

  2. hdu 3006 枚举集合能够产生的全部并集的集合

    http://acm.hdu.edu.cn/showproblem.php? pid=3006 刚买的CHERRY键盘 手感真好 可惜不习惯 写代码老是打错.一个题写了一上午,都是各种按错键DEBUG ...

  3. hdu 4282 枚举,非二分

    http://acm.hdu.edu.cn/showproblem.php?pid=4282 对于方程X^Z + Y^Z + XYZ = K,已知K求此方程解的个数,其中要求X<Y,Z>1 ...

  4. HDU 5225 枚举

    题目链接: hdu:http://acm.hdu.edu.cn/showproblem.php?pid=5225 bc(中文):http://bestcoder.hdu.edu.cn/contests ...

  5. hdu 4681(枚举+dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4681 思路:首先预处理出串C在A,B中的所有的位置,然后从前向后求一次最长公共子序列,从后向前求一次最 ...

  6. hdu 4421(枚举+2-sat)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4421 思路:枚举32位bit,然后2-sat判断可行性,这里给出2-sat矛盾关系构图: 1.a&am ...

  7. HDU 5965 枚举模拟 + dp(?)

    ccpc合肥站的重现...一看就觉得是dp 然后强行搞出来一个转移方程 即 根据第i-1列的需求和i-1 i-2列的枚举摆放 可以得出i列摆放的种类..加了n多if语句...最后感觉怎么都能过了..然 ...

  8. 字符串(AC自动机):HDU 5129 Yong Zheng's Death

    Yong Zheng's Death Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 512000/512000 K (Java/O ...

  9. hdu 5228 枚举

    题意:在前往ZJOI2015一试的路上,ZCC在同Fsygd打德州扑克时输光了所有的筹码.不过ZCC最近学会了一些黑技术.现在,他能够在游戏过程中更换任何他想要更换的牌.ZCC想要通过更换尽量少的牌得 ...

随机推荐

  1. unity3d API知识点随记

    1.transform.translate是增加transform面板相应的数值x,y,z是以本地坐标系为方向:transform.transformdirection是以世界坐标系为方向,可以去测试 ...

  2. BOS物流项目第十三天

    教学计划 1.Quartz概述 a. Quartz介绍和下载 b. 入门案例 c. Quartz执行流程 d. cron表达式 2.在BOS项目中使用Quartz创建定时任务 3.在BOS项目中使用J ...

  3. SAP 费用

    SAP在华真相:天价收费与用户之灾 SAP真的是企业实施ERP系统的最佳选择吗? 画皮SAP-世界管理软件公司的中国真相 你知道SAP吗?哦,知道,满大街都是嘛,S-P-A,SPA.做出上述回答的是一 ...

  4. yii Nav:widget 配置参数encodeLabels

    echo Nav::widget([ 'options' => ['class' => 'navbar-nav navbar-right'], 'encodeLabels' => f ...

  5. jdk 11特性

    JDK 11 总共包含 17 个新的 JEP ,分别为: 181: Nest-Based Access Control(基于嵌套的访问控制) 309: Dynamic Class-File Const ...

  6. Mysql5.6 导出sql文件数据导入到5.7

    由于在linux安装了mysql5.7,在需要导入数据时发现报错,说时间默认值不能为0,因为之前用的是mysql5.6 的版本.经过网上百度查找方法,发现是mysql的sql_mode值的问题,于是就 ...

  7. java 递归 树形

    //菜单树形结构 public JSONArray treeMenuList(JSONArray menuList, int parentId) { JSONArray childMenu = new ...

  8. 解题4(NumberToEnglish )

    题目描述 Jessi初学英语,为了快速读出一串数字,编写程序将数字转换成英文: 如22:twenty two,123:one hundred and twenty three. 说明: 数字为正整数, ...

  9. elastic search 查询

    eelastic search主要有两种查询方式,一种是查询字符串,一种是请求体(json格式)查询. 查询字符串: 查询字符串的功能相对简单,使用容易. 比如GET http://localhost ...

  10. spark算子之DataFrame和DataSet

    前言 传统的RDD相对于mapreduce和storm提供了丰富强大的算子.在spark慢慢步入DataFrame到DataSet的今天,在算子的类型基本不变的情况下,这两个数据集提供了更为强大的的功 ...