打卡信奥刷题(3342)用C++实现信奥题 P9423 [蓝桥杯 2023 国 B] 数三角 P9423 [蓝桥杯 2023 国 B] 数三角题目描述小明在二维坐标系中放置了nnn个点他想在其中选出一个包含三个点的子集这三个点能组成三角形。然而这样的方案太多了他决定只选择那些可以组成等腰三角形的方案。请帮他计算出一共有多少种选法可以组成等腰三角形输入格式输入共n1n 1n1行。第一行为一个正整数nnn。后面nnn行每行两个整数xi,yix_i, y_ixi​,yi​表示第iii个点的坐标。输出格式输出共111行一个整数。输入输出样例 #1输入 #15 1 4 1 0 2 1 1 2 0 1输出 #15说明/提示样例说明一共有555种选法{2,3,4}\{2,3,4\}{2,3,4}、{3,4,5}\{3,4,5\}{3,4,5}、{4,5,2}\{4,5,2\}{4,5,2}、{5,2,3}\{5,2,3\}{5,2,3}、{1,3,5}\{1,3,5\}{1,3,5}。评测用例规模与约定对于20%20\%20%的数据保证n≤200n \le 200n≤200。对于100%100\%100%的数据保证n≤2000n \le 2000n≤20000≤xi,yi≤1090 \le x_i, y_i \le 10^90≤xi​,yi​≤109。第十四届蓝桥杯大赛软件赛决赛 C/C 大学 B 组 E 题C实现#includeiostream#includealgorithm#includevector#includeset#includeutility#includemapusinglllonglongint;usingpiistd::pairint,int;constintMAXN2e310;intn,ans;std::mapll,intdist;std::mappii,intmp;pii node[MAXN];llgetdist(inta,intb){intx1node[a].first,y1node[a].second,x2node[b].first,y2node[b].second;return1ll*(x2-x1)*(x2-x1)1ll*(y2-y1)*(y2-y1);}piigetmid(pii a,pii b){if((a.firstb.first1)||(a.secondb.second1))return{-1,-1};elsereturn{a.firstb.first1,a.secondb.second1};}llC(intn,intm){// it seems that m cannot be greater than 2.if(m1)returnn;elseif(m2)returnn*(n-1)/2;}intmain(){std::cinn;for(inti1;in;i){std::cinnode[i].firstnode[i].second;mp[node[i]];}for(inti1;in;i){dist.clear();for(intj1;jn;j){if(ij)continue;dist[getdist(i,j)];}for(auto[d,cnt]:dist)ansC(cnt,2);}for(inti1;in;i){for(intji1;jn;j)ans-mp[getmid(node[i],node[j])];}std::coutans;return0;}后续接下来我会不断用C来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现记录日常的编程生活、比赛心得感兴趣的请关注我后续将继续分享相关内容