uva1331三角剖分

題意:輸入一個簡單m(2<m<50)邊形,找到一個最大三角形最小的三角剖分(用不相交的對角線把一個多邊形分成若干個三角形)。輸出最大的三角形面積。

分析:每條對角線都是無序的,因此,給節點編號,從1到n-1,順時針方向,這樣多邊形的頂點都是有序的了,這樣就可劃分區間,類似區間dp來做。

#include<bits/stdc++.h>
using namespace std;const int maxn=55;
const double inf=0x3f3f3f3f;
const double eps=1e-9;
double d[maxn][maxn];
int n;struct point
{double x,y;void get(){scanf("%lf%lf",&x,&y);}
}p[maxn];double area(point a,point b,point c)
{return fabs((b.x-a.x)*(c.y-a.y)-(c.x-a.x)*(b.y-a.y))/2;
}bool judge(int a,int b,int c)
{double are=area(p[a],p[b],p[c]);for(int i=0;i<n;i++){if(i==a||i==b||i==c)continue;double tmp=area(p[a],p[b],p[i])+area(p[a],p[c],p[i])+area(p[b],p[c],p[i]);if(fabs(are-tmp)<eps)return false;}return true;
}double solve()
{for(int i=0;i<2;i++)for(int j=0;j<n;j++)d[j][(j+i)%n]=0;for(int i=0;i<n;i++)d[i][(i+2)%n]=area(p[i],p[(i+1)%n],p[(i+2)%n]);for(int k=3;k<n;k++){for(int i=0;i<n;i++){int en=(i+k)%n;d[i][en]=inf;for(int j=(i+1)%n;j!=en;j=(j+1)%n)if(judge(i,en,j))d[i][en]=min(d[i][en],max(max(d[i][j],d[j][en]),area(p[i],p[j],p[en])));}}double ans=inf;for(int i=0;i<n;i++)ans=min(ans,d[i][(i+n-1)%n]);return ans;
}int main()
{int t;cin>>t;while(t--){cin>>n;for(int i=0;i<n;i++)p[i].get();printf("%.1lf\n",solve());}return 0;
}

?

轉載于:https://www.cnblogs.com/mu-ye/p/5687139.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/256774.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/256774.shtml
英文地址,請注明出處:http://en.pswp.cn/news/256774.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Halcon算子翻譯——default

名稱 default - switch段中的備用分支。 用法 default( : : : ) 描述 default在switch段中開放備用分支。 如果switch語句的控制表達式的計算結果不匹配前面的case語句的任何整數常量&#xff0c;則訪問該分支。 結果 default&#xff08;作為算子&#xff09;總是返回2&#x…

現代制造工程筆記01:課程安排

電子教材&#xff1a;http://www.bookask.com/read/4588.html

(轉).gitignore詳解

本文轉自http://sentsin.com/web/666.html 今天講講Git中非常重要的一個文件——.gitignore。 首先要強調一點&#xff0c;這個文件的完整文件名就是“.gitignore”&#xff0c;注意最前面有個“.”。這樣沒有擴展名的文件在Windows下不太好創建&#xff0c;這里給出win7的創建…

Effective Java 英文 第二版 讀書筆記 Item 14:In public classes,use accessor methods,not public fields...

本章主要分析 公開屬性與私有屬性提供公開get、set方法兩種方式對比 // Degenerate classes like this should not be public! class Point { public double x; public double y; } // Public class with exposed immutable fields - questionable public final class Time { …

22個值得收藏的android開源碼-UI篇

本文介紹了android開發人員中比較熱門的開源碼&#xff0c;這些代碼絕大多數能夠直接應用到項目中。FileBrowserView 一個強大的文件選擇控件。界面比較美麗&#xff0c;使用也非常easy。 特點&#xff1a;能夠自己定義UI&#xff1b;支持復制、剪切、刪除、移動文件&#xff1…

現代制造工程02:第一部分——刀具(含2個易考點)

一、金屬切削原理 可以看出哪些性能參數是同向性得&#xff0c;并且知道性能參數與三要素有什么關系 易考點&#xff1a;三個變形區 易考點&#xff1a;磨損種類以及磨損階段、磨頓標準

Fortran向C傳遞NULL值

在很多C或C的頭文件定義中&#xff0c;NULL被指定定義為0&#xff0c;這里不再具體展開 gfortran的手冊關于iso c binding的章節&#xff0c;定義NULL如下 Moreover, the following two named constants are defined: NameType C_NULL_PTRC_PTRC_NULL_FUNPTRC_FUNPTRBoth are e…

視覺slam重點知識筆記

