5811

作者: 姜浩_19强化班 | 来源:发表于2020-04-12 11:09 被阅读0次

    题目大意

    构造题。n个点,给出n个点能到达点的数量a[i],构造一个有向图,满足条件。N (1 <= N <= 1000)

    样例解释:

    3

    2 1 0

    表示点1,2,3能到达的点的数量2,1,0;

    构造1->2->3 满足条件。

    要求,构造的图不能有重边,不能有环。

    题目解析

    把a[i]从大到小排序,对于第i个节点,能指向所有大于i的节点,最多能到达(n-i)个节点。

    题目大意

    有n只monster;

    输入一个矩阵mat,表示monster之间的关系;

    mat[i][j]=1表示i怪物能打败j怪物;

    mat[j][i]=0表示i怪物打不过j怪物;

    注意,mat[j][i]=0 <=> mat[i][j]=1 可以互推,但是没有传递性,A能打败B、B能打败C => C能打败A 是不满足的。

    输入m,再输入m个数字,表示挑选出m只monster组成T1队,剩下n-m只monster组成T2队,询问T1队与T2队是否合法 (合法是指存在某种排列,排列中任意一只monster都能打败他右边所有monster)?

    如果合法,最多从T2队中能选出几只monster插入到T1中,并保证T1合法?

    题目解析

    要求1,可以用拓扑排序;(O(n^2))

    要求2,先按照T2队从大到小的顺序,求出T2队中每个monster对应在T1队的位置pos[i],这样就转换成求pos数组的最长不下降子序列;(O(n^2)的dp)

    注意1、2、2、3这种序列是合法的,因为原来T2本来就满足顺序要求(排列中任意一只monster都能打败他右边所有monster);

    相关文章

      网友评论

          本文标题:5811

          本文链接:https://www.haomeiwen.com/subject/bjdvmhtx.html