UVA1331 Minimax Triangulation (区间DP)

例题9-11 UVa1331 Minimax Triangulation(DP:最优三角剖分) 题意: 看白书 要点: 基本的三角剖分题,但要注意三个点: 1.已知三角形三个顶点的坐标,可用行列式求面积,则S=(1/2)*(下面行列式) |x1 y1 1| |x2 y2 1| |x3 y3 1| S=(1/2)*(x1y2*1+x2y3*1+x3y1*1-x1y3*1-x2y1*1-x3y2*1) 2.这题没有说多边形一定是凸多边形,所以要考虑凹多边形的情况, 阅读详情

UVA1331 Minimax Triangulation (区间DP)

本题属于最优三角剖分问题,用dp(i,j)表示在编号为i的顶点和编号为j的顶点间的最大三角面积的最小值。

这样我们就可以得到状态转移方程
dp(i,j)=min(max(dp(i,k),dp(k,j),S(i,k,j))),其中i<k<j

知道三角形的三点坐标,可以用向量叉乘来求面积;
知道三角形的三边长,可以用海伦公式求面积;

本题需要注意的地方是,需要判断i-j是否是多边形的对角线(除了i=1且j=n的情况),我们可以通过面积判断在i,k,j点组成的三角形内是否有别的顶点。如果有则说明该划分是非法的,原因是:
1、划分的线段可能不是对角线
2、划分的线段与别的对角线相交

#include<bits/stdc++.h>
#define esp 1e-6
using namespace std;
struct Node{
	int x;
	int y;
}node[55];
int n;
double dp[55][55];
double S(int l,int k,int r)
{
	return fabs((node[l].x-node[k].x)*(node[r].y-node[k].y)-(node[l].y-node[k].y)*(node[r].x-node[k].x))*0.5;
}
bool judge(int l,int k,int r)//判断是否以l.k.r为顶点的三角形是否包含其他点 
{
	for(int i=1;i<=n;i++)
	{
		if(i==l||i==r||i==k)continue;
		double s=S(i,l,r)+S(i,l,k)+S(i,k,r);
		if(s-S(l,k,r)<esp)return true;
	}
	return false;
}
void solve(void)
{	
	memset(dp,0,sizeof(dp));
	for(int s=2;s<=n;s++)
	for(int l=1;l<=n;l++)
	{
		int r=l+s;
		if(r>n)continue;
		dp[l][r]=0x3f3f3f3f;
		for(int k=l+1;k<r;k++)
		{
			if(judge(l,k,r))continue;
			double MAX=max(dp[l][k],dp[k][r]);
			MAX=max(MAX,S(l,k,r));
//			 ncout<<S(l,k,r)<<" "<<dp[l][k]<<" "<<dp[k][r]<<" "<<dp[l][r]<<endl;
			dp[l][r]=min(dp[l][r],MAX);
//			cout<<l<<" "<<r<<" "<<dp[l][r]<<endl;
		}
	}
	printf("%.1f\n",dp[1][n]);
}
int main(void)
{
//	freopen("out.txt","w",stdout);
	int t;
	scanf("%d",&t);
	while(t--)
	{
		scanf("%d",&n);
		for(int i=1;i<=n;i++)
		scanf("%d%d",&node[i].x,&node[i].y);
		solve();
	}
//	fclose(stdout);
}
//1
//6
//7 0
//6 2
//9 5
//3 5
//0 3
//1 1

UVA1131 最优三角形剖分 UVA1131 最优三角形剖分 最优三角剖分的一类题目都是差不多的。给你一个多边形,让你把它分割成若干个三角形,求三角形某最优解,比如UVA1331要求面积最大的三角形的面积最小。 立即下载

相关推荐

使用pytorch构建LSTM_AE模型的两种方式

2.基本LSTM_Unit计算——基本LSTM_AE结构 3.自定义LSTM_Unit计算——自定义LSTM_AE结构 1.LSTM-Encoder-Decoder模型结构及简要解析 图基本lstm计算单元

qq_37840762的博客 7274

1331 - Minimax Triangulation(DP)

该题就是最优三角形剖分的变形,虽然要用到一些几何知识,但是我们可以将其区间化,让决策变得有序 。  这样就变成了区间问题 。  我们定义d[i][j]表示由i~j顶点组成的子多边形的最优解,那么不难写出状态方程 : d[i][j] = min(max(d[i][k],d[k][j],S)) 其中S为i、k、j三个顶点构成的三角形面积。 我们不难发现这样的递推是正确的,但是有一个问题:我们划分出的图

AC_Arthur的专栏 1155

C# 进阶:打造WinForms中的动态交互式UserControl

本文深入探讨了如何在C# WinForms中创建动态交互式UserControl,以提升桌面应用的用户体验和代码复用性。通过剖析UserControl生命周期、事件体系,并结合一个可拖拽缩放的分割面板实战案例,详细讲解了鼠标键盘事件处理、自定义绘制、状态管理以及性能优化等核心技巧,帮助开发者封装复杂交互逻辑,打造专业级自定义控件。

weixin_29279153的博客 461

最大面积最小的三角剖分 Minimax Triangulation

