poj 1873

哇实验室里正在吵架,爽死了!

wf水题。显然二进制枚举,注意剪枝,val>ans的时候剪一下,不然会tle。然后就没惹。

我老人家一开始写了个

感觉非常垃圾,wa了一发又t了一发。

感觉自己可以退役了

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <cmath>
 4 #include <iostream>
 5 #include <iomanip>
 6 #include <algorithm>
 7 #include <vector>
 8 typedef double db;
 9 #define pdd pair<db,db>
10 const db eps = 1e-6;
11 const db pi = acos(-1);
12 using namespace std;
13 int sign(db k){
14     if (k>eps) return 1; else if (k<-eps) return -1; return 0;
15 }
16 int cmp(db k1,db k2){return sign(k1-k2);}
17 struct point{
18     db x,y;
19     db v,l;
20     point operator + (const point &k1) const{return (point){k1.x+x,k1.y+y};}
21     point operator - (const point &k1) const{return (point){x-k1.x,y-k1.y};}
22     point operator * (db k1) const{return (point){x*k1,y*k1};}
23     point operator / (db k1) const{return (point){x/k1,y/k1};}
24     bool operator <(const point &k1)const {
25         int c=cmp(x,k1.x);
26         if(c)return c==-1;
27         return cmp(y,k1.y)==-1;
28     }
29     db abs(){ return sqrt(x*x+y*y);}
30     db dis(point k1){return ((*this)-k1).abs();}
31 };
32 db cross(point k1,point k2){return k1.x*k2.y-k1.y*k2.x;}
33 db dot(point k1,point k2){return k1.x*k2.x+k1.y*k2.y;}
34 vector<point> convexHull(vector<point> ps){
35     int n = ps.size();if(n<=1)return ps;
36     sort(ps.begin(),ps.end());
37     vector<point> qs(n*2);int k=0;
38     for(int i=0;i<n;qs[k++]=ps[i++])
39         while (k>1&&cross(qs[k-1]-qs[k-2],ps[i]-qs[k-2])<=0)--k;
40     for(int i=n-2,t=k;i>=0;qs[k++]=ps[i--])
41         while (k>t&&cross(qs[k-1]-qs[k-2],ps[i]-qs[k-2])<=0)--k;
42     qs.resize(k-1);
43     return qs;
44 }
45 int n;
46 point p[19];
47 vector<point> v;
48 db res=0,sum=1e9;int ans=-1;
49 void slove(int x){
50     v.clear();
51     db l1=0,val=0;
52     for(int i=0;i<n;i++){
53         if(1&(x>>i)){//砍了
54             l1+=p[i].l;
55             val+=p[i].v;
56         } else{
57             v.push_back(p[i]);
58         }
59     }
60     if(cmp(val,sum)>=0)
61         return;
62     v=convexHull(v);
63     db l2=0;
64     for(int i=0;i<v.size();i++){
65         l2+=v[i].dis(v[(i+1)%v.size()]);
66     }
67     if(v.size()==1)l2=0;
68     if(cmp(l1,l2)>=0){//阔以
69         sum=val;
70         res=l1-l2;
71         ans=x;
72     }
73 }
74 int main(){
75     int cas = 0;
76     while (scanf("%d",&n)&&n){
77         cas++;
78         for(int i=0;i<n;i++){
79             scanf("%lf%lf%lf%lf",&p[i].x,&p[i].y,&p[i].v,&p[i].l);
80         }
81         for(int i=1;i<(1<<n)-1;i++){
82             slove(i);
83         }
84         if(cas>=2)printf("\n");
85         printf("Forest %d\n",cas);
86         printf("Cut these trees:");
87         for(int i=0;i<n;i++){
88             if((ans>>i)&1){
89                 printf(" %d",i+1);
90             }
91         }
92         printf("\nExtra wood: %.2f\n",res);
93         res=0,sum=1e9;
94     }
95 }
View Code

 

转载于:https://www.cnblogs.com/MXang/p/10446854.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/351294.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

