摘要:
题意:现给定一个字符集中一共Z个元素的环境,给出一个Z*Z的数组,表示从i到j之间的距离。给定两组字符串,分别问包含着两个字符串(给定的字符串为所求字符串的子序列不是子串)对应位的距离和值最小为多少?输出这两个字符串。分析:该题的状态还是比较好开设的,设dp[i][j]表示a串的前i个字符和b串的前j个字符被包含后的最小开销,于是动态转移方程:dp[i][j] = min(dp[i][j], dp[i-1][j] + wa[sa[i]]); 其中wa数组表示某个字符与另外一个最小花费的字符匹配,sa[i]表示a串的第i个字符dp[i][j] = min(dp[i][j], dp[i][j-1] 阅读全文
摘要:
题意:国王有N个儿子,现在每个儿子结婚都能够获得一定的喜悦值,王子编号为1-N,有N个女孩的编号同样为1-N,每个王子心中都有心仪的女孩,现在问如果安排,能够使得题中给定的式子和最大。分析:其实题目中那个开根号是个烟雾弹,只要关心喜悦值的平方即可。那么对王子和女孩之间构边,边权为喜悦值的平方,对于每一个王子虚拟出一个女孩边权为0,这样是为了所有的王子都能够有女孩可以配对,以便算法能够正确的执行。#include #include #include #include #include using namespace std;const int N = 405;const int inf = 0x 阅读全文
摘要:
题意:该题的题意晦涩,勉勉强强听别人说了一遍后再读了一遍题才算懂了题意,题图说的是A国因为B国药进攻自己的国家,于是想办法在联通A-B之间的路径上进行阻击。阻击的舰船停留在一个路径上,舰船上都要放置水晶,相同水晶的舰船可能会被一次性摧毁,于是现在要求给出尽可能多的方案来部署舰船,使得同一水晶的舰船能够阻断所有从B到A的路径,每条路径上只能够部署一部舰船。分析:题意抽象之后就是一个网络求出从源点到汇点的尽可能多的割边集,且每个割边集没有公共边。根据题目的要求,我们设想从A到B的最短路长度为K,那么假设方案数大于K,那么每个割边集至少要包含该最短路上的一条边,否则存在从A到B的通路,那么这个包含的 阅读全文