题意:

按顺序给定一些点,把这些点分割为n - 2个三角形,花费为最大三角形面积,求最小花费

分析:

区间dp,dp[i][j]表示完成区间[i,j]最小花费,dp[i][j]=min(dp[i][j],max(dp[i][k],dp[k][j],area(p[i],p[j],p[k]);(area表示三点确定面积),区间要循环考虑(首未相邻)。

#include <map>
#include <set>
#include <list>
#include <cmath>
#include <queue>
#include <stack>
#include <cstdio>
#include <vector>
#include <string>
#include <cctype>
#include <complex>
#include <cassert>
#include <utility>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
using namespace std;
typedef pair<int,int> PII;
typedef long long ll;
#define lson l,m,rt<<1
#define pi acos(-1.0)
#define rson m+1,r,rt<<11
#define All 1,N,1
#define read freopen("in.txt", "r", stdin)
const ll INFll = 0x3f3f3f3f3f3f3f3fLL;
const int INF= 0x7ffffff;
const int mod = ;
struct point{
double x,y;
}p[];
int n;
double dp[][];
double area(point a,point b,point c){
return abs((b.x-a.x)*(c.y-a.y)-(c.x-a.x)*(b.y-a.y))/2.0;
}
int judge(int a,int b,int c){
for(int i=;i<n;++i){
if(i!=a&&i!=b&&i!=c){
double tmp=area(p[a],p[b],p[i])+area(p[a],p[i],p[c])+area(p[i],p[b],p[c]);
if(abs(tmp-area(p[a],p[b],p[c]))<1e-)
return ;
}
}
return ;
}
void solve(){
double minv=INF;
for(int l=;l<n;++l)
for(int i=;i<n;++i){
int j=(i+l)%n;
dp[i][j]=INF;
for(int k=(i+)%n;k!=j;k=(k+)%n){
if(judge(i,k,j)){
dp[i][j]=min(dp[i][j],max(max(dp[i][k],dp[k][j]),area(p[i],p[k],p[j])));
}
}
if(l==n-)
minv=min(minv,dp[i][j]);
}
printf("%.1lf\n",minv);
}
int main()
{
int t;
scanf("%d",&t);
while(t--){
scanf("%d",&n);
for(int i=;i<n;++i)
scanf("%lf%lf",&p[i].x,&p[i].y);
solve();
}
return ;
}

Minimax Triangulation的更多相关文章

  1. uva 1331 - Minimax Triangulation(dp)

    option=com_onlinejudge&Itemid=8&page=show_problem&category=514&problem=4077&mosm ...

  2. UVA-1331 Minimax Triangulation 区间dp 计算几何 三角剖分 最大三角形最小化

    题目链接:https://cn.vjudge.net/problem/UVA-1331 题意 给一个任意多边形,把它分为多个三角形. 求某方案中最大的三角形是各方案中最小的面积的三角形面积. 思路 学 ...

  3. spoj Minimax Triangulation

    题解: dp+计算几何 F[i][j]表示第i-j条边的答案 然后转移一下 代码: #include<bits/stdc++.h> using namespace std; ]; ][]; ...

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

    链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

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

    题目链接 把一个多边形剖分成若干个三角形,使得其中最大的三角形面积最小. 比较经典的一道dp问题 设dp[l][r]为把多边形[l,r]剖分成三角形的最大三角形面积中的最小值,则$dp[l][r]=m ...

  6. uva1331 Minimax Triangulation

    题目大意: 按照顺时针或者逆时针的顺序给出多边的点,要将这个多边形分解成n-2个三角形,要求使得这些三角行中面积最大的三角形面积尽量小,求最小值. /* dp[i][j]表示从第i个点到第j个点,划分 ...

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

    题目大意:依照顺时针或者逆时针的顺序给出多边的点,要将这个多边形分解成n-2个三角形,要求使得这些三角行中面积最大的三角形面积尽量小,求最小值. 思路:用区间DP能够非常方便解决,多边形可能是凹边形, ...

  8. 杭电ACM分类

    杭电ACM分类: 1001 整数求和 水题1002 C语言实验题——两个数比较 水题1003 1.2.3.4.5... 简单题1004 渊子赛马 排序+贪心的方法归并1005 Hero In Maze ...

  9. 转载:hdu 题目分类 (侵删)

    转载:from http://blog.csdn.net/qq_28236309/article/details/47818349 基础题:1000.1001.1004.1005.1008.1012. ...

随机推荐

  1. 空格的URL编码

    Q: 为什么我看的教材一会说是“+” 一会说是“%20” A: urlencode(" ") '返回+encodeURI(" ") '返回%20是有区别的

  2. android 输入法的打开和关闭

    一.打开输入法窗口: InputMethodManager inputMethodManager = (InputMethodManager)  getSystemService(Context.IN ...

  3. Oracle - 位图索引的适用条件

    位图索引的适用条件 位图索引适合只有几个固定值的列,如性别.婚姻状况.行政区等等,而身份证号这种类型不适合用位图索引. 位图索引适合静态数据,而不适合索引频繁更新的列. 举个例子,有这样一个字段bus ...

  4. 初识Redis

    package com.wangzhu.redis; import java.util.List; import org.junit.After; import org.junit.Before; i ...

  5. 【PHP高效搜索专题(1)】sphinx&Coreseek的介绍与安装

    我们已经知道mysql中带有"%keyword%"条件的sql是不走索引的,而不走索引的sql在大数据量+大并发量的时候,不仅效率极慢还很有可能让数据库崩溃.那我们如何通过某些关键 ...

  6. PHP二位数组/多维数组 根据某个键值排序

    $arr[$i]['FirstName'] = $d_first_name;$arr[$i]['MiddleName'] = $d_middle_name;$arr[$i]['LastName'] = ...

  7. hadoop拾遗(五)---- mapreduce 输出到多个文件 / 文件夹

    今天要把HBase中的部分数据转移到HDFS上,想根据时间戳来自动输出到以时间戳来命名的每个文件夹下.虽然以前也做过相似工作,但有些细节还是忘记了,所以这次写个随笔记录一下. package com. ...

  8. eclipse(STS,myeclipse)老是报ThreadPoolExecutor$Worker.run()

    资料地址:http://stackoverflow.com/questions/6290470/eclipse-debugger-always-blocks-on-threadpoolexecutor ...

  9. C#基础(三)

    运算符 分类 符号 解释 优先级 算数 ++,—— 加加,减减 由高到低,即执行顺序由上到下(圆括号优先级最高) * /% 乘 除 取余 + - 加 减 关系 关系和逻辑运算符永远是布尔型 >  ...

  10. poj 3258 River Hopscotch(二分+贪心)

    题目:http://poj.org/problem?id=3258 题意: 一条河长度为 L,河的起点(Start)和终点(End)分别有2块石头,S到E的距离就是L. 河中有n块石头,每块石头到S都 ...