摘要: 题目大意给定两个n阶方阵,方阵B的行i能匹配方阵A的行j当且仅当在第一个方阵中用行向量i替换行向量j后,第一个方阵满秩,显然这是个二分图匹配问题,问是否存在完美匹配,如果存在,还要输出字典序最小的方案。暴力建图首先我们考虑建立二分图的问题。我们需要对每对(i, j)判断其是否能连边,也就是说需要判断一个方阵是否满秩。我们可以使用高斯消元来计算矩阵的秩。高斯消元将方阵化成上三角之后,方阵满秩当且仅当其主对角线元素之积非零。一次高斯消元时间复杂度为O(n^3),而需要做n^2次高斯消元,故建图的复杂度为O(n^5)。优化暴力建图复杂度过高,我们需要对其进行优化。注意到在暴力算法中我们每次都要对矩阵 阅读全文
posted @ 2014-01-31 23:01 jason_yu 阅读(828) 评论(2) 推荐(2) 编辑
摘要: 题目大意给一棵N个节点的有向树(N <= 1000),求其拓扑序列个数。思路我们将任意一个点作为根,用dp[i][j]表示以节点i为根的子树满足节点i在第j个位置上的拓扑序列的个数。在求节点cur的状态的答案时,我们需要枚举cur的所有儿子i,通过组合数计算将i子树的序列中i前面的部分与目前cur的序列中cur之前的部分合并的方案数,当然后面的部分也要算。我们不妨假设当前访问的儿子i需要早于cur在序列中出现,用cnt[i]记录以i为根的子树的大小,由于i早于cur,在i序列中早于i的也必须早于cur,故可以得到、如果儿子i需要晚于cur也是类似的 阅读全文
posted @ 2014-01-28 13:27 jason_yu 阅读(392) 评论(0) 推荐(0) 编辑
摘要: 题目:http://community.topcoder.com/stat?c=problem_statement&pm=12083这道题还是挺耐想的(至少对我来说是这样)。开始时我只会60%的算法,在借鉴了巨神zhx的代码并查阅了官方题解后才终于懂了点了。两两互质的情形首先,考虑简化的情形:若模板i的长度为li,我们加上限制,即所有模板的长度两两互质。假设当前位置x对应第i个模板的位置为ai,当且仅当,而li是两两互质的,由中国剩余定理,x在范围内有唯一解。这样,这个问题就被秒掉了。一般情形下面考虑一般情形。假设有两个模板i和j,,我们可以考虑将正整数集合中的元素按照模k的余数分成k 阅读全文
posted @ 2013-12-31 22:27 jason_yu 阅读(580) 评论(0) 推荐(0) 编辑