洛谷 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)个相异的点,在其中任何一个点上放一个很小的油滴,那么这个油滴会一直扩展,直到接触到其他油滴或者框子的边界.必须等一个油滴扩展完毕才能放置下一个油滴. ...
随机推荐
- synchronized使用说明
好久没有更新博客了,今天试着用简单的语言把synchronized的使用说清楚. synchronized是什么? synchronized是用来保证在多线程环境下代码同步执行的可重入的互斥锁.所谓互 ...
- AM335x kernel 4.4.12 i2c eeprom AT24c02驱动移植
kernel 4.4.12 i2c eeprom AT24c02驱动移植 在kernel make menuconfig ARCH=ARM 中打开: Device Drivers ---> Mi ...
- PhotoSwipe插件的使用
1.首先引入插件 <link rel="stylesheet" href="css/photoswipe.css"> <link rel=&q ...
- linux Mint18 backspace怎么不能连续删除
打开菜单--->首选项--->键盘,如下图所示: 打开启用重复按键即可,就可以随心所欲的连续删除,连续移动光标了
- [PHP][位转换积累]之异或运算的简单加密应用
异或的符号是^.按位异或运算, 对等长二进制模式按位或二进制数的每一位执行逻辑按位异或操作. 操作的结果是如果某位不同则该位为1, 否则该位为0. xor运算的逆运算是它本身,也就是说两次异或同一个数 ...
- mysqldump和xtrabackup备份原理实现说明
背景: MySQL数据库备份分为逻辑备份和物理备份两大类,犹豫到底用那种备份方式的时候先了解下它们的差异: 逻辑备份的特点是:直接生成SQL语句,在恢复的时候执行备份的SQL语句实现数据库数据的重现. ...
- 442. Find All Duplicates in an Array
https://leetcode.com/problems/find-all-duplicates-in-an-array/ 一列数,1 ≤ a[i] ≤ n (n = size of array), ...
- links and softwares
links 普通 http://www.ncpa-classic.com//special/2014gejujie/index.shtml ; 中国大剧院 http://tieba.baidu.com ...
- 网页端打开手机上的app
iOS/Android 浏览器(h5)及微信中唤起本地APP 在移动互联网,链接是比较重要的传播媒质,但很多时候我们又希望用户能够回到APP中,这就要求APP可以通过浏览器或在微信中被方便地唤起. 这 ...
- Java_File类讲解_打印目录树状结构_递归算法
package cn.xiaocangtian.testFile; import java.io.File; public class FileTree { public static void ma ...
