题目译自 BalticOI 2015 Day2 File Paths(FIL),原题面见附加文件。
如欲转载翻译,请注明翻译者信息及转载出处。
Byteasar 喜欢冒险的生活。他带着剪刀跑,比赛交题不测样例,并且想要他的所有文件的路径名与操作系统所允许的最大值一样长(例如,在 Linux 下最长为 $4095$ 个字符)。
当 Byteasar 用其他人的电脑时,可能不是所有的文件都符合他的标准。在这种情况下,他尝试去引入符号链接(symlinks)并且用它们创建文件路径。你被要求去计算,对于文件系统的每一个文件,Byteasar 是否能引入仅一个符号链接(长度由他预先确定),使得这个文件的文件路径恰好有 $k$ 个字符。
如果一个文件名为 file 的文件包含在一系列名为 dir1,dir2,……,dirj 的目录之中,那么它的绝对文件路径(absolute file path)是 /dir1/dir2/.../dirj/file。根目录可以用 / 表示,并且每一个直接放在根目录下的文件的绝对路径形式为 /file。
符号链接是指向一个目录且已命名的快捷方式,它可以放置在文件系统的任意目录下。在本题中,符号链接不允许指向文件!使用符号链接,我们可以得到替代的文件路径。例如,我们在 / 下放一个指向 / 的符号链接 hello,那么,/dir/file,/hello/dir/file 与 /hello/hello/dir/file 指的都是同一个文件,但是文件路径长度不同。对于另一个例子,我们在 /dir 下放一个指向 /,名称为 hi 的符号链接,一些可以获得 file 的文件路径为:/dir/file,/dir/hi/dir/file,/dir/hi/dir/hi/dir/file。至于符号链接指向文件系统的上一层,下一层或者同层都是合法的,甚至返回它们放置的文件目录下也是可以的(即,在 /dir 下放置一个指向 /dir 的符号链接)。但是在目录名中,不允许 ./ 或 ../ 或 // 这样的文件操作。