wenbao与极角排序

Posted wenbao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了wenbao与极角排序相关的知识,希望对你有一定的参考价值。

atan2     (-180----180]

 

http://acm.hdu.edu.cn/showproblem.php?pid=6127

 

 1 #include <iostream>
 2 #include <cmath>
 3 #include <algorithm>
 4 using namespace std;
 5 #define ll long long
 6 const int maxn = 5e4+10;
 7 #define PI acos(-1.0)
 8 int t, n, w;
 9 ll sum;
10 double x, y;
11 struct Node{
12     ll w;
13     double c;
14 }T[maxn];
15 bool cmp(Node a, Node b){
16     return a.c > b.c;
17 }
18 int main(){
19     scanf("%d", &t);
20     while(t--){
21         sum = 0;
22         scanf("%d", &n);
23         for(int i = 0; i < n; ++i){
24             scanf("%lf%lf%lld", &x, &y, &T[i].w), T[i].c = atan2(y, x), sum += T[i].w;
25         }
26         sort(T, T+n, cmp);
27         int xx = 0;
28         ll sum2 = 0;
29         while(T[xx].c >= 0 && xx < n) sum2 += T[xx].w, xx++;
30         ll ma = 0;
31         int i = 0;
32         while(T[i].c >= 0){
33             if(PI - T[i].c > -T[xx].c && xx < n){
34                 sum2 += T[xx].w, xx++;
35                 ma = max(ma, sum2*(sum-sum2));
36             }else{
37                 sum2 -= T[i].w, i++;
38                 ma = max(ma, sum2*(sum-sum2));
39             }
40         }
41         printf("%lld\n", ma);
42     }
43     return 0;
44 }

 

 

 

 

 

 

 

只有不断学习才能进步!

 

以上是关于wenbao与极角排序的主要内容,如果未能解决你的问题,请参考以下文章

poj1696(极角排序,贪心)

wenbao与拓扑排序

极角排序

极角排序详解

poj2007(极角排序)

极角排序常用方法