边形,找一个最大三角形面积最小的。的内部有其他的点,则跳过。输出最大三角形的面积。

Chat_lsm2024的博客 629

宝塔部署若依前端出现502解决方法

若依系统是一个基于Java语言的开源项目,旨在帮助开发者减少开发时间,特别适用于需要快速开发出一套具有用户管理、菜单管理、权限管理、定时任务、日志管理等功能的简单系统。系统分为前后端分离、分布式等架构前后端分离部署教程然而通过宝塔来部署若依系统会遇见一些问题,特此在这里记录一下。

m0_74823683的博客 776

AI+AB测试提升电商主图点击率实战指南

在电商运营中,主图点击率(CTR)是衡量商品吸引力的核心指标,直接影响转化率和订单增长。通过AI技术批量生成高质量主图素材,结合数据驱动的AB测试方法,可以显著提升点击率。AI工具如MidJourney和Stable Diffusion能够快速生成多样化视觉方案,而自动化处理流水线则确保素材规格统一。AB测试体系通过多维变量控制和流量分配策略,科学验证不同素材效果。这种方法特别适用于需要快速迭代的电商场景,某女装店铺案例显示CTR从1.2%提升至3.8%,验证了AI+数据协同优化的技术价值。

weixin_29058331的博客 298

UVA1331 Minimax Triangulation

Address UVA1331 洛谷RemoteJudge Description 给定一个 nnn 条边的多边形(不一定是凸多边形),用 n−3n−3n-3 条线段(线段必须连接多边形上的两点,每条线段都必须在多边形的内部,并且任意两条线段都不能在多边形内相交)把多边形剖分成 n−2n−2n-2 个三角形,试找出一个切割方案,使得最大的三角形面积最小。 Input ...

Log_x's Blog 666

【STM32-DSP库的使用】基于Keil5 + STM32CubeMX + CMSIS-DSP 手动添加、库添加方式

CMSIS-DSP库在工程中应用遇到的所有问题进行归纳终结

洋洋的博客 1万+

UVA - 1331 Minimax Triangulation

题目链接 给一个多边形(可凸可凹),三角剖分它,使得剖分出的最大的三角形面积最小。 基本的考虑思路和最优三角剖分一样,但是要用到一些数学姿势(如图) 图片来源 这样计算三角形面积就很轻松了。 然后要判断凹多边形有没有划线划到外面,方法是判断有没有顶点在剖分的三角形里面,也就是顶点和剖分出的三角形顶点分别围成的三个三角形面积是否等于原三角形。 AC代码: #include &lt...

这是一个博客 317

基于Simulink的无线充电系统LCC补偿网络建模与控制

本文详细介绍了基于Simulink的无线充电系统LCC补偿网络建模与控制方法。首先分析了LCC补偿网络的恒流输出、软开关实现和抗偏移能力等优势,并对比了不同补偿拓扑特性。随后分步骤讲解了Simulink建模流程,包括LCC主电路构建、关键参数设计、双闭环控制系统实现等核心环节。重点阐述了移相控制策略和软开关验证方法,提供了系统效率计算和抗偏移测试的调试技巧。最后展示了仿真结果,在耦合系数变化20%时,闭环系统仍能保持输出电压稳定在±2%波动范围内。文章还探讨了工程扩展方向,并针对常见问题给出了解决方案,为无

xiaoheshang_123的博客 539