汉中计算机培训班学费是多少,汉中远程教育培训班收费多少

汉中远程教育培训班收费多少&#xff1f;在企事业单位&#xff0c;无论你的从业履历有多么辉煌&#xff0c;没有本科学历就是一道硬伤。在这个层面上&#xff0c;本科学历是你求得工作的一块“敲门砖”。还有&#xff0c;很多企事业单位是靠学历论薪或者晋职加薪的重要条件&…

wadl_WADL中的JSON模式

wadl在其他工作之间&#xff0c;我最近一直在审查WADL规范&#xff0c;以解决一些文档问题&#xff0c;以生成更新版本。 因为显而易见的一件事是缺少对XML以外的语言的语法支持-是的&#xff0c;您可以使用JSON <-> XML Schema的映射&#xff0c;但这对于JSON纯粹主义者…

计算机资源管理器课件,计算机基础课件ppt-第5讲控制面板与资源管理器.pdf

第五讲控制面板资源管理器与 深入理解控制面板本章重点1、资源管理器2、控制面板3、磁盘管理4、附件5、注册表管理文件和文件夹s查看本机的内容1、双击 “我的电脑”2、双击要查看的磁盘3、双击屏幕上显示出的文件或文件夹便可打开一个文件或显示文件夹中的文件。资源管理器资源…

python中ascii码和字符的转换

将ASCII字符转换为对应的数值即‘a’-->65&#xff0c;使用ord函数,ord(a)反正&#xff0c;使用chr函数&#xff0c;将数值转换为对应的ASCII字符&#xff0c;chr(65)

Java操作MongoDB之mongodb-driver

mongodb-driver是mongo官方推出的java连接mongoDB的驱动包&#xff0c;相当于JDBC驱动。 通过一个入门的案例来了解mongodb-driver的基本使用&#xff1a; 1、查询全部记录 1.1、创建工程mongoDemo&#xff0c;引入依赖 <dependency><groupId>org.mongodb</grou…

具有Stormpath和Spring Boot的OAuth 2.0令牌管理

建筑物身份管理&#xff0c;包括身份验证和授权&#xff1f; 尝试Stormpath&#xff01; 我们的REST API和强大的Java SDK支持可以消除您的安全风险&#xff0c;并且可以在几分钟内实现。 注册 &#xff0c;再也不会建立auth了&#xff01; OAuth 2.0令牌管理经常被误解并且难…

5c用计算机怎么打,再一次谈谈%5c暴库的利用 -电脑资料

再一次谈谈%5c暴库的利用技术&#xff0c;原因我只找到含糊的说法&#xff1a;/的UNICODE是%5c当提交时,IIS无法正常解析,导致暴库&#xff0c;还有很多人说不成功&#xff0c;我要说的三点&#xff1a;1。一般的错误返回页面是本地IE提供的,所以我们先得关了本地的错误页面,具…

CentOS 6.4安装pip,CentOS安装python包管理安装工具pip的方法

之前有的朋友问我&#xff0c;CentOS版本怎么安装python的pip&#xff0c;我之前给出的Ubuntu下apt-get的方法 ubuntu 需要先安装下pip吧&#xff0c; apt-get install python-pip 安装requests&#xff0c; pip install requests 但是有的朋友由于是centos的&#xff0c;直接…

计算机网络原理如何修改本机mtu值,电脑的本地mtu值要怎么设置

相信很多人在玩dota2时都会出现使用wifi联网卡顿的现象&#xff0c;往往是电脑mtu值设置出现问题。下面由学习啦小编为你整理了电脑的本地mtu值要怎么设置的相关方法&#xff0c;希望对你有帮助!电脑设置mtu值的方法如下MTU值是按照TCP/IP协议传输数据报时的最大传输单元。从本…

Python 编程精选

↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑为了方便查找&#xff0c;请看目录&#xff08;手机端就没有目录哦&#xff09; 注&#xff1a;本文篇幅较大&#xff0c;请耐心等待&#xff08;power by 《Python黑帽子:黑客与渗透测试编程之道 》&#xff0…

