2015.10.20 2014--- 广州

前两天练的了,

做了过的人最多的三道后

----------

wtw发现第一题据说是西工大说的那个暴力出奇迹的题

第四题刚推出轨迹是个圆,,syh发现 ,,, 求的是圆和多边形的面积交---

于是弃疗又开了另一场比赛----

Dogs‘ Candies

The E-pang Palace

从30个点里面选择8个点组成两个矩形,使得它们的面积和最大

枚举每个矩形的左下,右上这两个点---

虽然意识到了有大矩形包含小矩形的情况----

这种包含的情况的时候,只算外面那个大矩形的面积----(sb地还把两个加起来----wa了一天---好忧桑---)

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;

typedef pair<int,int> pii;
int n;
int g[505][505];

struct node{
    int x,y;
}p[55];
int res;
int xx1,yy1,xx2,yy2,xx3,yy3,xx4,yy4;
int x1,y1,x2,y2,x3,y3,x4,y4;

int check(){
    if(x3 < x1 && y3 < y1 && x4 > x2 && y4 > y2) return 2;
    if(x3 > x2) return 1;
    if(y3 > y2) return 1;
    if(x4 < x1) return 1;
    if(y4 < y1) return 1;
    if(x3 == x2 && (y3 > y2 || yy3 < y1)) return 1;
    if(y3 == y2 && (x3 > x2 || xx4 < x1)) return 1;
    if(x4 == x1 && (yy4 > yy1 || y4 < y1)) return 1;
    if(y4 == y1 && (x4 < x1 || xx3 > xx2)) return 1;
    return 0;
}

int ok(){
    vector<pii> cc;
    int num = 0;
    if(g[xx1][yy1]){
        num++;
        g[xx1][yy1] = 0;
        cc.push_back(make_pair(xx1,yy1));
    }
    if(g[xx2][yy2]){
        num++;
        g[xx2][yy2] = 0;
        cc.push_back(make_pair(xx2,yy2));
    }
    if(g[xx3][yy3]){
        num++;
        g[xx3][yy3] = 0;
        cc.push_back(make_pair(xx3,yy3));
    }
    if(g[xx4][yy4]){
        num++;
        g[xx4][yy4] = 0;
        cc.push_back(make_pair(xx4,yy4));
    }
    for(int i = 0;i < cc.size();i++){
        int fi = cc[i].first,se = cc[i].second;
        g[fi][se] = 1;
    }
    return num == 4;
}

void work(int n1,int n2,int n3,int n4){
    int q[5];
    q[1] = n1;q[2] = n2;q[3] = n3;q[4] = n4;
    do{
        x1 = p[q[1]].x; y1 = p[q[1]].y;
        x2 = p[q[2]].x; y2 = p[q[2]].y;
        x3 = p[q[3]].x; y3 = p[q[3]].y;
        x4 = p[q[4]].x; y4 = p[q[4]].y;
        if(x1 >= x2 || y1 >= y2) continue;
        if(x3 >= x4 || y3 >= y4) continue;

        int a = x2-x1;
        int b = y2-y1;
        int c = x4-x3;
        int d = y4-y3;

        xx1 = x1;yy1 = y1 + b;
        xx2 = x1 + a;yy2 = y1;
        xx3 = x3;yy3 = y3 + d;
        xx4 = x3 + c;yy4 = y3;
        if(!ok()) continue;
        if(check() == 1) {
            res = max(res,a*b + c*d);
            //for(int i = 1;i <= 4;i++) printf("q[%d] = %d\n",i,q[i]);
        }
        if(check() == 2){
            res = max(res,max(a*b,c*d));
        }
    }while(next_permutation(q+1,q+5));
}

void solve(){
    if(n <= 7){
        puts("imp");
        return;
    }

    res = -1;
    for(int i = 1;i <= n;i++){
        for(int j = i+1;j <= n;j++){
            for(int k = j+1;k <= n;k++){
                for(int z = k+1;z <= n;z++){
                  // printf("i = %d  j = %d  k = %d  z = %d\n",i,j,k,z);
                    work(i,j,k,z);
                }
            }
        }
    }
    if(res == -1) puts("imp");
    else printf("%d\n",res);
}

int main() {
    //freopen("in.txt","r",stdin);
    //freopen("out.txt","w",stdout);
    while(scanf("%d",&n) != EOF && n){
        memset(g,0,sizeof(g));
        for(int i = 1;i <= n;i++){
            scanf("%d %d",&p[i].x,&p[i].y);
            g[p[i].x][p[i].y] = 1;
        }
        solve();
    }
    return 0;
}

Yong Zheng‘s Death

Signal Interference

Song Jiang‘s rank list

Train Scheduling

Squared Frequency

Highway

Little Zu Chongzhi‘s Triangles

Yue Fei‘s Battle

How Many Maos Does the Guanxi Worth

时间: 2024-10-13 01:46:08

2015.10.20 2014--- 广州的相关文章

2015.10.20

