2024东北四省赛——M House

cf上有题解,我写这个只想说真服了,卡double了导致一直没做出来

开long double过的


贴一下我的代码

#include <bits/stdc++.h>using namespace std;
typedef long double LD;
typedef long long LL;
#define int LL
#define double LD
const int N = 5007, M = 50007, INF = 0x3f3f3f3f;
const double DINF = 1e18, eps = 1e-10;
const double PI = acosl(-1.0l);struct Point {//二维点double x, y;Point(double x = 0, double y = 0) : x(x), y(y) {}//构造函数
};typedef Point Vector;//向量 + 向量 = 向量,点 + 向量 = 向量
Vector operator+(Vector A, Vector B) { return Vector(A.x + B.x, A.y + B.y); }//点 - 点 = 向量(向量BC = C - B)
Vector operator-(Point A, Point B) { return Vector(A.x - B.x, A.y - B.y); }//向量 * 数 = 向量
Vector operator*(Vector A, double p) { return Vector(A.x * p, A.y * p); }//向量 / 数= 向量
Vector operator/(Vector A, double p) { return Vector(A.x / p, A.y / p); }//点/向量的比较函数
bool operator<(const Point& a, const Point& b) { return a.x < b.x || (a.x == b.x && a.y < b.y); }struct Line {//直线定义Vector v;Point p;Line() {}Line(Vector v, Point p) : v(v), p(p) {}Point get_point_in_line(double t) {//返回直线上一点P = p + v * treturn p + v * t;}
};//判断相等
int sgn(double x) {//也是dcmpif (fabsl(x) < eps)return 0;if (x < 0)return -1;return 1;
}//重载等于运算符
bool operator==(const Point& a, const Point& b) { return !sgn(a.x - b.x) && !sgn(a.y - b.y); }//点积(满足交换律)
double Dot(Vector A, Vector B) { return A.x * B.x + A.y * B.y; }//向量的叉积(不满足交换律)
double Cross(Vector A, Vector B) { return A.x * B.y - B.x * A.y; }//计算两点距离距离
double dis(Vector a, Vector b) {return sqrtl((a.x - b.x) * (a.x - b.x) * 1.0 + (a.y - b.y) * (a.y - b.y));
}//取模(模长,求长度)
double Length(Vector A) { return sqrtl(Dot(A, A)); }int Relation(Point A, Point B, Point C) {// 1 left -1 right 0 inint c = sgn(Cross((B - A), (C - A)));if (c < 0) return 1;else if (c > 0) return -1;return 0;
}inline Point FootPoint(Point p, Point a, Point b) {Vector x = p - a, y = p - b, z = b - a;double len1 = Dot(x, z) / Length(z), len2 = -1.0 * Dot(y, z) / Length(z);//分别计算AP,BP在AB,BA上的投影return a + z * (len1 / (len1 + len2));//点A加上向量AF
}int n;
Point p[N];
map<pair<double, double>, int> mp;
int ans = 0;signed main() {scanf("%lld", &n);for (int i = 1; i <= n; i++) {scanf("%Lf %Lf", &p[i].x, &p[i].y);}for (int i = 1; i <= n; i++) {for (int j = 1; j <= n; j++) {mp.clear();if (i == j) continue;int l = 0, r = 0;//Line L = Line(p[i] - p[j], p[i]);for (int k = 1; k <= n; k++) {if (k == i || k == j) continue;int t = Relation(p[i], p[j], p[k]);if (t == 0) continue;else if (t == 1) {double t1, t2;t1 = dis(p[i], p[k]);t2 = dis(p[j], p[k]);
//                    cout<<t1<<" "<<t2<<endl;if (t1 == t2) {l++;}}else {if (Dot(p[i] - p[j], p[k] - p[i]) == 0 || Dot(p[i] - p[j], p[k] - p[j]) == 0) {double t1, t2;t1 = dis(p[i], p[k]);t2 = dis(p[j], p[k]);if (mp.count({ t2, t1 })) {mp[{t2, t1}] = 0;r++;}else { mp[{t1, t2}] = 1; }}}}
//                        cout<<l<<" "<<r<<" "<<i<<" "<<j<<endl;ans += l * r;}}printf("%lld\n", ans);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/16483.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【蓝桥杯】国赛普及-

题目列表 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) P9420 [蓝桥杯 2023 国 B] 子 2023 / 双子数 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) #include<bits/stdc.h> using llunsigned long long; #define int ll const int N2e510; int k0; std::string s; int…

【传知代码】无监督动画中关节动画的运动表示-论文复现

文章目录 概述动画技术的演进原理介绍核心逻辑环境配置/部署方式小结 本文涉及的源码可从无监督动画中关节动画的运动表示该文章下方附件获取 概述 该文探讨了动画在教育和娱乐中的作用&#xff0c;以及通过数据驱动方法简化动画制作的尝试。近期研究通过无监督运动转移减少对…

Java进阶学习笔记30——BigDecimal

BigDecimal&#xff1a; 用于解决浮点型运算的&#xff0c;出现结果失真的问题。 运行结果&#xff1a; package cn.ensource.d4_bigdecimal;import java.math.BigDecimal;public class Test {public static void main(String[] args) {// 目标&#xff1a;了解BigDecimal类do…

RustGUI学习(iced/iced_aw)之扩展小部件(二十七):如何使用number_input部件?

前言 本专栏是学习Rust的GUI库iced的合集,将介绍iced涉及的各个小部件分别介绍,最后会汇总为一个总的程序。 iced是RustGUI中比较强大的一个,目前处于发展中(即版本可能会改变),本专栏基于版本0.12.1. 概述 这是本专栏的第二十七篇,主要讲述number_input部件的使用,会…

8、Qt—Log4Qt使用小记2(每日产生文件)

前言&#xff1a; 开发平台&#xff1a;Win10 64位 开发环境&#xff1a;Qt Creator 13.0.0 构建环境&#xff1a;Qt 5.15.2 MSVC2019 64位 例如&#xff1a;上一篇文章中笔者记录了Log4qt的编译及配置使用&#xff0c;这篇文章重点写下每天产生文件到指定文件夹中&#xff0c;…

5.1 Go 函数的定义与调用

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

Spring Boot集成testcontainers快速入门Demo

1.什么是testcontainers&#xff1f; Testcontainers 是一个用于创建临时 Docker 容器进行单元测试的 Java 库。当我们想要避免使用实际服务器进行测试时&#xff0c;它非常有用。&#xff0c;官网介绍称支持50多种组件。​ 应用场景 数据访问层集成测试&#xff1a; 使用My…

ubuntu20安装Labelme

conda create --namelabelme python3 进入conda环境 source activate labelme 安装labelme pip install labelme 遇到网络问题 使用清华源 pip install labelme -i https://pypi.tuna.tsinghua.edu.cn/simple/ 输入labelme 打开

Google的MLP-MIXer的复现(pytorch实现)

Google的MLP-MIXer的复现&#xff08;pytorch实现&#xff09; 该模型原论文实现用的jax框架实现&#xff0c;先贴出原论文的代码实现&#xff1a; # Copyright 2024 Google LLC. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may …

GEC210编译环境搭建

一、下载编译工具链 下载&#xff1a;点击跳转 二、解压到 /usr/local/arm 目录 sudo mv gec210.zip /usr/local/arm cd /usr/local/arm sudo unzip gec210.zip 三、添加到环境变量 PATH/usr/local/arm/arm-cortex_a8-linux-gnueabi-4.7.3/bin:$PATH 四、测试验证 在终端…

python数据分析-基于数据挖掘对APP评分的预测

前言 当我们谈论关于APP用户分析与电子商务之间的联系时&#xff0c;机器学习在这两个领域的应用变得至关重要。App用户分析和电子商务之间存在着密切的关联&#xff0c;因为用户行为和偏好的深入理解对于提高用户体验、增加销售以及优化产品功能至关重要。故本文基于K-近邻模…

OFDM 802.11a的FPGA实现(二十)使用AXI-Stream FIFO进行跨时钟(含代码)

目录 1.前言 2.AXI-Stream FIFO时序 3.AXI-Stream FIFO配置信息 4.时钟控制模块MMCM 5.ModelSim仿真 6.总结 1.前言 至此&#xff0c;通过前面的文章讲解&#xff0c;对于OFDM 802.11a的发射基带的一个完整的PPDU帧的所有处理已经全部完成&#xff0c;其结构如下图所示&…

opencv-C++ VS2019配置安装

最新opencv-c安装及配置教程(VS2019 C & opencv4.4.0)_c opencv配置-CSDN博客

夜雨触花感怀

夜雨触花感怀 雨落有轨迹&#xff0c;业成无坦途。 ​鸡毛飞虚空&#xff0c;寻德问心路。 ​恰如求耕耘&#xff0c;大话量寸土。 ​好吃品五味&#xff0c;难得评真俗。

CAN总线简介

1. CAN总线概述 1.1 CAN定义与历史背景 CAN&#xff0c;全称为Controller Area Network&#xff0c;是一种基于消息广播的串行通信协议。它最初由德国Bosch公司在1983年为汽车行业开发&#xff0c;目的是实现汽车内部电子控制单元&#xff08;ECUs&#xff09;之间的可靠通信。…

用Vuex存储可配置下载的ip地址(用XML进行ajax请求配置文件)

1.在public文件夹下创建一个名为Configuration的文件在创建一个Configuration.txt里面就放IP地址&#xff08;这里的名字可以随便命名一定性的被人解读文件含义&#xff09; 例如&#xff1a; http://172.171.208.1:80032.在store文件夹中创建一个名为 ajaxModule.js 的 Vuex …

2. CSS选择器与伪类

2.1 基本选择器回顾 在开始介绍CSS3选择器之前&#xff0c;我们先回顾一下CSS的基本选择器。这些选择器是所有CSS开发的基础。 2.1.1 元素选择器 元素选择器用于选中指定类型的HTML元素。 /* 选中所有的<p>元素 */ p {color: blue; }2.1.2 类选择器 类选择器用于选中…

03自动辅助导航驾驶NOP其实就是NOA

蔚来NOP是什么意思&#xff1f;蔚来NOP是啥 蔚来NOP的意思就是NavigateonPilot智能辅助导航驾驶&#xff0c;也就是大家俗称的高阶辅助驾驶&#xff0c;在车主设定好导航路线&#xff0c;并且符合开启NOP条件的前提下&#xff0c;蔚来NOP可以代替驾驶员完成从A点到B点的智能辅助…

深入理解数仓开发(二)数据技术篇之数据同步

1、数据同步 数据同步我们之前在数仓当中使用了多种工具&#xff0c;比如使用 Flume 将日志文件从服务器采集到 Kafka&#xff0c;再通过 Flume 将 Kafka 中的数据采集到 HDFS。使用 MaxWell 实时监听 MySQL 的 binlog 日志&#xff0c;并将采集到的变更日志&#xff08;json 格…