zoukankan      html  css  js  c++  java
  • 洛谷 P1578 奶牛浴场

    https://www.luogu.org/problemnew/show/P1578

    题解

    另外这题有一些小坑,洛谷的题解里面有讲

     1 #pragma GCC optimize("Ofast")
     2 #include<cstdio>
     3 #include<algorithm>
     4 #include<cstring>
     5 #include<vector>
     6 using namespace std;
     7 #define fi first
     8 #define se second
     9 #define mp make_pair
    10 #define pb push_back
    11 typedef long long ll;
    12 typedef unsigned long long ull;
    13 struct pii
    14 {
    15     int fi,se;
    16 };
    17 bool operator<(const pii &a,const pii &b)
    18 {
    19     return a.fi<b.fi;
    20 }
    21 int L,W,n;
    22 pii p[100100];
    23 bool c1(const pii &a,const pii &b)
    24 {
    25     return a.se<b.se;
    26 }
    27 int ans;
    28 int main()
    29 {
    30     int i,j,t1,t2,t;
    31     scanf("%d%d%d",&L,&W,&n);
    32     for(i=1;i<=n;++i)
    33     {
    34         scanf("%d%d",&p[i].fi,&p[i].se);
    35     }
    36     p[++n].fi=0;p[n].se=0;
    37     p[++n].fi=L;p[n].se=W;
    38     p[++n].fi=0;p[n].se=W;
    39     p[++n].fi=L;p[n].se=0;
    40     sort(p+1,p+n+1,c1);
    41     for(i=1;i<=n;++i)
    42     {
    43         t1=0;t2=L;
    44         //printf("1t%d %d %d
    ",i,p[i].fi,p[i].se);
    45         for(j=i+1;j<=n&&p[j].se==p[i].se;++j);
    46         for(;j<=n;)
    47         {
    48             ans=max(ans,(t2-t1)*(p[j].se-p[i].se));
    49             //printf("at%d %d %d %d
    ",t2,t1,p[j].se,p[i].se);
    50             t=p[j].se;
    51             while(j<=n&&p[j].se==t)
    52             {
    53                 //t1=max(t1,p[j].fi);
    54                 //t2=min(t2,p[j].fi);
    55                 if(p[j].fi>p[i].fi)    t2=min(t2,p[j].fi);
    56                 else    t1=max(t1,p[j].fi);
    57                 ++j;
    58             }
    59             //printf("2t%d %d %d %d
    ",i,j,t1,t2);
    60         }
    61     }
    62     for(i=n;i>=1;--i)
    63     {
    64         t1=0;t2=L;
    65         for(j=i-1;j>=1&&p[j].se==p[i].se;--j);
    66         for(;j>=1;)
    67         {
    68             ans=max(ans,(t2-t1)*(p[j].se-p[i].se));
    69             //printf("bt%d %d %d %d
    ",t2,t1,p[j].se,p[i].se);
    70             t=p[j].se;
    71             while(j>=1&&p[j].se==t)
    72             {
    73                 if(p[j].fi>p[i].fi)    t2=min(t2,p[j].fi);
    74                 else    t1=max(t1,p[j].fi);
    75                 --j;
    76             }
    77         }
    78     }
    79     sort(p+1,p+n+1);
    80     for(i=2;i<=n;++i)
    81         ans=max(ans,W*(p[i].fi-p[i-1].fi));
    82     printf("%d",ans);
    83     return 0;
    84 }
    View Code
  • 相关阅读:
    关于Socket.IO
    关于js的执行与加载
    关于XSS
    关于浏览器的渲染过程
    关于高级前端的面试题
    关于js的设计模式(简单工厂模式,构造函数模式,原型模式,混合模式,动态模式)
    关于js的高级函数(惰性函数,函数柯里化,级联函数)
    关于map
    bzoj 2744: [HEOI2012]朋友圈 二分图匹配
    bzoj 3637: Query on a tree VI 树链剖分 && AC600
  • 原文地址:https://www.cnblogs.com/hehe54321/p/9858336.html
Copyright © 2011-2022 走看看