https://vjudge.net/contest/324256#problem/L

题意:给一堆点,求最大空凸包面积。

思路:枚举凸包左下角点O,dp找出以这个点为起始位置能构成的最大空凸包面积,用dp[i][j]表示以Oi和ij为凸包最后两边所构成凸包面积的最大值。

dp[i][j] = max(dp[i][j],triangle(O,i,j)+dp[j][k])

#include<bits/stdc++.h>
#define ll long long
#define rep(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
struct Point {
int x,y;
Point(){};
Point(int x,int y):x(x),y(y){}
Point operator + (const Point &b) const {
return Point(x+b.x,y+b.y);
}
Point operator -(const Point &b) const {
return Point(x-b.x,y-b.y);
}
int operator *(const Point &b) const {
return x*b.y-y*b.x;
}
int len() const {
return x*x+y*y;
}
int operator<(const Point &a) const {
if((*this)*a>0||(*this)*a==0&&len()<a.len()){
return 1;
}
return 0;
}
}point;
int n;
Point s[122],p[122];
int dp[122][122]; int jud(int m){
int ans,i,j,now,k,flag,s;
memset(dp,0,sizeof dp);
ans = 0;
for(i=2;i<=m;i++){
now = i-1;
while(now>=1&&p[i]*p[now]==0) now--;
flag = 0;
if(now==i-1) flag = 1;
while(now>=1){
s = p[now]*p[i];
k = now-1;
while(k>=1&&(p[now]-p[i])*(p[k]-p[now])>0) k--;
if(k>=1) s += dp[now][k];
if(flag) dp[i][now] = s;
ans = max(ans,s);
now = k;
}
if(flag==0) continue;
for(j=1;j<=i-1;j++) dp[i][j] = max(dp[i][j],dp[i][j-1]);
}
return ans;
} int main(){
int t,i,j,m,ans;
cin>>t;
while(t--){
cin>>n;
for(i=1;i<=n;i++) cin>>s[i].x>>s[i].y;
ans = 0;
for(i=1;i<=n;i++){
m = 0;
for(j=1;j<=n;j++){
if(s[j].y>s[i].y||s[j].y==s[i].y&&s[j].x>=s[i].x){
p[++m] = s[j]-s[i];
}
}
sort(p+1,p+1+m);
ans = max(ans,jud(m));
}
printf("%.1f\n",ans/2.0);
}
return 0;
}

最新文章

  1. Obtaining Query Count Without executing a Query in Oracle D2k
  2. hadoop运行原理之Job运行(四) JobTracker端心跳机制分析
  3. CHAP认证原理
  4. 图表控件MsChart使用demo
  5. vs2010调用matlab2011下的.m文件
  6. StarUML启动时候出现&quot;System Error. Code:1722. RPC服务器不可用.&quot;错误的解决办法
  7. Linux之V4L2视频采集编程详解
  8. App开发革命进阶路
  9. Android下EditText中的字体不统一问题
  10. 给postgresql 创建新的用户
  11. Linux下自动化监控内存、存储空间!
  12. HDU 1068 Girls and Boys(模板——二分图最大匹配)
  13. Python中的垃圾回收与del语句
  14. 数据库 的几种链接 join
  15. 使用withCount后再使用select设置查询的字段。就找不到withCount的数据了
  16. groupadd语法
  17. 8. String to Integer (atoi) 字符串转成整数
  18. JavaScript 获得 坐标
  19. 洛谷P1101 单词方针
  20. 如何关闭Golang中的HTTP连接 How to Close Golang&#39;s HTTP connection

热门文章

  1. Java编程基础阶段笔记 day04 Java基础语法(下)
  2. SCI论文的时态
  3. Extjs的textfield的颜色设置和出现的问题笔记
  4. 深入理解JVM-java字节码文件结构剖析(1)
  5. 洛谷P2763题解
  6. Python学习系列(四)Python 入门语法规则2
  7. SpringBoot 集成Jedis操作set
  8. JAVA基础知识(八)值传递与引用传递
  9. Go中的日志及第三方日志包logrus
  10. Python 环境管理