zoukankan      html  css  js  c++  java
  • [CF1468F] Full Turn

    [CF1468F] Full Turn

    Description

    (n) 个人在二维平面直角坐标系上,第 (i) 个人初始站在 ((x_i,y_i)),面向 ((u_i,v_i)),现在所有人以相同的速度顺时针旋转,直到他们旋转完正好 (360deg),我们认为两个人 (i,j) 进行了眼神接触仅当旋转的过程中有一个时刻满足 (i) 看向了 (j) 的同时 (j) 看向了 (i),求有多少对人会在旋转过程中进行至少一次眼神接触。

    Solution

    两个人能否进行眼神接触与位置无关,只取决于这两个人方向是否刚好相反

    所以说缘分是逃不掉的,……,就这样

    化简整数坐标表示的向量,然后塞进一个 map 里统计统计

    #include <bits/stdc++.h>
    using namespace std;
    
    #define int long long
    
    void solve()
    {
        int n;
        cin >> n;
        map<pair<int, int>, int> mp;
        for (int i = 1; i <= n; i++)
        {
            int x, y, xx, yy;
            cin >> x >> y >> xx >> yy;
            x = xx - x;
            y = yy - y;
            int g = __gcd(x, y);
            g = abs(g);
            if (x && g)
                x /= g;
            if (y && g)
                y /= g;
            mp[{x, y}]++;
        }
        int ans = 0;
        for (auto [pr, cnt] : mp)
        {
            auto [x, y] = pr;
            int tmp = mp[{-x, -y}];
            ans += tmp * cnt;
        }
        cout << ans / 2 << endl;
    }
    
    signed main()
    {
        ios::sync_with_stdio(false);
        int t;
        cin >> t;
        while (t--)
            solve();
    }
    
  • 相关阅读:
    数据库---多表查询练习
    数据库---权限管理
    数据库---表---多表查询
    数据库---数据---单表查询
    软件测试面试题(3)
    windows资源监控
    测试十大原则
    性能测试关心的结果
    软件测试面试题(2)
    软件测试面试题(1)
  • 原文地址:https://www.cnblogs.com/mollnn/p/14399029.html
Copyright © 2011-2022 走看看