#include
#include
#include
#include
using
namespace
std;
struct rode
;int minlen=1
<<30,tallen,talcost;//當前最優路徑長度,正在走的路的長度,花銷
vector
> cityway(105);//cityway[i]是從i有路連線到的城市集合,二維陣列
int visited[105];//判重標記,visited[i]=ture,表示i已經走過
int minl[105][10005];//minl[i][j]表示從1到i的,花銷為j的最短路長度
int k,n,r;
void dfs(int s)//從s開始想n行走
for (int i=0;iint d=cityway[s][i].d;//s有路連到d
if(!visited[d])
}}int main()
for (int i=0;i<105;i++)
memset(visited,0,sizeof(visited));//標誌清零
tallen=0; talcost=0;
minlen=1
<<30;
visited[1]=1;//第乙個走過
dfs(1);
if(minlen<(1
<<30))//若改變了,比最大值小
cout
cout
<<"-1"
0;}
生日蛋糕 (poj1190)
description
7月17日是mr.w的生日,acm-thu為此要製作乙個體積為nπ的m層生日蛋糕,每層都是乙個圓柱體。
設從下往上數第i(1 <= i <= m)層蛋糕是半徑為ri, 高度為hi的圓柱。當i < m時,要求ri > ri+1且hi > hi+1。
由於要在蛋糕上抹忌廉,為盡可能節約經費,我們希望蛋糕外表面(最下一層的下底面除外)的面積q最小。
令q = sπ
請程式設計對給出的n和m,找出蛋糕的製作方案(適當的ri和hi的值),使s最小。
(除q外,以上所有資料皆為正整數)
input
有兩行,第一行為n(n <= 10000),表示待製作的蛋糕的體積為nπ;第二行為m(m <= 20),表示蛋糕的層數為m。
output
僅一行,是乙個正整數s(若無解則s = 0)。
sample input
100
2 sample output
68 hint
圓柱公式
體積v = πr2h
側面積a』 = 2πrh
底面積a = πr2
剪枝 剪枝1:搭建過程中發現已建好的面積已經不小於目前求得的最優表面
積,或者預見到搭完後面積一定會不小於目前最優表面積,則停止搭建
(最優性剪枝)
剪枝2:搭建過程中預見到再往上搭,高度已經無法安排,或者半徑已
經無法安排,則停止搭建(可行性剪枝)
剪枝3:搭建過程中發現還沒搭的那些層的體積,一定會超過還缺的體
積,則停止搭建(可行性剪枝)
剪枝4:搭建過程中發現還沒搭的那些層的體積,最大也到不了還缺的
體積,則停止搭建(可行性剪枝)
#include
#include
#include
#include
using
namespace
std;
int n,m;
int area;//正在搭建的面積
int minarea=1
<<30;//最優表面積
int minv[25];//minv[i],i層蛋糕最少的體積
int mina[25];//mina[i]i層蛋糕最少側面積
int maxf(int n,int r,int h)
void dfs(int v,int n,int r,int h)
}if (v<=0) return ;//體積不存在
if(hreturn;//最大半徑,高度比層數小(最小半徑高度)
if(minv[n]>v) return ;//當前體積小於最小體積
if(mina[n]+area>=minarea) return ;//當前面積比最小面積要大,剪枝
if(maxf(n,r,h)return ;//當前最大體積比要求的小
for (int rr=r;rr>=n;rr--)
}}int main()
if (minv[m]>n)
cout
<<0
網路尋路 深搜
問題描述 x 國的乙個網路使用若干條線路連線若干個節點。節點間的通訊是雙向的。某重要資料報,為了安全起見,必須恰好被 兩次到達目的地。該包可能在任意乙個節點產生,我們需要知道該網路中一共有多少種不同的 路徑。源位址和目標位址可以相同,但中間節點必須不同。如下圖所示的網路。1 2 3 1 是允許的 1...
深搜Dfs遍歷節點以及尋路
深搜遍歷從起點出發能走的所有節點 對於乙個節點,只要發現了沒走過的點就走到它,如果有多個點可走就任選乙個 遞迴呼叫 由於是從起點開始遍歷,因此遍歷過程也是產生路徑的過程 因此深搜遍歷是有路徑資訊的 單純的根據資料結構遍歷所有點是沒有路徑資訊的 dfs v 深搜遍歷圖上所有節點,注意區分僅僅呼叫dfs...
深搜剪枝 生日蛋糕
時間限制 1 sec 記憶體限制 128 mb 提交 14 解決 8 提交 狀態 討論版 命題人 add cy 7月17日是mr.w的生日,acm thu為此要製作乙個體積為n 的m層生日蛋糕,每層都是乙個圓柱體。設從下往上數第i 1 i m 層蛋糕是半徑為ri,高度為hi的圓柱。當i m時,要求r...