uniapp微信小程序 - 解决苹果ios底部输入框被软键盘遮挡的问题,input/textarea底部输入框被弹出的软键盘挡住部分或全部遮住(解决uniApp小程序底部输入框,键盘弹起时页面整体上移

uniapp: IOS微信小程序输入框部分被软键盘遮挡问题,iOS微信小程序键盘弹出时输入框被挡住,uniapp小程序苹果IOS系统软键盘唤起导致底部输入框被遮挡的问题,ios 键盘弹出input输入框被遮挡,uniapp textarea输入框软键盘遮挡问题,苹果手机ios系统,解决uni-app微信小程序底部输入框,键盘弹起时页面整体上移 问题,关于手机端IOS系统微信中虚拟键盘遮挡input输入框问题的解决方案,uniapp使用输入框固定在底部键盘弹起把输入框挡住问题,安卓上没问题就苹果不行,仅ios

🏆 前端领域优质创作者 5594

uva1331最优三角形剖分

UVa OJ1331            如果理解了,最优矩阵链乘(uvaoj348) 这个题也就好写多了,都是区间上的规划,管理。这个题,是区间上划分成三个区,一个三角形 和 它的左右两个区间,组成了一个大区间。                通过对三角形 和两个区间(这两个对应的区间上存的是的该区间上划分出来的最大三角形的最小面积),比较出最大的那个三角形 ,不断地更

sinat_AQ的博客 711

基础入门篇 | YOLOv8 项目【训练】【验证】【推理】最简单教程 | YOLOv8必看 | 最新更新,直接打印 FPS,mAP50,75,95

三个文件搞定YOLOv8【训练】【验证】【推理】🚀🚀🚀

Coding... 2万+

UVA 1331 Minimax Triangulation 区间DP

区间DP: 将一个多边形三角剖分,让可以得到的最大三角形的面积最小 dp[i][j]表示从i点到j点的最优值,枚举中间点k dp[i][j]=min(dp[i][j],max(area(i,j,k),max(dp[i][k],dp[k][j]))); 注意如果中间三角形i-j-k中有其他的点,这样的三角形是不可以剖分的 Minimax Triangu

码代码的猿猿 1534

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Uva 1331 - Minimax Triangulation(最优三角剖分 区间DP)

题目大意:依照顺时针或者逆时针的顺序给出多边的点,要将这个多边形分解成n-2个三角形,要求使得这些三角行中面积最大的三角形面积尽量小,求最小值。 思路:用区间DP能够非常方便解决,多边形可能是凹边形,注意剖分的三角形必须在多边形内部,所以能够去掉剖分的三角形中包括其它点,可是其它的在多边形外部的三角形没想到其它方法去除。却ac了,不懂为何 // Accepted C++ 0....

aodiyi6351的博客 190

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Minimax Triangulation UVA - 1331(区间DP,最大三角形最小剖分)

思路: 区间dp。 定义dp[i][j]dp[i][j]dp[i][j]为处理完了i~j之间的点的答案。 子状态就是 dp[i][k]dp[i][k]dp[i][k],dp[k][j]dp[k][j]dp[k][j],或者直接由i,j,ki,j,ki,j,k组成的三角形。 但是这个多边形不一定是凸包,所以要保证当前组成的三角形不是凹的,方法就是判断是否有点在这个三角形里面。 不过值得注意的是,这个方法不能判断单独三点构成的凹三角形,但这没有影响。因为当区间长度为4或更大的时候,这个凹三角形是无法被统计进来.

tomjobs的博客 562

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

UVA - 1331 Minimax Triangulation (区间dp)(最优三角剖分)

题目链接 把一个多边形剖分成若干个三角形,使得其中最大的三角形面积最小。 比较经典的一道dp问题 设dp[l][r]为把多边形[l,r]剖分成三角形的最大三角形面积中的最小值,则$dp[l][r]=min\{dp[l][i]+dp[i][r]+area(l,i,r)\}$ 注意: 1.由于多边形的点不一定按顺时针或者逆时针排列,需要按点的顺序计算一遍多边形的面积,如果为负说明是顺时针排列...

weixin_30509393的博客 146

UVa 1331 - Minimax Triangulation(区间DP + 计算几何)

链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4077 题意: 三角剖分是指用不相交的对角线把一个多边形分成若干个三角形。输入一个简单m(2<m<50)边形,找一个最大三角形面积最小的三角剖分。输出...

weixin_30485799的博客 147

UVA 1331 Minimax Triangulation 最大面积最小的三角剖分(区间dp--记忆化搜索)

大大体题意: 给你一个n 个点的多边形,输入按着沿着边输入(不用排序),要求分成n-2个三角形,使得这n-2个三角形中最大的三角形的面积尽可能小,输出最小面积! 思路: 区间dp思想! 令dp[i][j] 是用第i 个点到第j 个点能组成最大三角形最小面积! 然后枚举i 和j 之间的点作为 第三个点,然后分成两部分 i~k 和k~j 继续寻找! 不过有坑: 需要注意,如果有个点凹进去

aozil_yang的博客 672

uva 1331 - Minimax Triangulation(dp)

题目大意:按照顺时针或者逆时针的顺序给出多边的点,要将这个多边形分解成n-2个三角形,要求使得这些三角行中面积最大的三角形面积尽量小,求最小值。 解题思路:状态很好想,dp[i][j]表示从第i个点到第j个点,划分成j-i-1个三角形的最优解,然后每次转移时,枚举长度和左边界始点,那么根据长度和左边界点就可以知道右边界点,然后枚举左边界和右边界中间的点k,dp[i][j] = min(d

不慌不忙、不急不躁 2998

UVa 1331 Minimax Triangulation

该题目要求对简单多边形进行三角剖分,使得最大三角形面积最小化。采用动态规划方法,定义状态dp[i][j]表示顶点i到j的子多边形剖分后的最小最大面积。通过枚举中间顶点k,将多边形划分为三角形(i,k,j)和两个子多边形,利用状态转移方程求解。关键点是确保三角形(i,k,j)内部不包含其他顶点。算法时间复杂度为O(m³),适用于顶点数m<50的情况,最终输出保留一位小数的最小最大面积。

寂静山林 934

UVA 1331 Minimax Triangulation

话说这个题我开始是不会滴,第一次看了人家的代码照着写的。有机会的话更新一下,写一下自己的代码。 最优三角剖分的一类题目都是差不多的。给你一个多边形,让你把它分割成若干个三角形,求三角形某最优解,比如UVA1331要求面积最大的三角形的面积最小。如图是各种切割方法:            不知道一开始看到最大值最小化会不会又一下子想到枚举答案二分去了呢,不过本题正解是DP

nankeyimeng的博客 1205
上一篇: UVA 10003 Cutting Sticks (区间DP+四边形不等式)
下一篇: UVA 1218 Perfect Service (树上 DP)
WedsonLin
博客等级 码龄7年 1粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值