题目大意是给出两行数,第一行上的数和第二行上相同的数连接算一个匹配,一个匹配成立当且仅当它和另一个不同的数的匹配交叉且仅能有一个交叉,且一个数不能与多个数匹配。求给出的两行数最多可以有多少个有效匹配。
这又是一个经典的最优匹配数DP模型,方程的推导思想和ZJU/ZOJ 1027类似,不过本题多了一个条件限制,要求一个数不能匹配多个数且要求匹配交叉才算有效匹配。因此我们可以做一个预处理,用一个记录每一行中某个位置前出现过的所有数字的离它最近的位置,则可以推导出状态转移方程是f[i,j]=max(f[i-1,j],f[i,j-1],f[pos1[i,num2[j]]-1,pos2[j,num1[i]]-1]+2)(2<=i<=n1,2<=j<=n2);其中f[i,j]表示用第一行的前i个数字和第二行的前j个数字匹配所能得到的最大有效匹配数,pos1[i,num2[j]]表示距离第一行第i个数最近的第二行第j个数的位置,pos2[j,num1[i]]表示距离第二行第j个数最近的第一行第i个数的位置。f[pos1[i,num2[j]]-1,pos2[j,num1[i]]-1]+2有效的前提是num1[i]<>num2[j]且pos1[i,num2[j]]>0和pos2[j,num1[i]]>0。
3004961 2008-07-25 18:44:54 Accepted 1425 FPC 00:00.00 432K IwfWcf@LZOI
会不会有问题?如果num1[i]=num2[j]的话。应该是不能连线的吧?但是你这个是不是把这个也算作可以的了?
回复删除PS:本人是初学者,如果讲错了什么,请担待。。。
题目意思是指交叉的必须是不同的数,但要求连接的是相同的数
回复删除你的意思是不是相当于pos1[i,num2[j]]和j连线,pos2[j,num1[i]]和i连线?
回复删除如果是的话,那如果num1[i]=num2[j]的话,这4个数应该都是相等的吧?那这样的交叉是不是不合法?
f[pos1[i,num2[j]]-1,pos2[j,num1[i]]-1]+2有效的前提是num1[i]<>num2[j],之所以要剪1就是为了保证交叉也是成立的,剪1之后交叉的匹配就是不同的数,不会出现4数相等
回复删除已经编辑了文章,写的时候没写清楚,感谢你的提醒
回复删除qihang0922,instyler max
回复删除tory burch outlet
ralph lauren outlet
gucci borse
jordan pas cher
ugg boots
longchamp handbags
air max
mulberry handbags
timberland boots
uggs on sale
mont blanc
fitflops sale clearance
michael kors handbags
air max 90
ugg sale
louis vuitton pas cher
replica watches
burberry outlet
ugg boots clearance
ugg outlet
fake oakleys
nike tn
pandora jewelry
louboutin
christian louboutin uk
hermes uk
cheap uggs
cheap jerseys
toms shoes
kate spade handbags
gucci shoes
michael kors
nike air force 1
nike air huarache
ray ban outlet
adidas superstar
tod's shoes
q
coach factory outlet
回复删除christian louboutin heels
michael kors outlet online
prada handbags
tiffany and co
coach factory outlet
canada goose sale
abercrombie and fitch
coach outlet store online clearances
ugg slippers
201612.26chenjinyan
cheap jordan shoes
回复删除ugg boots
ralph lauren outlet
michael kors outlet
nike free run
nhl jerseys
coach outlet
ugg outlet
mont blanc outlet
ugg boots
i0c57s1k84 j9n55h6t81 j9e23q9e07 g2i95d7o38 v9s79s9x66 a4z90p0s76
回复删除