ZOJ-3537

題目大意:給你一個n (n<=300) 邊形,給出它所有的頂點坐標,讓你把它劃分成n-2個三角形的花費最小值,頂點 a 和 b 相連的花費為

abs(a.x+b.x)*abs(a.y+b.y)。 如果是凹多邊形輸出無解。

?

思路:先跑個凸包判斷是不是凸多邊形,跑完之后點的順序是逆時針的,我們考慮區間dp,dp[ i ][ j ]表示,從頂點 i 沿多邊形的邊逆時針跑到

頂點 j 所形成的折線和 直線i->j,所圍成的多邊形分割成小三角形所需要的花費。

狀態轉移方程: dp[ i ][ j ]=min(dp[ i ][ j ] , dp[ i ][ k ]+dp[ k ][ j ]+cost[ i ][ k ]+cost[ k ][ j ]); 如果j-i<=2 顯然花費為0,所以答案微dp[ 0 ][ n-1]。

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 const int N=305;
 4 const int inf=0x3f3f3f3f;
 5 int n,tot,dp[N][N],cost[N][N],mod;
 6 struct point
 7 {
 8     int x,y;
 9     point(int _x=0,int _y=0){x=_x; y=_y;}
10     point operator -(const point &rhs)const
11     {
12         return point(x-rhs.x,y-rhs.y);
13     }
14 }p[N],cp[N];
15 typedef point vec;
16 int cross(const vec &a,const vec &b)
17 {
18     return (a.x*b.y)-(a.y*b.x);
19 }
20 int dis(point a,point b)
21 {
22     return (a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y);
23 }
24 bool cmp(const point &a,const point &b)
25 {
26     int z=cross(a-p[0],b-p[0]);
27     if(z>0||(z==0 && dis(p[0],a)<dis(p[0],b)))
28         return 1;
29     else return 0;
30 }
31 void get_cp()
32 {
33     int k=0; tot=0;
34     for(int i=0;i<n;i++)
35         if(p[i].y<p[k].y || p[i].y==p[k].y && p[i].x<p[k].x) k=i;
36     swap(p[0],p[k]);
37     sort(p+1,p+n,cmp);
38     tot=2,cp[0]=p[0];cp[1]=p[1];
39     for(int i=2;i<n;i++)
40     {
41         while(tot>1 && cross(cp[tot-2]-cp[tot-1],p[i]-cp[tot-1])>0) tot--;
42         cp[tot++]=p[i];
43     }
44 }
45 void init()
46 {
47     memset(dp,-1,sizeof(dp));
48     memset(cost,0,sizeof(cost));
49 }
50 int solve(int l,int r)
51 {
52     if(dp[l][r]!=-1) return dp[l][r];
53     if(r-l<=2) return 0;
54     dp[l][r]=inf;
55     for(int k=l+1;k<=r-1;k++)
56         dp[l][r]=min(solve(l,k)+solve(k,r)+cost[l][k]+cost[k][r],dp[l][r]);
57     return dp[l][r];
58 }
59 int main()
60 {
61     while(scanf("%d%d",&n,&mod)!=EOF)
62     {
63         for(int i=0;i<n;i++) scanf("%d%d",&p[i].x,&p[i].y);
64         get_cp();
65         if(tot<n)
66         {
67             puts("I can't cut.");
68             continue;
69         }
70         init();
71         for(int i=0;i<n;i++)
72             for(int j=i+2;j<n;j++)
73                 cost[i][j]=cost[j][i]=abs(cp[i].x+cp[j].x)*abs(cp[i].y+cp[j].y)%mod;
74 
75         printf("%d\n",solve(0,n-1));
76     }
77 
78     return 0;
79 }

?

轉載于:https://www.cnblogs.com/CJLHY/p/8351294.html

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

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

相關文章

你會等待還是離開(大理)---寫的一個推文

