題目傳送門:hdu - 4547 cd操作
略求出目錄a 到 b所需要的cd操作次數,這裡的a b 位字串 所以用到map對映,之後直接求lca分情況討論即可:設求a到b的cd運算元
1、a==b 需要的cd運算元是0
2、a是b的最近公共祖先,則a-->b的cd運算元是0
3、b是a的最近公共祖先,則b-->a的cd運算元是 deep[b]-deep[b]
4、若互相不是最近公共祖先,則cd運算元是 deep[a]-deep[lca(a,b)]+1
#include#include#include
#include
using
namespace
std;
const
int max=100009
;const
int m=20
;int head[max],cnt=0
;int
t,n,m;
intup[max][m];
intdis[max];
intdeep[max];
char a[50],b[50
];map
mp;struct
edgeedge[max];
inline
void add(int u,int
v)void dfs(int u) //
dfs遍歷求出深度
}void
init()
int lca(int a,int
b) }
return up[a][0];}
intmain()
for(int i=1;i<=n;i++)
}init();
intres;
for(int i=0;i)
}return0;
}
HDU 4547 CD操作 (離線Tarjan)
在windows下我們可以通過cmd執行dos的部分功能,其中cd是一條很有意思的命令,通過cd操作,我們可以改變當前目錄。這裡我們簡化一下問題,假設只有乙個根目錄,cd操作也只有兩種方式 1.cd 當前目錄名 目標目錄名 中間可以包含若干目錄,保證目標目錄通過絕對路徑可達 2.cd 返回當前目錄的...
設定cd預設路徑加快cd操作
在使用cd時預設當前工作目錄為相對路徑起點,要切換常用資料夾比較麻煩,最近在閱讀bash原始碼時發現了乙個有趣的環境變數,cdpath,可以更改cd預設的路徑。在linux下,如果我們經常使用cd命令進入某乙個特定目錄下的子目錄,你可以將cdpath設定為該目錄,當使用cd進入其下的子目錄時,直接c...
BZOJ4547 Hdu5171 小奇的集合
給有乙個大小為n的可重集s,每次操作可以加入乙個數a b a,b均屬於s 求k次操作後它可獲得的s的和的最大 值。資料保證這個值為非負數 我們先來看看,因為我們要得到最大的s,所以每次我們都要使得a b最大 首先排除一開始得到的a,b為負數的情況,我們將a b放進s裡,那麼下一次操作就會將a a b...