当前位置: 首页 > news >正文

济南网站建设 unzz新房网站建设公司

济南网站建设 unzz,新房网站建设公司,网站建设 核算,稿定设计app软件下载题目大意#xff1a;给你一个n (n300) 边形#xff0c;给出它所有的顶点坐标#xff0c;让你把它划分成n-2个三角形的花费最小值#xff0c;顶点 a 和 b 相连的花费为 abs(a.xb.x)*abs(a.yb.y)。 如果是凹多边形输出无解。 思路#xff1a;先跑个凸包判断是不是凸多边…题目大意给你一个n (n300) 边形给出它所有的顶点坐标让你把它划分成n-2个三角形的花费最小值顶点 a 和 b 相连的花费为 abs(a.xb.x)*abs(a.yb.y)。 如果是凹多边形输出无解。   思路先跑个凸包判断是不是凸多边形跑完之后点的顺序是逆时针的我们考虑区间dpdp[ 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-i2 显然花费为0所以答案微dp[ 0 ][ n-1]。 1 #includebits/stdc.h2 using namespace std;3 const int N305;4 const int inf0x3f3f3f3f;5 int n,tot,dp[N][N],cost[N][N],mod;6 struct point7 {8 int x,y;9 point(int _x0,int _y0){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 zcross(a-p[0],b-p[0]); 27 if(z0||(z0 dis(p[0],a)dis(p[0],b))) 28 return 1; 29 else return 0; 30 } 31 void get_cp() 32 { 33 int k0; tot0; 34 for(int i0;in;i) 35 if(p[i].yp[k].y || p[i].yp[k].y p[i].xp[k].x) ki; 36 swap(p[0],p[k]); 37 sort(p1,pn,cmp); 38 tot2,cp[0]p[0];cp[1]p[1]; 39 for(int i2;in;i) 40 { 41 while(tot1 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-l2) return 0; 54 dp[l][r]inf; 55 for(int kl1;kr-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 i0;in;i) scanf(%d%d,p[i].x,p[i].y); 64 get_cp(); 65 if(totn) 66 { 67 puts(I cant cut.); 68 continue; 69 } 70 init(); 71 for(int i0;in;i) 72 for(int ji2;jn;j) 73 cost[i][j]cost[j][i]abs(cp[i].xcp[j].x)*abs(cp[i].ycp[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://wiki.neutronadmin.com/news/127773/

相关文章:

  • 腾讯wordpress 建站国家企业信用信息公示系统官网山东
  • nginx怎么做多个网站做网站设计用什么软件
  • 宣传类的网站怎么做网站建设策划文案
  • 网站建设的课程网站的优点和缺点
  • 潍坊网站建设做网站编辑好还是新媒体编辑
  • 建设一个自己的网站内蒙古省呼和浩特网站建设
  • 电子商务网站类型凌河锦州网站建设
  • 网站建设合同 保密条款智能家居产品设计案例
  • 网站上常用的字体网站常见结构有那些
  • 广州生物科技网站建设公司宁波网站模板哪家性价比高
  • 苏州网站建设sz sogou制作微信公众号的网站
  • 杭州 洛阳网站建设公司 网络服务wordpress付费小说
  • 哪些网站可以做顺风车家政公司网站建设方案
  • 网站开发如何避免浏览器缓存的影响苏州公司
  • 做网站上找王思奇穿越之游戏开发系统
  • 网站设计与建设实训南京公司注册
  • 免费微网站建站系统源码建设网站需要备案么
  • 加油站顶棚网架价多少钱一平如何制作网络游戏
  • 服装营销型网站建设上海社区网站建设
  • 网站建设如何站内搜索超链接怎么做
  • 外贸网站源码怎么建wordpress主题开发过程
  • 高端企业网站建设蓦然郑州网站建设6免费wordpress导购主题
  • cms网站搭建wordpress搜索翻页404
  • 南京网站制作哪家专业搜索引擎推广的三种方式
  • 单位做网站需要多少钱微信音乐音频怎么关闭
  • 淘宝客怎么建设自己网站常用的网页开发技术有哪些
  • 做特卖的网站上品折扣网站建设中的背景图片模板
  • 合川网站制作企业网站有哪些企业
  • 制作网站的视频教程苏州网站建设网站建设
  • 佛山制作做网站网站页面设计工具