码迷,mamicode.com
首页 > 其他好文 > 详细

CodeForces 589B-Layer Cake-暴力模拟

时间:2016-03-01 00:47:54      阅读:228      评论:0      收藏:0      [点我收藏+]

标签:

刚看到这个题的想法是建图搜路,写出来了才发现这个做法不行,不能把每一个矩形看成不可分的点,因为最终的矩形可能两条边出现在不同矩形里。

后来看了题解才明白直接暴力就行。关键是明白最终的矩形两条边都在所给矩形中出现。

 1 #include <cstdio>
 2 #include <algorithm>
 3 #include <cstring>
 4 
 5 using namespace std;
 6 
 7 typedef long long ll;
 8 const int INF = 0x3f3f3f3f;
 9 const int maxn = 4e3+10;
10 struct cake
11 {
12     int w,l;
13     cake(){}
14     bool operator < (const cake &b) const
15     {
16         return l > b.l;
17     }
18 }ck[maxn];
19 
20 int N,len[maxn];
21 
22 int main()
23 {
24     scanf("%d",&N);
25 
26     for(int i=0;i<N;i++)
27     {
28         scanf("%d%d",&ck[i].w,&ck[i].l);
29         if(ck[i].w > ck[i].l) swap(ck[i].w,ck[i].l);
30     }
31 
32     sort(ck,ck+N);
33 
34     int m;
35     int answ,ansl;
36     ll ans = -INF;
37 
38     for(int i=0;i<N;i++)
39     {
40         m = 0;
41         for(int j=0;j<N;j++)
42         {
43             if(ck[j].w >= ck[i].w)
44             {
45                 len[m++] = ck[j].l;
46             }
47         }
48         for(int j=0;j<m;j++)
49         {
50             ll res = (ll)ck[i].w*len[j]*(j+1);
51             if(res > ans)
52             {
53                 ans = res;
54                 answ = ck[i].w;
55                 ansl = len[j];
56             }
57         }
58     }
59     printf("%I64d\n%d %d\n",ans,answ,ansl);
60 
61 }

 

CodeForces 589B-Layer Cake-暴力模拟

标签:

原文地址:http://www.cnblogs.com/helica/p/5229277.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!