1、除了基本矩陣和本質矩陣&#xff0c;我們還有一種稱為單應矩陣&#xff08;Homography&#xff09;H 的東西&#xff0c;它 描述了兩個平面之間的映射關系。若場景中的特征點都落在同一平面上&#xff08;比如墻&#xff0c;地面等&#xff09;&#xff0c;則可以通過單應性…

iOS開發之share第三方登錄以及分享

&#xff08;1&#xff09;官方下載ShareSDK iOS 2.8.8&#xff0c;地址&#xff1a;http://sharesdk.cn/ &#xff08;2&#xff09;根據實際情況&#xff0c;引入相關的庫&#xff0c;參考官方文檔。 &#xff08;3&#xff09;在項目的AppDelegate中一般情況下有三個操作&am…

Linux磁盤的劃分

磁盤的組成&#xff1a; 磁道&#xff1a;track 扇區&#xff1a;sector (512字節) 磁頭&#xff1a;head 柱面&#xff1a;cylinder MBR/msdos 分區模式 1--4個主分區&#xff0c;或者0--3個主分區加1個擴展分區&#xff08;n個邏輯分區&#xff09; 最大支持容量為2.2TB的磁…

opencv的pnp()算法接口是相對于3D點,輸出的是相機與3D點之間的R和T

1、情況一&#xff1a; 兩幀圖像 -》 提取特征-》特征匹配-》通過2d-2d計算 F基礎矩陣、E 本質矩陣 、H 單一性矩陣 -》解析出 相機自身的運動R和T -》再通過三角化&#xff0c;將2d點轉為相機的3d點&#xff08;每個空間點在兩個相機坐標系下的投影3D坐標與像素2D坐標&#…

有限元課堂筆記03:鋼架(Frame)

1.平面鋼架(Frame)&#xff1a;是桁架(Truss)和梁(Beam)的合成&#xff0c;兩節點六自由度 2.空間鋼架&#xff1a;兩節點12自由度 相對于平面鋼架來說每一個節點增加了z軸線性變形、繞x軸扭矩&#xff0c;繞y軸扭矩 剛度矩陣

關于系統性能檢測的一些使用

1.安裝sysstat&#xff1a;yum install sysstat---------- iostat -x 1 10 如果 %util 接近 100%&#xff0c;說明產生的I/O請求太多&#xff0c;I/O系統已經滿負荷&#xff0c;該磁盤可能存在瓶頸。 idle小于70% IO壓力就較大了,一般讀取速度有較多的wait. 2.如果想對硬盤…

Python tab 補全

1. 先準備一個tab.py的腳本 shell> cat tab.py 12345678910111213141516171819#!/usr/bin/python# python tab fileimport sys import readline import rlcompleter import atexit import os # tab completionreadline.parse_and_bind(tab: complete) # history filehistfil…

Docker新手入門:基本用法

Docker新手入門&#xff1a;基本用法 1.Docker簡介 1.1 第一本Docker書 工作中不斷碰到Docker&#xff0c;今天終于算是正式開始學習了。在挑選系統學習Docker以及虛擬化技術的書籍時還碰到了不少麻煩&#xff0c;主要就是沒有特別經典的書&#xff01;Docker的《第一版Docker書…

有限元筆記04:二維實體單元

1.二維實體即平面問題 創建單元的步驟&#xff1a; 型函數&#xff08;插值函數&#xff09;>>>應變矩陣>>>剛度矩陣>>>質量矩陣>>>力的分量 1&#xff09;三角形單元 2&#xff09;面坐標 3&#xff09;線性矩形單元 4)高斯積分 6)任意…

oracle中的常用函數

一、運算符算術運算符&#xff1a; - * / 可以在select 語句中使用連接運算符&#xff1a;|| select deptno|| dname from dept; 比較運算符&#xff1a;> > ! < < like between is null in邏輯運算符&#xff1a;not and or 集合運算符&#xff1a; 集合操作不適…

SLAM后端優化之-核函數

1、核函數作用&#xff1a;保證每條邊的誤差不會大的沒邊&#xff0c;掩蓋掉其他的邊 在SLAM后端優化中&#xff0c;BA優化了所有的相機姿態和所有路標點&#xff0c;使用的最小化誤差項作的二范數平方和作為目標函數&#xff1b;當我們的誤差來源特別大的時候&#xff1b;BA優…

線程與內核對象的同步-2

等待定時器內核事件 CreateWaitableTimer( PSECURITY_ATTRIBUTES psa, BOOL fManualReset, PCTSTR pszName); 進程可以獲得它自己的與進程相關的現有等待定時器的句柄。 HANDLE OpenWaitableTimer( DWORD dwDesiredAccess, BOOL bInheritHandle, PCTSTR pszName); 等待定時器對…