题意:
给你一个n(200)和d(200),表示你有d种字母,要用他们组成无公共前缀的n个字符串,
接下来给你d个数,以此表示每种字母的花费,问你最小花费
思路:
可以暴力找,首先把d种花费排序,然后存入前d个下标中,如果n>d就后面都存入inf
ans初值为1-n的下标数之和,然后一直用下标为1的那个数当作扩展节点进行扩展,每次扩展d个数,下标为1的节点废除,替换成最后一个节点
然后重新排序,取前n个值更新ans,直到ans比当前的值要小为止即为答案
因为这个过程是先减后增的,一开始前n个数的后几位有可能很大,通过扩充节点可以替换掉他们,使得ans的值减小
然后这个过程会使得前面的数的值增大,当后面的大数替换完成后,肯定会使得前n个数的和一直增大,所以这个过程会有最小值
/* ***********************************************Author :devil************************************************ */#include #include #include #include #include #include #include #include #include