AtCoder Beginner Contest 286(CDE)

一个长度为n的字符串,操作A可以把字符串第一个字母移动到最后一个,其他位置保持不变,操作B可以把一个字符变成其他任意字符。操作A,操作B的费用分别为A,B请问把这个字符串变成回文需要花费多少。
我们发现操作1和操作2的顺序是不影响结果的,我们可以暴力枚举一下即可,数据5000,可以跑过去。


N种硬币,第i种有Bi个价值Ai,我们是否可以组合出价值为X的组合,是输出Yes,否输出No.
经典背包问题,多重背包,我们可以拆分为多个01背包,涉及方案数问题,统计类背包,需要将初始化f[0]=1,f[j]+=f[j-a],这样子只有当恰好组合出价值为X的方案时我们f[x]才会增加,并且f[x]的值就是组合出价值为X的方案总数。


题目大意
给定一张有向图,边权均为1,给定点权。
有 q个询问,每个询问问从x点到 y点,其边权和最小是多少,在最小的前提下,点权和最大是多少。不能到达则输出 Impossible
。
解题思路
Floyd 的应用。为了方便转移,一段长度大于1 的路径中纪念品的总价值先不计算起点,等到最后统计时再加上。注意只有边数更短,或者相同边数且纪念品总价值更高时才能更新。
代码展示
