ZOJ 3537 Cake 计算几何+区间dp
来源:互联网 发布:淘宝收货延迟多长时间 编辑:程序博客网 时间:2024/05/16 11:15
#include<bits/stdc++.h>using namespace std;typedef long long ll;const int inf = 0x3fffffff;struct node{ int x,y;}N[510],ans[510];bool X(node a,node b,node c){ return (b.x-a.x)*(c.y-a.y)-(c.x-a.x)*(b.y-a.y);}double len(node a,node b){ return sqrt((b.x-a.x)*(b.x-a.x)+(b.y-a.y)*(b.y-a.y));}bool cmp(node a,node b){ int pp = X(N[1],a,b); if(pp<0)return 0;// 即axb<0 说明a向量在b的逆时针 else if(pp>0)return 1;// 大于零 说明a向量在b的顺时针 else if(pp==0&&len(N[1],b)>len(N[1],a))return 1; else return 0;}int dp[510][510],cost[510][510];int main(){ int n,p; while(~scanf("%d%d",&n,&p)) { for(int i=1;i<=n;i++)scanf("%d%d",&N[i].x,&N[i].y); for(int i=2;i<=n;i++){ if(N[i].y<N[1].y) swap(N[i],N[1]); else if(N[i].y==N[1].y&&N[i].x<N[1].x) swap(N[i],N[1]); } sort(N+2,N+1+n,cmp); ans[1]=N[1]; ans[2]=N[2]; int tot=2; for(int i=3;i<=n;i++){ while(tot>1&&X(ans[tot-1],ans[tot],N[i])<=0)tot--; tot++; ans[tot]=N[i]; } if(tot!=n)puts("I can't cut."); else{ if(n==3)puts("0"); else{ for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ if(i==j||abs(i-j)==1)dp[i][j]=0; else dp[i][j]=inf; cost[i][j]=abs(ans[i].x-ans[j].x)*abs(ans[i].y-ans[j].y)%p; } } //dp[1][n]=dp[n][1]=0;// 1 for(int l=2;l<=n;l++){ for(int i=1;i<=n-l+1;i++){ int j=i+l-1; for(int k=i+1;k<=j;k++){ dp[i][j] = min(dp[i][j],dp[i][k]+dp[k][j]+cost[i][k] + cost[k][j]); } } } printf("%d\n",dp[1][n]); } } } return 0;}
不知道为什么segment fault啊 感觉数组没问题啊~
阅读全文
0 0
- ZOJ 3537 Cake 计算几何+区间dp
- zoj 3537 Cake(区间DP+最优三角形剖分)待续
- zoj 3537 Cake (凸包判定+区间dp)
- ZOJ 3537 Cake(凸包+区间DP)
- ZOJ 3537 Cake 凸包+区间DP+记忆化搜索
- ZOJ 3537 Cake(凸包判定+区间DP)
- ZOJ 3537 Cake (区间DP6)
- zoj 3537 cake 切蛋糕 区间DP+凸包+递归 最优三角形剖分
- ZOJ - 3537 Cake (凸包+区间DP+最优三角剖分)
- zoj 3537 cake (区间DP+凸包+ 最优三角形剖分模型)
- zoj 3537 Cake (区间DP x 最优三角形剖分)
- zoj 3537 Cake 【凸包 + 区间dp】 【最优三角剖分】
- ZOJ-3537 Cake(区间dp+凸包最优三角形剖分)
- ZOJ 3537-Cake(凸包+最优三角刨分+区间DP)
- Zoj 3537 区间DP
- Zoj 3537(区间DP)
- ZOJ 3537 区间DP
- ZOJ 3537 区间dp
- Nodejs 热加载
- JS计算两个日期之间的天数
- Allegro过孔via设计
- IO流 文件读取, 写入,和复制txt文件代码演示
- 第10章 中间件
- ZOJ 3537 Cake 计算几何+区间dp
- Qt样式表 学习总结
- 【期望DP】HDU3853 LOOPS
- caffe dilation 空洞卷积
- 二叉树——判断两棵二叉树是否相等(先序和中序遍历序列建立二叉树)
- Java基础——数据类型和运算符
- ftp协议,文件传输的一抹色彩
- KCF详解
- [ARM-Linux]Linux-MATLAB安装