Docker 内程序时间设置,很重要

Docker 内程序时间设置&#xff0c;很重要 原文:Docker 内程序时间设置&#xff0c;很重要重要!!!!! 创建容器时候需要修改一个参数,设置tomcat的时区 -e TZ"Asia/Shanghai" -v /etc/localtime:/etc/localtime:roposted on 2019-03-02 15:15 NET未来之路 阅读(...) 评…

计算机教师专业发展论文,关于教师专业发展的计算机专业论文

1教师专业发展内涵阐述1.1专业知识发展教师的专业知识是教书育人的前提。计算机教师的专业知识包括三个方面&#xff1a;一是日常生活、人文素养等基础文化知识&#xff1b;二是教育理论、教学方法等教育学科知识&#xff1b;三是综合的计算机学科专业知识。1.2专业能力发展教师…

[BZOJ1497] [NOI2006]最大获利

Description 新的技术正冲击着手机通讯市场&#xff0c;对于各大运营商来说&#xff0c;这既是机遇&#xff0c;更是挑战。THU集团旗下的CS&T通讯公司在新一代通讯技术血战的前夜&#xff0c;需要做太多的准备工作&#xff0c;仅就站址选择一项&#xff0c;就需要完成前期市…

谷歌guava_Google Guava –期货

谷歌guava这篇文章是我在Google Guava上的系列文章的延续&#xff0c;这次涵盖了Future。 Futures类是用于使用Future / ListenableFuture接口的静态实用程序方法的集合。 Future是已提交给ExecutorService的异步任务&#xff08;可运行或可调用&#xff09;的句柄。 Future接口…

北航计算机组成原理ppt,北航计算机组成原理课件.ppt

北航计算机组成原理课件本讲内容 透视计算机&#xff1a;计算机组成与结构总结 组成部件 内部连接 理解计算机&#xff1a;机器指令的执行过程 计算机最基本的操作与控制&#xff1a;微操作 指令的执行过程 程序的执行 计算机的时序控制方式 时序系统简介 计算机结构(Architect…

urllib2使用总结

keywords: urllib2,BeautifulSoup,cookielib 题外话: 小弟是编程爱好者&#xff0c;各位看官轻拍。 最近在使用urllib2抓取网页内容&#xff0c;在学习的过程中也查阅了不少资料,并从中收获很多。在查阅资料的过程中&#xff0c;我发现大部分资料都是建立在对urllib2的熟悉基…

Linux基础第五课——用户管理

用户管理 一个用户必须有一个主组一个用户可以拥有多个组 但是必须一个主组 其它组是临时组一个组可以拥有多个用户用户的信息放到 /etc/passwd 用户的密码 存入 /etc/shadow 组信息存到 /etc/group添加用户 add useradd shengliang 这时候会在 /etc/passwd 下生成一条记录 she…

降调软件测试自学,普通话测试及变调.ppt

普通话测试及变调(二)去声变调 当两个去声字相连&#xff0c;前面的去声字不读重音的时候&#xff0c;调值由全降变为半降&#xff0c;51变为53。 错误 汉字 介绍 注意 外地 善意 艺术 戏剧 预告 降落 锻炼 倒退 大会 自治 迫害 照相 木料 正确 “一”变调?? ?1.??“一”在…

信守承诺:JAX-RS API的基于合同的测试

自从我们谈论测试和应用有效的TDD实践以来已经有一段时间了&#xff0c;特别是与REST&#xff08;ful&#xff09; Web服务和API相关的实践。 但是&#xff0c;这个主题永远都不应忘记&#xff0c;特别是在每个人都在做微服务的世界中&#xff0c;无论它意味着什么&#xff0c;…

P2084 进制转换

原题链接 https://www.luogu.org/problemnew/show/P2084 这个题的思路就是先将输入的数字存到字符数组里&#xff0c;然后求出这一串数字中的非0元素的个数total&#xff0c;并记录最后一位非0元素的位置。输出时&#xff0c;先输出total-1个&#xff0c;最后再补上第total个&a…