hdu 2907 凹陷面
来源:互联网 发布:c语言控制机械手 编辑:程序博客网 时间:2024/04/28 12:22
给定一个多边形,让你求出其价值。价值的定义是:-p*凹面的个数+q*凸面的个数。。。最小值为0
凸面的个数就是凸包中的点的个数,但是当出现凹面时,就会减少一个凸面,这是因为这时候的凸面是虚拟出来的!!!!!
题意参考这里 点击打开链接
int cmp(double x){ if(fabs(x) < 1e-8) return 0 ; if(x > 0) return 1 ; return -1 ;}struct point{ double x , y ; int id ; point(){} point(double _x , double _y):x(_x) , y(_y){} friend bool operator == (const point &a , const point &b){ return cmp(a.x - b.x) == 0 && cmp(a.y - b.y) == 0 ; } friend double operator ^ (const point &a , const point &b){ return a.x * b.y - a.y * b.x ; } friend double dist(const point &a , const point &b){ return sqrt( (a.x-b.x)*(a.x-b.x) + (a.y-b.y)*(a.y-b.y) ) ; } point operator - (point o){ return point(x - o.x , y - o.y) ; }};bool cmpless(const point &a , const point &b){ return cmp(a.x - b.x) < 0 || cmp(a.x - b.x == 0) && cmp(a.y - b.y) < 0 ;}vector<point> convex_hull(vector<point> a){ vector<point> src(2 * a.size() + 5) ; sort(a.begin() , a.end() , cmpless) ; a.erase(unique(a.begin() , a.end()) , a.end()) ; int m = 0 ; for(int i = 0 ; i < a.size() ; i++){ while(m > 1 && cmp( (src[m-1] - src[m-2]) ^ (a[i] - src[m-2]) ) <= 0) m-- ; src[m++] = a[i] ; } int k = m ; for(int i = a.size() - 2 ; i >= 0 ; i--){ while(m > k && cmp( (src[m-1] - src[m-2]) ^ (a[i] - src[m-2])) <= 0) m-- ; src[m++] = a[i] ; } src.resize(m) ; if(a.size() > 1) src.resize(m-1) ; return src ;}int vis[38] ;int main(){ int n , i , t , pcnt , qcnt , p , q ; cin>>t ; while(t--){ cin>>p>>q>>n ; vector<point> lis(n) ; for(i = 0 ; i < n ; i++){ scanf("%lf%lf" , &lis[i].x , &lis[i].y) ; lis[i].id = i ; } vector<point> hull = convex_hull(lis) ; qcnt = hull.size() ; memset(vis , 0 , sizeof(vis)) ; for(i = 0 ; i < hull.size() ; i++) vis[hull[i].id] = 1 ; pcnt = 0 ; for(i = 0 ; i < n ; i++){ if(vis[i] && !vis[(i+1)%n]) pcnt++ ; } qcnt -= pcnt ; cout<< max(0 , q * qcnt - p * pcnt )<< endl ; } return 0 ;}
0 0
- hdu 2907 凹陷面
- 凹陷文字
- 凹陷文字
- 地面凹陷
- 凹陷线条
- CSS凹陷文字
- 图像轮廓凹陷修补
- 制作按钮的凹陷效果
- PS快速制作凹陷直线
- 简单的链接向右下凹陷效果
- 怎么做出具有凹陷效果的字体
- HDU 2857 镜面反射
- TROUBLESHOOTING: ADF table中的内容列的凹陷边框
- WP8为LongListSelector添加类似ListBox的点击凹陷效果
- ArcGIS教程:创建无凹陷点的DEM
- 眼睛渴了!七杯花茶预防眼窝凹陷
- 不规则div之<div两垂直边向里凹陷>
- OpenCV——PS滤镜算法之 Ellipsoid (凹陷)
- 生成全排列的两种方法
- 树莓派在身份证件核验领域应用 之 后台服务器
- inifile 一个轻量级的INI文件解析库
- Java进阶之欧拉工程 第六篇【持续更新】
- Attribute "showAsAction" is only used in API level 11 and higher (current min is 8)
- hdu 2907 凹陷面
- VC/MFC 滑动条Slider的用法
- 技术走向管理一些思考(4)-如何建设团队
- 八一八公司那些不专业的人和事
- 西红柿炒鸡蛋的5个小窍门
- 阿里面试数据库知识
- 挑选什么样的鱿鱼最好?
- ASP.NET MVC 4 批量上传文件
- SSH(struts+spring+hibernate)