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.mzph.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…