你會等待還是離開 -----出發和遇見大理 上關花鬧 下關風薰 蒼山雪寂 洱海月遲 但聞肆季弦雀起 才吹小雨又需晴 現實很調皮&#xff0c;很容易就讓人沒有力氣&#xff0c;就像變與不變&#xff0c;并不復雜&#xff0c;也不遙遠&#xff0c;一個寒假的距離&#xff0c;一句話的力…

sudo rosdep init ERROR: cannot download default sources list from: https://raw.githubusercontent.com

安裝上ros無法進行rosdep init.解決方法如下&#xff1a;https://zhuanlan.zhihu.com/p/77483614 因此&#xff0c;在/usr/lib/python2.7/dist-packages/rosdep2/sources_list.py中頂部直接插入兩行代碼取消SSL驗證 import ssl ssl._create_default_https_context ssl._crea…

YodaOS: 一個屬于 Node.js 社區的操作系統

開發四年只會寫業務代碼&#xff0c;分布式高并發都不會還做程序員&#xff1f; >>> 大家好&#xff0c;很開心在這里宣布 YodaOS開源了。他將承載 Rokid 4年以來對于人工智能和語音交互領域的沉淀&#xff0c;并選擇 Node.js 作為操作系統的一等開發公民&#xff0…

Android頂部粘至視圖具體解釋

不知從某某時間開始&#xff0c;這樣的效果開始在UI設計中流行起來了。讓我們先來看看效果&#xff1a;大家在支付寶、美團等非常多App中都有使用。要實現這個效果&#xff0c;我們能夠來分析下思路&#xff1a;我們肯定要用2個一樣的布局來顯示我們的粘至布局。一個是正常的、…

在實際項目開發中keil的調試方法

轉載2015-06-14 20:23:04 一.在keilc的調試狀態下&#xff0c;如何觀察各個片內外設的運行狀態&#xff1f;如何修改它們的設置&#xff1f;? 在調試狀態下&#xff0c;點擊Peripherals菜單下的不同外設選項命令&#xff0c;就會顯示或隱藏對應外設的觀察窗口。 在程序運行時&…

slam 常用數據集的幀率

1. kitti數據集的幀率約約為10fps,圖像分辨率為1241x376 2. Euroc數據集的幀率約為20fps,圖像分辨率為752x480 3.TUM數據集的幀率約為30fps, 圖像分辨率為640x360 zed相機獲取的HD圖像的分辨率為1280x720p,獲取的VGA圖像分辨率為672x376,mynt相機獲取的VGA圖像的分辨率為640x…

小李飛刀:用python刷題ing....

叨逼叨 默認每天都要刷兩道題。今天目標已完成。 第一題 26. 刪除排序數組中的重復項難度&#xff1a;簡單類型&#xff1a;數組 給定一個排序數組&#xff0c;你需要在原地刪除重復出現的元素&#xff0c;使得每個元素只出現一次&#xff0c;返回移除后數組的新長度。不要使用…

【Log4J】

學習mybatis中用到了Log4J 在此記錄下 引入 引入Maven配置 <!-- https://mvnrepository.com/artifact/log4j/log4j --><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></de…

VI-ORB環境配置

參考博客:https://blog.csdn.net/qq_38589460/article/details/82559816 https://blog.csdn.net/Robot_Starscream/article/details/90245456 本機安裝的是opencv3.0 在Examples/ROS/ORB-VIO以及/VI-ORB/src/LearnVIORB-RT下的CMakeLists.txt都要進行修改 將find_package(O…

.NET Core 3.0中的數據庫驅動框架System.Data

雖然沒有得到很多關注&#xff0c;但System.Data對于.NET中任何關系型數據庫的訪問都至關重要。因為其前身是ActiveX Data Objects&#xff0c;所以它也被稱為ADO.NET。System.Data提供了一個通用框架&#xff0c;是構建.NET數據庫驅動程序的基礎。該框架提供了數據庫驅動可以遵…