#include<stdio.h> main() { int a,b; char hh,mm; /*定义字符变量op*/ hh='+'; mm='='; scanf("%d",&a); putchar(hh); scanf("%d",&b); putchar(mm); printf("%d",a+b); /*整数计算器*/ int y,q; char m,n; n='='; scanf("%d%c%d&quo

2015.10.15 --- 2014 牡丹江

练了好久的了 过了4题 现在才补 真是懒成dog了--- A 签到 B 练的时候虽然讨论出了正确的做法,,可是当时根本不觉得是对的- - 做法是,求三次树的直径 第一次,求出整棵树的直径,找到直径的中点,将整棵树分成两颗子树 第二次,求出第一棵子树的直径的中点 第三次,求出第二棵子树的直径的中点 -------写了好几天----最后还是看了题解的写法--- 自己写的又wa又T的-----好----搓----啊---- 有两个地方自己写的时候没有搞太清楚, 先是将整棵子树分成两半的时候,不知道从哪

Liam的计组学习历程(二):对比程序运算时间(2015.10.20)

对比执行时间实验 机器规格: CPU型号:Intel Core i7-366U: CPU主频:2.0 GHz(最大睿频:3.2GHz): 核心数: 双核心, 线程数:四线程: RAM :8GB: 操作系统位数:64位. 在VS中编写代码如下: #include "stdafx.h" #include "iostream" #include "windows.h" #include "time.h" using namespac

个人回忆录 2014.10.20 至 2015.7.30

时间过的太快.以至于对我来说都记不起来每天做了些什么事情.工作节奏太快,下班.上班 然后再下班再上班. 每天下班后都晚上9点左右.真的看不见日出看不见日落. 从2014.10.20 到现在已经快10个月了.新的工作环境以及新的同事.上司都已熟悉了.回想刚刚开始进入这个研发团队的时候. 高原反应非常强烈,总是在疑问自己为何选择这个方向—C++ 客户端开发.为何不沿用最熟悉的.NET 平台开发.当从新学习一门新技术的时候 才发现自己太笨.有点像当年的高考,时间很紧.因为没有太多的时间用在学习上.MF

Java 学习笔记(2015.7.20~24)

Java 学习笔记(2015.7.20~24) Java Java 学习笔记(2015.7.20~24) 1.StringBuffer与StringBuilder的区别: 2.基本数据类型包装类 3.Date.Calendar.DateFormat等与时间相关的类 1.常用类String 2.正则表达式 3.常用类 StringBuffer 代表可变的字符序列 拆箱与装箱 包装类的应用 匿名内部类 数组 day11 day12 day13 day14 day11 父类中使用public定义的方法

从“假如有以下几种价格10,20,50,请你代码实现将他们排序输出”看着设计模式中的策略模式

今天重温了一下策略模式,将自己的一些感悟与大家分享...本人只是技术渣渣,所理解的东西的难免会有很大的局限性甚至是错误,还请各位带着批判的眼光去看待....不喜请勿吐槽 定义:策略模式属于设计模式中的对象行为型模式,它将用到的算法单独抽象成一个单独的类.通常,我们在多个类完成同一件事情,仅仅完成的方式不同时,我们可以考虑使用这种设计模式. 举例:相信,很多人在看到"假如有以下几种价格10,20,50,请你代码实现将他们排序输出"这种题目的时候,很快就写出了以下代码,写之前还不忘了问一下

HDU 5131 Little Zu Chongzhi&#39;s Triangles (状压DP +2014广州现场赛)

题目链接:HDU 5131 Little Zu Chongzhi's Triangles 题意:给出一些线段,在其中选出3根组成三角形,问用这些线段组成的所有三角形的最大面积是多少. 7 3 4 5 3 4 5 90 两个三角形是(3,3,4),(5,5,4). 思路:N最大12,状态压缩,把所有可能组成的三角形存起来.A&B==0则说明A|B状态是有效的. 贪心也能过..为什么? AC代码: #include <stdio.h> #include <string.h> #

洗澡时感想(2015.10.2篇)

洗澡时感想(2015.10.2篇),以这个为题,或许是自己平时没有其他时间去思考自己吧,唯有冲凉时,身边只有一个水桶,洗发水和香皂(或者沐浴露),还有水龙头的水急冲冲的流着.这个时刻,没有网络,没有虚拟的食物来干扰,除了心里一直想着,可能会出现鬼...  所以洗头发不敢闭着眼睛,擦身子也是神速,两分钟搞点,在自己有时间戳背面的时候,会发现有一层厚厚的泥垢. 蹲着浴室里面,看着水慢慢的流着,手拉着毛巾,毛巾带着水,慢慢的往身上浇水一般,想到我自己目前后悔自己拥有的自行车和台式机,因为我觉得一个人在

我关注的一周技术动态 2015.10.25

分布式系统实践 1. ScyllaDB:用 C++ 重写后的 Cassandra ,性能提高了十倍 http://blog.jobbole.com/93027/?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io 要点: 一直非常不喜欢hadoop系列对JVM的重度依赖, 可能是我不熟悉java的原因吧, 总感觉JVM背着我们做了很多不可见的工作, 心里不踏实. ScyllaDB宣称比Cassandra性能提高十倍, 肯定