魅力值比较
【问题描述】
大学生恋爱的问题造成了数量众多的异地恋,有许多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的最小值,找不到就是'囧'