上一页 1 ··· 19 20 21 22 23 24 25 26 27 ··· 42 下一页
相邻的房子间至少要有1的距离,高度相邻的房子间最多能距离d,根据这些条件建图后,要注意一点要看1和n的相对位置,如果1在n的左边,求1到n的最短路,dis【n】就是答案(排除无解);否则求n到1的最短路,dis【1】就是答案错了好几次,inf设的不够大。。。。。View Code #include<stdio.h>#include<string.h>#include<queue>#include<algorithm>using namespace std;struct node { int h,id;}p[1010];const int INF Read More
posted @ 2011-12-10 18:13 Because Of You Views(411) Comments(0) Diggs(0) Edit
View Code struct PP{ int len,num; bool operator<(const PP &b) const{ return len > b.len; }}dis[30010];priority_queue<PP> Q;int vis[30010];void dijkstra(){ while(!Q.empty()) Q.pop(); int i,j,k; PP tmp; memset(vis,0,sizeof(vis)); for(i=1;i<=n;i++) { dis[i].num=... Read More
posted @ 2011-12-09 17:39 Because Of You Views(589) Comments(0) Diggs(0) Edit
在别人的和擦粉约束列表里搜到的这题,看完题目果断感觉是水题根据s[b]-s[a]<=c来建图最后是求s[n]-s[1]的最大值,从1出发走一遍到n的最短路径就好但是超时了,果断不能接受。。。。别人的做法:用栈来代替spfa的队列,或者用dijkstra+heap来做。。晕倒,总之,又学到了一点。。。View Code #include<stdio.h>#include<stack>#include<string.h>using namespace std;const int INF = 9999999;struct NODE{ int v,w; int Read More
posted @ 2011-12-09 17:38 Because Of You Views(284) Comments(0) Diggs(0) Edit
与intervals那题不同的是这题的点围成了一个圆0、1、2、3、4.。。。23、0一个巧妙地想法是增加一个点24,其他就和intervals那题差不多了,根据约束条件来建图View Code #include<stdio.h>#include<queue>#include<string.h>using namespace std;const int INF = 9999999;struct NODE{ int v,w; int next;}list[10000];int tot;int head[30];int dis[30];int vis[30];i Read More
posted @ 2011-12-09 16:24 Because Of You Views(216) Comments(0) Diggs(0) Edit
真想知道那些几百ms的是怎么写的View Code #include<stdio.h>#include<string.h>#include<math.h>#include<algorithm>using namespace std;struct point { double x,y;}p[100010],q[100010];double ans;inline double dis(point a,point b){ return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));}inline doubl Read More
posted @ 2011-12-09 16:15 Because Of You Views(317) Comments(0) Diggs(0) Edit
还是跟那题poj 1379 run away一样的做法http://www.cnblogs.com/wuyiqi/archive/2011/12/08/2280885.html改一下最优的方法(到n个点的距离之和)就好了View Code //求n边形的费马点//即找到一个点使得这个点到n个点的距离之和最小#include<stdio.h>#include<math.h>#include<stdlib.h>#include<time.h>const double inf = 1e10;const double pi = acos(-1.0);co Read More
posted @ 2011-12-08 16:55 Because Of You Views(1411) Comments(0) Diggs(0) Edit
两个题目一个是求一个点,使得该点到n个点的最大距离的最小值另一个是求一个点,使得该点到n个点的最小距离的最大值好像也不是什么模拟退火的做法,只是一种利用随机函数的做法,遍历一下整个区域找到最优解poj 1379View Code //在某个区域内到某个点集的最小距离最大//随机算法解决//dis[i]表示点i到点集中最小距离的最大值#include<stdio.h>#include<math.h>#include<stdlib.h>#include<time.h>const double inf = 1e10;const double pi = Read More
posted @ 2011-12-08 15:42 Because Of You Views(1131) Comments(0) Diggs(0) Edit
找出一个点使得这个店到n个点的最长距离最短,即求最小覆盖圆的半径用一个点往各个方向扩展,如果结果更优,则继续以当前步长扩展,否则缩小步长View Code #include<stdio.h>#include<math.h>#include<string.h>const double pi = acos(-1.0);struct point { double x,y;}p[1010];int n;point mid,tmid;double R,xmin,ymin,xmax,ymax;double ans,tans;double dis(point a, poi Read More
posted @ 2011-12-08 11:36 Because Of You Views(1174) Comments(0) Diggs(0) Edit
差分约束巧妙地将不等式的关系转换成图论中求最短路径时所用的三角形不等式即如果dis[i]+map[i][j]<=dis[j]交换一下得:dis[i]-dis[j]<=-map[i][j]建边j->i 权值为-map[i][j];核心的方法就是上面的东西了用spfa求最短路View Code #include<stdio.h>#include<queue>#include<string.h>using namespace std;const int INF = 9999999;struct NODE{ int v,w; int next;}l Read More
posted @ 2011-12-07 16:47 Because Of You Views(207) Comments(0) Diggs(0) Edit
析构函数是不能人为调用的,它由编译器根据某对象是否已超出它的作用域来决定是否调用析构函数。上面的析构函数没有做任何有意义的动作,仅仅说明它已经被调用了,这是因为编译器会自动释放该对象所占用的内存空间。如果在构造函数中使用new或其他方法在堆中申请了内存,这时就要在析构函数中使用delete或相应的释放方法去释放内存,否则,系统不会释放内存,这样就会产生内存漏洞。如果没有编写自己的析构函数,那么编译器将产生一个默认析构函数。对于本身就是c++对象的数据成员来说,默认构造函数会调用这些对象的析构函数。 Read More
posted @ 2011-12-07 11:46 Because Of You Views(131) Comments(0) Diggs(0) Edit
上一页 1 ··· 19 20 21 22 23 24 25 26 27 ··· 42 下一页