• 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

  • 相关阅读:
    HTTP协议简介
    Web开发中B/S架构和C/S架构的区别
    软件测试作业三
    Java8 时间处理
    Java EE
    Java 中的 I/O 抽象
    Python 高级 I/O 多路复用
    SQL 与关系代数
    Python 协程与事件循环
    Java SE 5.0
  • 原文地址:https://www.cnblogs.com/xxrlz/p/11756282.html
Copyright © 2020-2023  润新知