21.10.17模拟 桥牌

n个朋友的位置用(xi,yi)表示。他们想凑成4人一组玩桥牌,但组成4个人的队伍的前提是:这4个人关于某一点对称,即任何一个人关于对称点旋转180度得到的位置是另外一个人所在的位置。
计算满足条件的四人组合有几种。

用map计算即可,但是考试的时候sb了,计数计错了

namespace solve {
	std::map<std::pair<int, int> , int >mp;
	int main() {
		rep(i, 1, n) {
			rep(j, i + 1, n) {
				int x = 1.0 * (a[i].x + a[j].x) ;
				int y = 1.0 * (a[i].y + a[j].y) ;
				++mp[std::make_pair(x,y)];
			}
		}
		
		ans=0;
        auto it=mp.begin();
        for(;it!=mp.end();++it){
        	int t=(it->second);
        	ans+=1ll*(t)*(t-1)/2;
		}
		out(ans,'
');
	}
}

本文来自博客园,作者:{2519},转载请注明原文链接:https://www.cnblogs.com/QQ2519/p/15419227.html

原文地址:https://www.cnblogs.com/QQ2519/p/15419227.html