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.pswp.cn/bicheng/16483.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/16483.shtml
英文地址,請注明出處:http://en.pswp.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 格…