题意:按照顺时针给出操场的周边点,然后给出周围可以建设照明灯的位置,以及在该位置建设照明灯的代价,照明灯照射的范围与操场的边界相切,现在要求一个最小的花费,要求操场的所有边都被照射到。

解题关键:预处理每台灯能够覆盖到的范围,然后对环进行dp即可。对环进行dp的方法是枚举起点,覆盖所有点即可。

注意用叉积的方法处理灯能否照到某条边->某个点。

$dp[i][j]$表示从第$i$个点到第$j$个点之间的边都被照射到的最小代价,只要有某个等得照射范围有覆盖到$i$,$j$,就可以向外扩展。

#include<bits/stdc++.h>
#define inf 0x3f3f3f3f
using namespace std;
typedef long long ll;
const double eps=1e-8;
const int N=105;
const int M=1005;
int n,m,dp[N];
bool flag[N];
struct Point{  double x,y;  Point(double x=0,double y=0) {  this->x=x;  this->y=y;  }void read(){  scanf("%lf%lf",&x,&y);  }
}p[N],o;struct node{  int l,r,c;
}q[M];bool judge(Point p0, Point p1, Point p2) {  return (p1.x-p0.x)*(p2.y-p0.y)-(p2.x-p0.x)*(p1.y-p0.y)<-eps;//叉积判断是否能被照到
}node tra(Point t, int c){  node ans;  ans.c=c;memset(flag,0,sizeof flag);  for(int i=0;i<n;i++) if(judge(t,p[i],p[i+1]))  flag[i]=true;if (flag[0]&&flag[n-1]){  int l=n-1,r=0;while(flag[l-1]) l--;  while(flag[r+1]) r++;  ans.l=l,ans.r=r+n;}else{  int l=0,r=n-1;  while(!flag[l]) l++;while(!flag[r]) r--;ans.l=l,ans.r=r;  }return ans;
}  bool solve(){  int ans=inf; for(int i=0;i<n;i++){  fill(dp,dp+2*n+1,inf);dp[i]=0;for(int j=0;j<n;j++){int r=i+j;  for(int k=0;k<m;k++){if(q[k].l>r) continue;int now=min(i+n,q[k].r+1);  dp[now]=min(dp[now],dp[r]+q[k].c);  }  }  ans=min(ans,dp[i+n]);}if(ans==inf) return false;printf("%d\n",ans);return true;
}  int main(){  while(~scanf("%d",&n)&&n){for(int i=0;i<n;i++) p[i].read();  p[n]=p[0];scanf("%d",&m);  Point tmp;  int c;  for(int i=0;i<m;i++){  tmp.read();scanf("%d",&c);  q[i]=tra(tmp,c);  }if (!solve()) printf("Impossible.\n");  }  return 0;
}  

转载于:https://www.cnblogs.com/elpsycongroo/p/7808858.html

[Uva10641]Barisal Stadium(区间dp)相关推荐

  1. POJ 2955 Brackets (区间DP)

    题目链接:http://poj.org/problem?id=2955 Brackets Time Limit: 1000MS   Memory Limit: 65536K Total Submiss ...

  2. 0x53. 动态规划 - 区间DP(习题详解 × 8)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 文章目录 0x53. 动态规划 - 区间DP Problem A. 最优矩阵链乘 Problem B. ...

  3. UVA1626 括号序列 Brackets sequence(区间DP匹配括号,输出匹配方案)

    整理的算法模板合集: ACM模板 UVA1626 Brackets sequence 我们将正规括号序列定义如下: 空序列是正规括号序列. 如果 SSS 是一个正规括号序列,那么 (S) 和 [S] ...

  4. UVA10003 切木棍 Cutting Sticks(区间DP、细节)

    整理的算法模板合集: ACM模板 本题其实就是一个区间DP 的模板题,总长度为len,有n个切割点,也就是说能被切割成n+1段,所以左边界是0,有边界是n + 1,所以答案就是f[0][n + 1]. ...

  5. 【动态规划】区间DP - 最优矩阵链乘(另附POJ1651Multiplication Puzzle)

    最优矩阵链乘(动态规划) 一个n∗mn*mn∗m的矩阵由 nnn 行 mmm 列共 n∗mn*mn∗m 排列而成.两个矩阵A和B可以相乘当且仅当A的列数等于B的行数.一个nm的矩阵乘mp的矩阵,运算量 ...

  6. 【每日DP】day13、P3147 [USACO16OPEN]262144 (区间DP,2048游戏)难度⭐⭐⭐★

    P3147 [USACO16OPEN]262144 P 想到合并,自然就想到区间dp,一个被合成的数之前是一个区间,并且由两个数比它小 111 的区间合成.可麻烦的是,我们并不知道之前的两个区间长度各 ...

  7. poj1651(区间dp)

    题目连接:http://poj.org/problem?id=1651 题意:给出一组N个数,每次从中抽出一个数(第一和最后一个不能抽),该次的得分即为抽出的数与相邻两个数的乘积.直到只剩下首尾两个数 ...

  8. HDU 5115 Dire Wolf ——(区间DP)

    比赛的时候以为很难,其实就是一个区间DP= =..思路见:点我. 区间DP一定要记住先枚举区间长度啊= =~!因为区间dp都是由短的区间更新长的区间的,所以先把短的区间更新完.. 代码如下: 1 #i ...

  9. 编程之美2015资格赛 题目2 : 回文字符序列 [ 区间dp ]

    传送门 题目2 : 回文字符序列 时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 给定字符串,求它的回文子序列个数.回文子序列反转字符顺序后仍然与原序列相同.例如字符串ab ...

最新文章

  1. java计算下周一_java – 如何计算下周?
  2. C++Primer学习——函数
  3. Linux6.x修改出eth0网卡的解决方法
  4. arduinowin7_Win7系统下Arduino驱动安装失败的解决方法
  5. javascript和var之间的区别?
  6. Apache Hadoop 启动报错:masternode:ssh: connect to host master port 22: Connection timed out 总结
  7. 详细介绍nagios基本配置
  8. html5手机端三级联动城市选择代码,省市县三级联动(jQuery手机端收货地址选择地区代码)...
  9. 计算机桌面有黑边怎么调整,电脑屏幕旁边有黑色框如何恢复_电脑两边黑边怎么还原-win7之家...
  10. 宝宝三岁多了,整天自言自语,乱说一通怎么办?
  11. Python容器专题 - 列表(list)
  12. SNMP学习(2)——SNMP实战
  13. Python version 3.3 required, which was not found in the registry
  14. Android持久化技术
  15. Python将word转化为txt文本
  16. Java 记录(4) java 生成 UUID ,java.util.UUID 使用
  17. 我从华为身上学到的项目管理经验 -- 设计篇
  18. 新版标准日本语高级_第12课
  19. 跨模态检索 | Visual Representation Learning
  20. windows11配置检测工具-win11配置检测工具

热门文章

  1. Immutable Collections(3)Immutable List实现原理(中)变化中的不变
  2. Gridview SummaryItem 格式化数字
  3. [转]Messenger:使用消息的跨进程通信
  4. 树莓派基金会来号召用键盘生物学家研究企鹅
  5. DenyHosts 加固centos系统安全
  6. 简单解释什么是 依赖注入 和 控制反转
  7. SQLite/嵌入式数据库
  8. TCP三次握手及四次挥手详细图解(转)
  9. 大话Fragment管理
  10. 网盘是否能做一只安全的企业信息快递手