洛谷 P1378 油滴扩展 Label:搜索
题目描述
在一个长方形框子里,最多有N(0≤N≤6)个相异的点,在其中任何一个点上放一个很小的油滴,那么这个油滴会一直扩展,直到接触到其他油滴或者框子的边界。必须等一个油滴扩展完毕才能放置下一个油滴。那么应该按照怎样的顺序在这N个点上放置油滴,才能使放置完毕后所有油滴占据的总体积最大呢?(不同的油滴不会相互融合)
注:圆的面积公式V=pi*r*r,其中r为圆的半径。
输入输出格式
输入格式:
第1行一个整数N。
第2行为长方形边框一个顶点及其对角顶点的坐标,x,y,x’,y’。
接下去N行,每行两个整数xi,yi,表示盒子的N个点的坐标。
以上所有的数据都在[-1000,1000]内。
输出格式:
一行,一个整数,长方形盒子剩余的最小空间(结果四舍五入输出)
输入输出样例
2
20 0 10 10
13 3
17 7
50
代码
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394#include<iostream>#include<cstring>#include<algorithm>#include<cstdio>#include<vector>#include<cstdlib>#include<cmath>#define ll long long#define eps 1e-8#define INF 0x3f3f3f3f#define pi 3.141592653589usingnamespacestd;structcc{doublex,y;}nod[10];doubled_nod[10][10],d_wall[10];doubler[10];intN,S,vis[10];doubleans;doublecal_d(inti,intj){doublex1=nod[i].x,y1=nod[i].y,x2=nod[j].x,y2=nod[j].y;returnsqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));}doublecal_s(doubler){returnpi*r*r;}voidinit_(){doublex1,x2,y1,y2;scanf("%d",&N);scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2);S=abs(x1-x2)*abs(y1-y2);for(inti=1;i<=N;i++){scanf("%lf%lf",&nod[i].x,&nod[i].y);}for(inti=1;i<=N;i++){for(intj=i+1;j<=N;j++){d_nod[i][j]=d_nod[j][i]=cal_d(i,j);}}memset(d_wall,0x3f,sizeof(d_wall));for(inti=1;i<=N;i++){doublex=nod[i].x,y=nod[i].y;d_wall[i]=min(abs(x-x1),abs(x-x2));doubletmp=min(abs(y-y1),abs(y-y2));d_wall[i]=min(tmp,d_wall[i]);}}voiddfs(intx,intdep){doublenowr=d_wall[x];for(inti=1;i<=N;i++){if(i==x)continue;if(vis[i]) nowr=min(nowr,d_nod[x][i]-r[i]);}if(nowr<0) nowr=0;r[x]=nowr;if(dep==N){doublesum=0.0;for(inti=1;i<=N;i++) sum+=cal_s(r[i]);ans=max(ans,sum);// for(int i=1;i<=N;i++) cout<<r[i]<<endl;// puts("-------------");return;}vis[x]=1;for(inti=1;i<=N;i++){if(!vis[i]) dfs(i,dep+1);}r[x]=0;vis[x]=0;}voidwork(){for(inti=1;i<=N;i++) dfs(i,1);cout<<(int(S-ans+0.5))<<endl;}intmain(){// freopen("01.in","r",stdin);init_();work();return0;}这是我写过的最最最朴素的搜索,没有之一
Line 59 这样写只有60分 nowr=min(nowr,d_nod[x][i]-r[i]);
然后圆周率总得背几位出来吧
给你萌安利一个背数字的好方法,想背啥把啥当作手机密码或者某个账的密码
听3.14159265358979323846
不仅可以锻炼记忆力,还可以让你戒掉手机hhh
洛谷 P1378 油滴扩展 Label:搜索的更多相关文章
- 洛谷P1378 油滴扩展(搜索)
洛谷P1378 油滴扩展 直接暴力搜索更新答案就可以了. 时间复杂度为 \(O(n!)\) . #include<stdio.h> #include<stdlib.h> #in ...
- 洛谷P1378 油滴扩展
P1378 油滴扩展 题目描述 在一个长方形框子里,最多有N(0≤N≤6)个相异的点,在其中任何一个点上放一个很小的油滴,那么这个油滴会一直扩展,直到接触到其他油滴或者框子的边界.必须等一个油滴扩展完 ...
- 洛谷 P1378 油滴扩展 改错
P1378 油滴扩展 题目描述 在一个长方形框子里,最多有\(N(0≤N≤6)\)个相异的点,在其中任何一个点上放一个很小的油滴,那么这个油滴会一直扩展,直到接触到其他油滴或者框子的边界.必须等一个油 ...
- 洛谷 P1378 油滴扩展
P1378 油滴扩展 题目描述 在一个长方形框子里,最多有N(0≤N≤6)个相异的点,在其中任何一个点上放一个很小的油滴,那么这个油滴会一直扩展,直到接触到其他油滴或者框子的边界.必须等一个油滴扩展完 ...
- 洛谷P1378油滴扩展
题目描述 在一个长方形框子里,最多有N(0≤N≤6)个相异的点,在其中任何一个点上放一个很小的油滴,那么这个油滴会一直扩展,直到接触到其他油滴或者框子的边界. 必须等一个油滴扩展完毕才能放置下一个油滴 ...
- 洛谷1378 油滴扩展 dfs进行回溯搜索
题目链接:https://www.luogu.com.cn/problem/P1378 题目中给出矩形的长宽和一些点,可以在每个点放油滴,油滴会扩展,直到触碰到矩形的周边或者其他油滴的边缘,求出剩余面 ...
- P1378 油滴扩展——搜索小记
P1378 油滴扩展 记得这道题好久以前(好像是上个学期?) 就想做了,但是看着里面的半径边界好像很难处理就没做(主要是当时刚学OI(菜还给自己找借口)): 今天上午一直研究SG函数,做的都自闭了,晚 ...
- [动态规划]P1378 油滴扩展
题目描述 在一个长方形框子里,最多有N(0≤N≤6)个相异的点,在其中任何一个点上放一个很小的油滴,那么这个油滴会一直扩展,直到接触到其他油滴或者框子的边界.必须等一个油滴扩展完毕才能放置下一个油滴. ...
- P1378 油滴扩展
题目描述 在一个长方形框子里,最多有N(0≤N≤6)个相异的点,在其中任何一个点上放一个很小的油滴,那么这个油滴会一直扩展,直到接触到其他油滴或者框子的边界.必须等一个油滴扩展完毕才能放置下一个油滴. ...
随机推荐
- 无中间变量交换swap(a,b)
#include <stdio.h> /* 加减法 整型.浮点型(损失精度) */ void swap1(int *a,int *b) { *a=*a+*b; *b=*a-*b; *a=* ...
- Reverse Integer LeetCode Java
Reverse digits of an integer. Example1: x = 123, return 321Example2: x = -123, return -321 public cl ...
- ORACLE发送带附件邮件的二三事之一
在oracle使用过程中,我们可以通过pl/sql生成数据文件,也可以通过spool on spool off生成,但某些环境下,我们需要通过存储过程处理数据,数据处理完,需要自动生成数据文件,手工导 ...
- css-关于位置
当你设置一个你想要相对的模块为relative 你这个模块为absolute 则你的这个absolute会相对relative的那个模块进行移动.
- c/c++ 缓冲区的刷新
利用string 对象查看缓冲区的变化,因为每个string对象在输入时会以空格作为分界. #include<iostream> #include<string> using ...
- git 删除分支
1,删除本地分支 git branch -D 本地分支名 2,删除远程分支 git push origin --delete 远程分支名 注意:如果只删除了本地分支而没有删除远程分支,再新建一个相同名 ...
- ios app内嵌入http服务器
1.采用CocoaHTTPServer https://github.com/robbiehanson/CocoaHTTPServer 2.采用MongooseDaemon https://githu ...
- JHChart iOS图表工具库1.0.3新版本详解
前言. 从2016年4月14日开始,本人着手开发了JHChart图表工具库.经过断断续续的开发,截止到现在,已经实现了折线图.柱状图.饼状图.环形图和表格样式的图表功能.为了方便使用,我已经将一个简单 ...
- 2. Add Two Numbers——Python
题目: You are given two linked lists representing two non-negative numbers. The digits are stored in r ...
- linux的相关指令命令
ls:查看当前所在的目录 whoami:查看当前所在的用户名 who:(查看所有的正在使用的用户名) id:唯一的识别编号(组所在的识别编号) uname -a:显示当前操作系统的版本 cd:切换工 ...
