zoukankan      html  css  js  c++  java
  • 2019-2020 ICPC, Asia Jakarta Regional Contest H

    • 题意: 给出一堆矩形,你要构造出一个矩形R,使能在这堆矩形上至少能造出来两个R.求R的最大面积
    • 思路: 先对矩形的长边进行排序,然后从后向前遍历,则可以保证后面的长边肯定小于前面的长边,存下前面遇到短边最长的矩形,然后跟当前的矩形组合更新答案.
    #include<bits/stdc++.h>
    #define ll long long
    #define pii pair<int,int>
    using namespace std;
     
    const int N =  1e5+10;
     
    struct node{
        ll l,r;
        bool operator <(const node b){
            if(l != b.l) return l > b.l;
            return r > b.r;
        }
    }a[N];
    int n;
    int main(){
        ios::sync_with_stdio(0);
        cin >> n;
        ll ans = 0;
        for(int i=1;i<=n;++i){
            cin >> a[i].l >> a[i].r;
            ans = max(ans,a[i].l*a[i].r);
            if(a[i].l < a[i].r) swap(a[i].l , a[i].r);
        }
        sort(a+1,a+1+n);
        ll fuck = 2.0, cr = 1;
        for(int i=2;i<=n;++i){
            ans = max(min(a[i].r,a[cr].r)*a[i].l*fuck,ans);
            if(a[i].r>a[cr].r) cr = i;
        }
        if(ans%2==0)    cout << ans/2 << ".0
    ";
        else cout << ans/2 << ".5
    ";
        return 0;
    }
    

    脑子抽掉,一直在用面积排序...
    由于只要保持小数点一位,直接ll跑面积,最后手工除2

  • 相关阅读:
    tomcat配置用户角色权限
    jenkins集成maven
    centos7安装maven
    jenkins凭证插件的安装和基本使用
    Jenkins用户权限管理
    虚拟机NAT模式配置静态IP
    制作sentinel docker镜像
    docker安装nacos
    Tkinter
    neo4j导入csv文件
  • 原文地址:https://www.cnblogs.com/xxrlz/p/11756282.html
Copyright © 2011-2022 走看看