Codeforces 975D Ghosts 【math】

打了两次cf里的比赛,发现cf比较喜欢考数学题。一开始看到这道题没有思路,因为总想dp,图论,贪心这些东西。如果下次再没有思路,可以从数学的角度入手。

题解说的比较清楚:

 1 #include<iostream>
 2 #include<map>
 3 #define ll long long
 4 #define MAXN 200000
 5 using namespace std;
 6 
 7 ll n,a,b,ans,parallel;
 8 map<long long,int> m;
 9 map< pair<int,int>,int> p;
10 int main(){
11     cin>>n>>a>>b;
12     for(int i=1;i<=n;i++){
13         int x,Vx,Vy; scanf("%d%d%d",&x,&Vx,&Vy);
14         //每个维护出来a*Vx-Vy
15         ll key = a*Vx-Vy;
16         ans+=m[key];//相同key的能collide 
17         m[a*Vx-Vy]++;
18         parallel+=p[ make_pair(Vx,Vy) ];
19         p[  make_pair(Vx,Vy)  ]++;
20     }
21     cout<<(ans-parallel)*2;
22     
23     return 0; 
24 }

猜你喜欢

转载自www.cnblogs.com/ZhenghangHu/p/8982277.html