Codeforces:Dreamplay and Stars
2017-02-26 22:55
281 查看
[b]Codeforces:Dreamplay and Stars[/b]
题目链接:http://codeforces.com/group/gRkn7bDfsN/contest/212150/problem/C
题目大意:以(ax+by+c=0)形式给出n条线,问能形成多少个三角形。
组合数学
将同一斜率的直线划分为一组,每组的直线数为tot[i].
用num维护前i组的总直线数,num=num+tot[i].
若以两条斜率不同的直线为一对,times维护在前i组中所有直线对数,故times=times+num*tot[i].
ans维护前i组所有直线构造出的三角形数,故ans=ans+times*tot[i].
代码如下:
题目链接:http://codeforces.com/group/gRkn7bDfsN/contest/212150/problem/C
题目大意:以(ax+by+c=0)形式给出n条线,问能形成多少个三角形。
组合数学
将同一斜率的直线划分为一组,每组的直线数为tot[i].
用num维护前i组的总直线数,num=num+tot[i].
若以两条斜率不同的直线为一对,times维护在前i组中所有直线对数,故times=times+num*tot[i].
ans维护前i组所有直线构造出的三角形数,故ans=ans+times*tot[i].
代码如下:
#include <iostream> #include <map> #include <algorithm> #define mk(x,y) make_pair(x,y) using namespace std; typedef pair<int,int> P; map<P,int>mp; int tot[300005]; int gcd(int x,int y){ return y==0?x:gcd(y,x%y); } int main(void){ std::ios::sync_with_stdio(false); int n; cin>>n; for(int i=0;i<n;++i){ int x,y,z; cin>>x>>y>>z; if(x==0||y==0)mp[mk(x,y)]++; else{ int t=gcd(x,y); mp[mk(x/t,y/t)]++; } } long long ans=0,k=0,num=0,times=0; for(map<P,int>::iterator it=mp.begin();it!=mp.end();++it) tot[k++]=it->second; sort(tot,tot+k); for(int i=0;i<k;++i){ if(i>=2)ans+=times*tot[i]; times+=num*tot[i]; num+=tot[i]; } cout<<ans; }
相关文章推荐
- Codeforces:Dreamplay and LCM
- codeforces 302 B. Eugeny and Play List
- codeforces 538E E. Demiurges Play Again(博弈+树形dp)
- codeforces 302B - Eugeny and Play List
- codeforces 302B - Eugeny and Play List
- Codeforces 538E. Demiurges Play Again (树形DP)
- Dream-Build-Play 2009
- 【codeforces 235B】Let's Play Osu!
- 二分法入门(二)——POJ 3258,2976;HDU 4430;CodeForces 535C;Gym 101194D;ACdream 1066
- Codeforces 538 E. Demiurges Play Again
- Play 2D games on Nexus 6P running Android N7.1.1 with Daydream View VR headset
- Play 2D games on Pixel running Android Nougat (N7.1.2) with Daydream View VR headset
- 【codeforces 538E】Demiurges Play Again
- [翻译]公告: 实现游戏梦想2008(Dream-Build-Play 2008)
- codeforces 302 B. Eugeny and Play List
- Codeforces 427B Prison Transfer
- 自动化运维工具Ansible之Playbooks的when语句
- Codeforces 588B Duff in Love 【数学】
- codeforces基础题——#362(div2)D
- codeforces 746 C. Tram