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要求面积最大的三角形的面积最小。 立即下载

相关推荐

保姆级教程:在RK3576上配置USB网卡从零到外网访问(附udev规则详解)

本文提供了在RK3576开发板上配置USB网卡的完整教程,涵盖从内核驱动、udev规则到网络路由的全流程。重点讲解了如何利用USB Gadget功能实现高速网络连接,并构建稳定的算力集群,确保多设备间通信及外网访问。

grass的博客 458

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

用Python玩转ROS机械臂:YOLO目标检测+MoveIt!自动抓取仿真教程

本文详细介绍了如何利用Python集成YOLO目标检测与ROS的MoveIt!运动规划库,实现机械臂的智能抓取仿真。通过Gazebo仿真环境,从视觉感知、坐标转换到运动规划与执行,构建了一套完整的自动化抓取系统,为机器人视觉抓取应用提供了可复现的实践方案。

ppp33的博客 552

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

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

Chat_lsm2024的博客 629

利用Docker Compose简化openGauss多节点容器化部署

本文详细介绍了如何利用Docker Compose简化openGauss多节点容器化部署,从环境准备到配置文件编写,再到集群部署与验证,提供了一套完整的解决方案。通过Docker Compose,原本复杂的手动部署流程被大幅简化,显著提升了部署效率和可靠性,特别适合企业级开源数据库的高可用架构需求。

weixin_30338481的博客 60

C#调用Bartender打印标签,除了打印还能一键导出图片和PDF(附完整代码)

本文详细介绍了如何使用C#集成Bartender实现标签的多格式输出,包括打印、图片和PDF导出。通过完整的代码示例和实战技巧,帮助开发者解决分辨率适配、纸张尺寸控制等核心问题,提升工业自动化和物流管理中的标签处理效率。

weixin_31236101的博客 369

UVA1331 Minimax Triangulation

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

Log_x's Blog 666

Frida提取Cocos游戏XXTEA密钥的实战方法论

XXTEA是一种轻量级分组加密算法,广泛用于移动端游戏通信保护;其128位密钥的安全性直接决定网络协议逆向成败。在Cocos引擎生态中,密钥常以静态常量、JNI动态传递或Native运行时派生三种形态存在,导致传统静态分析失效。Frida凭借跨Java/Native注入能力与内存实时观测优势,成为捕获密钥‘出生瞬间’的关键工具——尤其适用于hook xxtea_encrypt函数入口、监控JNI参数传递、设置内存断点追踪派生过程等场景。本文聚焦Cocos2d-x与Cocos Creator项目,覆盖从密钥识

weixin_33509600的博客 416

UVA - 1331 Minimax Triangulation

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

这是一个博客 317

6、Dialogflow 开发全解析:从基础到高级应用

本文全面解析了 Dialogflow 的核心功能与高级应用,涵盖意图与实体的创建、上下文管理、后续意图设置以及高级实体类型的实际应用场景。详细介绍了自定义实体的导入导出规则、编程添加方法及数量限制,并通过流程图和实例说明了上下文生命周期与对话连贯性设计。结合电商、旅游、问卷调查等实际业务场景,展示了模糊匹配、自动扩展、复合实体等功能的强大灵活性。最后提供了开发最佳实践建议,帮助开发者构建高效、智能的对话系统。

kafka6courier的博客 103

AI在电商中的搜索优化

自拟标题 《AI技术助力电商搜索优化:深度解析一线大厂面试题及算法编程实践》 概述 随着人工智能技术的不断发展,AI在电商搜索优化中的应用日益广泛。本文将围绕“AI在电商中的搜索优化”这一主题,介绍国内头部一线大厂如阿里巴巴、百度、腾讯、字节跳动等在面试中常见的AI相关面试题和算法编程题,并提供详尽的答案解

AI天才研究院 912

uva1331最优三角形剖分

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

sinat_AQ的博客 711

135、高通 ChromaTix 调优工具入门:参数含义、调优流程与效果对比

本文介绍了高通ChromaTix色彩调优工具的核心使用要点:1. ChromaTix是位于ISP管线中的色彩处理系统,核心任务是将原始色彩映射为符合人眼感知的"舒适"效果;2. 重点解析了饱和度、色调、亮度相关饱和度等关键参数的实际含义和调试陷阱;3. 分享了四步调优流程,强调需要基于多场景数据验证;4. 通过案例展示了参数调整带来的色彩改善效果;5. 总结了实用建议,包括保持单一变量调试、量化评估色差、关注极端场景表现等。文章指出ChromaTix调优是平衡不同场景需求的"妥协艺术",需要结合客观数据和主

sundong_81的博客 106

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

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

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

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

aodiyi6351的博客 190

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

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

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、付费专栏及课程。

余额充值