NKOI3747Pets宠物L1ngYi

暂时没写关于拓补排序和不下降序列的专题…先把这道码量巨大的题写出来,免得忘了…

第一行输入两个数字n和m,分别表示学姐有n只宠物,其中被分到一队的宠物有m只。接下来n行每行n个数字,ai,j表示第i只宠物是否能战胜第j只宠物,保证ai,i=0且ai,j=!aj,i。接下来一行m个数字,表示有哪些宠物被分到了一队。

如果两支队伍均不能让xxxxxyt满意,则输出“NO”;否则输出“YES”,并输出一个最大的k,使得从二队中非任意地抽出k只宠物放入一队后,两支队伍仍然满足条件。详细格式见样例输出。

3201100100031

YES1

430101001110010000123

NO

42010100111001000012

注意:宠物们的实力是相对的,也就是可能会出现A战胜B,B战胜C,C又战胜A的情况。数据范围:20%的数据1<=m

首先要明白,如果想要一个明确的排列顺序,不可能存在A>BB>CC>A的,这不是一个合法的线性排列。

那么,把战胜关系转换成有向图,这种不合法的排列就是一个环的形状。

如何判环,并且如果没有环的情况下能得出一个合法的排列?

这样就不难想到用拓补排序来解决了。(然而考试的时候并没想到,用深搜判环…炸的一塌糊涂…)

因为要分成两组队列,那么就需要把这张图根据队列成员来分开。

通过bool数组实现A序列和B序列的区分,分别单独统计在自己成员内的入度,然后进行拓补排序。

因为拓补排序的删边操作会破坏原图,所以在拓补前先备份一张原图。

如果存在有节点无法拓补排序,即存在环,那么输出NO结束程序。

否则进入第二个问题。

假定A序列长度为m。我们需要知道,序列B的成员i能插入序列A的第j位置,需要满足如下条件:

Aj+1、Aj+2…Am

并且,Bi在Ai的插入位置j必须保持不下降,即不能破坏B的原序列顺序。

那么,这题就又转换到了最长不下降子序列长度问题了。求出每个Bi的插入位置,然后将所得的序列求最长不下降子序列。这样即保证了插入数量最多,又保证了序列没有和B序列冲突。

THE END
1.梦幻西游手游道具链100环详解文档信息主题解析文档铃声的经验和金钱奖励。环,除了“任务完成”的温馨提示,你什么也得不到。甚至系统频道也不愿意显示至少一行文本。2. 运行物品环多少级才能获得100 A:要获得100级的书铁奖励,首先人物等级必须在90级以上,服务器等级必须在100级以上。当然梦幻西游手游花豆,就算满足了这两个条件,也不一定能最终拿到100级书铁的奖励...https://m.18183.com/iphone/xinwen/4452443.html
2.大侠立志传介绍游戏问答体质拳,因为是五维拳法,伤害平常般,可是他的殊效以致伤害比平常的六德拳法伤害都高。https://www.9game.cn/wenda/600393_2.html
1.Java蓝桥杯蓝桥杯java输出自然数1到n所有不重复的排列,即n的全排列。 代码: importjava.util.*; publicclassMain{ staticintn; staticboolean[] visit; staticint[] arr; publicstaticvoidmain(String[] args){ Scannersc=newScanner(System.in); n = sc.nextInt(); ...https://blog.csdn.net/weixin_45040144/article/details/130669406
2.夏色祭两人互动详细内容请参考环夏色祭呼吸圈夏色吹雪部分。 展开一般友情夏色祭 “呼吸” 如上文所言,“呼吸”一词由于祭经常对女孩子表达爱意发情的举动而发扬广大,现如今已基本可以将“呼吸”理解为“花心”、“发情”等。 除了与白上吹雪的牵绊孽缘,祭还会经常做出许多常人难以企及的生草举动,包括但不限于雷普八...https://zh.moegirl.org/%E5%A4%8F%E8%89%B2%E7%A5%AD#%E7%8E%AF%E5%A4%8F%E8%89%B2%E7%A5%AD%E5%91%BC%E5%90%B8%E5%9C%88
3.重新定义高端相机索尼黑卡RX100评测索尼RX100的菜单界面传承自索尼A系统,但自定义功能则完全是针对RX100量身打造。RX100丰富的自定义功能真有些让人眼前一亮的味道。 镜头上的控制环 RX100最令我印象深刻的是镜头上可自定义功能的控制环,它不仅可以是对焦环,也可以是变焦环,还可以是光圈环……这个控制环不仅可以自定义多项功能,并且设计得非常巧妙...http://www.360doc.com/content/12/1120/17/99573_249128461.shtml