牛客小白月赛5 E 面积 计算三角形面积模板 波尔约-格维也纳定理 匹克公式
生活随笔
收集整理的這篇文章主要介紹了
牛客小白月赛5 E 面积 计算三角形面积模板 波尔约-格维也纳定理 匹克公式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
鏈接:https://www.nowcoder.com/acm/contest/135/E
來源:牛客網
題目描述
? ? 定義“最大生成圖”:在M*N的點陣中,連接一些點形成一條經過所有點恰好一次的回路,且連成的多邊形各邊互不交叉。這樣形成的封閉圖形叫做這個點陣的“最大生成圖”,用表示。(PS:這個名字是出題人胡謅的,如有雷同純屬巧合,出題人不負法律責任)
顯然,任意一個點陣都有“最大生成圖”,并且有的點陣的“最大生成圖”不止一個。 如圖為3*3的矩陣的一個最大生成圖:? ? 給你一個M*N的點陣和一個三角形,問你是否可以通過若干次裁剪、拼接操作,使其某一個“最大生成圖”成為該三角形?如果可以,請輸出“Yes”(不含引號),否則請輸出“No”。
? ??在本題中,M*N的點陣內,相鄰兩點間的距離為1(上下相鄰和左右相鄰),為了簡便,給定三角形的兩個頂點,第三個頂點是原點。
? ? 由于Apojacsleam的計算幾何往往被精度卡飛,所以他痛恨精度錯誤,于是給定的數字都是整數。
輸入描述:
輸入數據有多組:每組輸入數據兩行,第一行兩個正整數M,N,第二行四個整數x1,y1,x2,y2,描述一個三角形數據不保證能夠形成三角形。
輸出描述:
對于每組輸入數據,輸出一行描述答案:“Yes”或“No” 示例1輸入
復制 2 2 2 0 2 1輸出
復制 Yes說明
樣例解釋:波爾約-格維也納定理:
任意兩個面積相等的多邊形,它們可以相互拼接得到
匹克公式:
AC代碼:
#include <map> #include <set> #include <stack> #include <cmath> #include <queue> #include <cstdio> #include <vector> #include <string> #include <bitset> #include <cstring> #include <iomanip> #include <iostream> #include <algorithm> #define ls (r<<1) #define rs (r<<1|1) #define debug(a) cout << #a << " " << a << endl using namespace std; typedef long long ll; const ll maxn = 1e6+10; const double eps = 1e-8; const ll mod = 1e9 + 7; const int inf = 0x3f3f3f3f; const double pi = acos(-1.0); struct point {double x, y; }; double cal( point a, point b, point c ) {return (b.x-a.x)*(c.y-a.y)-(c.x-a.x)*(b.y-a.y); } double cal_area( point a, point b, point c ) {return fabs(cal(a,b,c)/2); } int main() {ios::sync_with_stdio(0);point a, b, c;a.x = a.y = 0;ll n, m;while( cin >> n >> m ) {cin >> b.x >> b.y >> c.x >> c.y;double s1 = 1.0*n*m/2.0 - 1;double s2 = cal_area(a,b,c);if( s1 == s2 ) {cout << "Yes" << endl;} else {cout << "No" << endl;}}return 0; }
轉載于:https://www.cnblogs.com/l609929321/p/9529931.html
總結
以上是生活随笔為你收集整理的牛客小白月赛5 E 面积 计算三角形面积模板 波尔约-格维也纳定理 匹克公式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 国人主导研发的 HAWQ® 成 Apac
- 下一篇: 8月24日云栖精选夜读 | 阿里开源富容