魅力值比较

【问题描述】

大学生恋爱的问题造成了数量众多的异地恋,有许多J大的女生早早被Q大男生追走,这导致了J大男生的强烈不满。就在吐血高调地向一位J大美女展开攻势的之后,J大男生终于爆发了。

为了保护稀缺的女生资源,他们终于向Q大男生发起了挑战。J大选出了n个最帅的男生,要与Q大男生比帅,如果J大获胜,吐血就必须放弃对J大美女的追求。为了学弟的幸福,更为了维护Q大的形象,作为Q大的男生,当然不能示弱。

比赛规则很简单,两校各出n个男生,分别以姓名(拼音小写)按照字典顺序排序后依次比较,每个男生有一个魅力值,每场较量魅力值高者获胜,胜者方得1分。最后总分高的一方获胜。

吐血已经从F大的好友超级宇宙霹雳无敌金刚转世小间谍wx那里获取了J大最帅的n个男生的情报,Q大将据此从m个男生中选出n个男生应战。虽然Q大胜券在握,但考虑到两家的秦晋之好,避免给J大MM留下太狂妄的印象,吐血希望在保证Q大获胜的前提下,两家得分差距尽量小。

【输入格式】

输入文件的第一行是两个整数n和m。接下来n行,每行一个不含空格的字符串和一个整数,分别表示一个J大男生的姓名和魅力值。接下来m行,每行一个不含空格的字符串和一个整数,表示一个Q大男生的姓名和魅力值。

【输出格式】

输出文件仅有一行,如果Q大能够获胜,那么输出在保证Q大获胜的情况下得分的最小差值。如果Q大无法获胜,输出”jiong”。

-----------------------------------------------------------------------------

显然Dp,分分钟想到f[i][j][k]的Tle无极限Dp- =

科学的动归如下

  状态:f[i][j] 表示和J大学的前i人比完后相差j的分数至少需要使用到Q大的第几人

       next[i][j][k]表示要和J的的第i人比,且Q大的前j人已经使用了,

     k==0表示战胜Q大(1),k==1表示平手(0),k==2表示战败(-1)时至少需要使用到Q大的第几个人

  转移:f[i][j]=min(next[i][f[i-1][j-1]][0],next[i][f[i-1][j]][1],next[i][f[i-1][j+1]][2])

  答案就是 f[n][k] k>0且f[n][k]<=m中k的最小值,找不到就是'囧'

05-11 22:54