摘要:
废话不多说,这个题目为二分图最大匹配:把n行每一行看成一个点,共有n个点;把m列每一列看成一个点,共有m个点。当格子为灰色时,把这个格子所属的行的点与列的点连边,这样就构成一个二分图。 VAR cover:array[1..10000]of boolean; link,v:array[1..10000]of longint; map:array[1..10000,1..100]of lon... 阅读全文
摘要:
题目的大意是给你一些相同的立方体,共有1..N这些位置,开始每个位置上只含一个立方体,每个立方体标号1..N,然后让你执行p个操作,但只有两种操作:Move(移动)和 Count(计数)。 1)Move,输入格式M x y,意思为将当前位置为x的那些立方体堆叠到当前位置为y的那些立方体上面 2)Count,输入格式 C x,意思为查询当前标号为x的立方体下面堆叠了多少个立方体(不包含它自身) ... 阅读全文
摘要:
求树的最长链,用了SPFA+SLF(表示BFS就可以,作者纯属DT) [pascal 代码] Const maxn=100000; maxq=1000000;VAR a,b,e,dis,f:array[1..maxn]of longint; q:array[1..maxq]of longint; vis:array[1... 阅读全文
摘要:
这道题可以用树形DP,也可以直接01背包,因为每个物品的附件不能再作为主件,所以选取每个物品就只有这几种可能的情况:不选这个物品、选取这个物品、选取这个物品及它的一个附件、选取这个物品及它的两个附件。很容易地想出来这是个背包问题。 用f[i,j]表示前i件物品用了j元钱获得的最大价值(即重要度与价值的成绩最大),那么状态转移方程是 f[i,j]=max{ f[i-1,j],//不选这件物品 ... 阅读全文