2017 Multi-University Training Contest - Team 7 hard challenge
2017-08-16 19:21
393 查看
比赛的时候没有主攻这道题,其实这个题目的关键是那个 l * r 大家都没想出来,遗憾。
角度排序,枚举角度即可。这里利用对称性进行了代码优化。
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<vector>
#include<cmath>
#include<cstdlib>
using namespace std;
typedef struct node
{
double ang;
int x,y,val;
bool operator <(const node t) const
{
return ang<t.ang;
}
}node;
vector<node> se;
int main()
{
freopen("fuck.txt","r",stdin);
int T,n;
scanf("%d",&T);
for(int Case=1;Case<=T;Case++)
{
se.clear();
scanf("%d",&n);
long long l=0,r=0,ans=0;
for(int i=1;i<=n;i++)
{
int a,b,c;
node te;
scanf("%d%d%d",&a,&b,&c);
te.x=a;
te.y=b;
te.ang=atan(double(b)/a);
te.val=c;
se.push_back(te);
}
sort(se.begin(),se.end());
for(int i=0;i<se.size();i++)
{
if(se[i].x>=0) r+=se[i].val;
else l+=se[i].val;
}
ans=l*r;
for(int i=0;i<se.size();i++)
{
if(se[i].x>=0)
{
r-=se[i].val;
l+=se[i].val;
}
else
{
l-=se[i].val;
r+=se[i].val;
}
ans=max(ans,l*r);
}
printf("%lld\n",ans);
}
return 0;
}
角度排序,枚举角度即可。这里利用对称性进行了代码优化。
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<vector>
#include<cmath>
#include<cstdlib>
using namespace std;
typedef struct node
{
double ang;
int x,y,val;
bool operator <(const node t) const
{
return ang<t.ang;
}
}node;
vector<node> se;
int main()
{
freopen("fuck.txt","r",stdin);
int T,n;
scanf("%d",&T);
for(int Case=1;Case<=T;Case++)
{
se.clear();
scanf("%d",&n);
long long l=0,r=0,ans=0;
for(int i=1;i<=n;i++)
{
int a,b,c;
node te;
scanf("%d%d%d",&a,&b,&c);
te.x=a;
te.y=b;
te.ang=atan(double(b)/a);
te.val=c;
se.push_back(te);
}
sort(se.begin(),se.end());
for(int i=0;i<se.size();i++)
{
if(se[i].x>=0) r+=se[i].val;
else l+=se[i].val;
}
ans=l*r;
for(int i=0;i<se.size();i++)
{
if(se[i].x>=0)
{
r-=se[i].val;
l+=se[i].val;
}
else
{
l-=se[i].val;
r+=se[i].val;
}
ans=max(ans,l*r);
}
printf("%lld\n",ans);
}
return 0;
}
相关文章推荐
- 2017 Multi-University Training Contest - Team 7:1008. Hard challenge(模拟)
- 2017 Multi-University Training Contest - Team 7 :1008&hdu6127、Hard challenge
- 2017 Multi-University Training Contest - Team 7 Hard challenge
- 【2017 Multi-University Training Contest - Team 7】Hard challenge
- HDU 6127 Hard challenge(思维+计算几何)——2017 Multi-University Training Contest - Team 7
- 2017 Multi-University Training Contest - Team 9
- HDU-6166 Senior Pan - 2017 Multi-University Training Contest - Team 9(最短路+二进制乱搞)
- 2017 Multi-University Training Contest - Team 1 1006 Function(思维 循环节)
- hdu 6034 Balala Power!(贪心)( 2017 Multi-University Training Contest - Team 1 )(无耻之sort)
- 2017 Multi-University Training Contest - Team 1(hdu 6043 KazaQ's Socks)
- hdu 6047 Maximum Sequence(2017 Multi-University Training Contest - Team 2)
- hdu 6045 Is Derek lying?(2017 Multi-University Training Contest - Team 2)
- hdu 6055 Regular polygon(判断正方形)(2017 Multi-University Training Contest - Team 2)
- 2017 Multi-University Training Contest - Team 2 && HDU6047
- 2017 Multi-University Training Contest - Team 1 HDU 6033 Add More Zero【对数】
- 【2017 Multi-University Training Contest - Team 5】Rikka with Competition
- 2017 Multi-University Training Contest - Team 3 1011 RXD's date
- hdu 6058 Kanade's sum(链表)(2017 Multi-University Training Contest - Team 3 )
- 2017 Multi-University Training Contest - Team 3 1003 Kanade's sum
- hdu 6069 Counting Divisors(约数个数)(2017 Multi-University Training Contest - Team 4 )