linux vg lv pv

pv由物理卷或者分區組成 pv可以組成一個或者多個vg vg可以分成多個lv 方便擴展 pvs vgs lvs 可以查看當前存在的pv vg lv 我的centos硬盤20g 使用了一段時間 加了100g 這時候 我們可以使用擴展來擴展我們的分區大小 查看自己擁有多少個硬盤 ls /dev/sd* | grep -v [0-9] …

mynt product model: D1000-IR-120標定相機和IMU外參

1. 首先是安裝相應的mynt SDK. http://www.myntai.com/mynteye/depth小覓官網,在sdk下拉菜單中點擊MYNT EYE Depth SDK,然后選擇Linux Installation安裝安裝步驟說明一步步的安裝,安裝sample后,測試一下安裝是否成功.我的電腦上安裝了ROS,所以可以點擊上面第一幅圖中的ROS Ins…

吉林省第二條國際鐵路聯運大通道“長琿歐”啟動測試

29日&#xff0c;吉林省第二條國際鐵路聯運大通道“長琿歐”在俄羅斯啟動測試。吉林省商務廳供圖 29日&#xff0c;吉林省第二條國際鐵路聯運大通道“長琿歐”在俄羅斯啟動測試。吉林省商務廳供圖 中新網長春1月29日電 (郭佳)記者29日從吉林省商務廳獲悉&#xff0c;該省第二條…

使用Ajax解析數據遇到的問題

數據格式 我最近在使用JQuery的$.ajax訪問后臺的時候&#xff0c;發現竟然無法解析返回的數據&#xff0c;具體的錯誤記不清了(以后在遇到問題先截個圖)&#xff0c;可以在瀏覽器的Console中看到一個錯誤&#xff0c;但是去看這條請求是有數據返回的&#xff0c;所以剛開始我一…

49、劍指offer--把字符串轉換成整數

題目描述將一個字符串轉換成一個整數&#xff0c;要求不能使用字符串轉換整數的庫函數。 數值為0或者字符串不是一個合法的數值則返回0 輸入描述:輸入一個字符串,包括數字字母符號,可以為空輸出描述:如果是合法的數值表達則返回該數字&#xff0c;否則返回0輸入例子:2147483647…

Git丟棄修改

Git是如何跟蹤修改的&#xff1f;我們之前修改文件后都用到了兩個命令git add <file>、git commit&#xff0c;其實在Git中&#xff0c;每次修改后&#xff0c;如果不add到暫存區&#xff0c;那就不會加入到commit。 查看一下文件內容&#xff1a; 在其中添加一行記錄…

隱藏界面沒有必要應用場景

轉載于:https://www.cnblogs.com/zengsf/p/8366572.html

mynt product model: D1000-IR-120標定相機和IMU外參之二

1. 在之一中使用kalibr標定mynt相機和內置imu的外參數,使用的是720p,30fps的雙目圖像和200hz的imu數據,標定結果誤差比較大,這一次我們改用480p,60hz的雙目圖像和200hz的imu數據進行標定,需要在mynt_sdk中的mynteye.launch中進行如下修改. 默認獲取圖像的2560x720,30fps&#…

AODp

一、AOP是OOP的延續&#xff0c;是&#xff08;Aspect Oriented Programming&#xff09;的縮寫&#xff0c;意思是面向切面編程。 AOP&#xff08;Aspect Orient Programming&#xff09;&#xff0c;作為面向對象編程的一種補充&#xff0c;廣泛應用于處理一些具有橫切性質的…

[洛谷P4174][NOI2006]最大獲利

題目大意&#xff1a;同Petya and Graph&#xff0c;數據范圍改成$n\leqslant5\times10^3,m\leqslant5\times10^4$ 題解&#xff1a;同上 卡點&#xff1a;無 C Code&#xff1a; #include <algorithm> #include <cstdio> #define maxn 5010 #define maxm 50010 co…