摘要: 原以为是用搜索做的题,想了好久都无法想到一个高效正确的解法。后面发现竟然这就是矩阵的应用! 碉堡!给定一个有向图,问从A点恰好走k步(允许重复经过边)到达B点的方案数mod p的值 ——选自matrix67把给定的图转为邻接矩阵,即A(i,j)=1当且仅当存在一条边i->j。令C=A*A,那么C(i,j)=ΣA(i,k)*A(k,j),实际上就等于从点i到点j恰好经过2条边的路径数(枚举k为中转点)。类似地,C*A的第i行第j列就表示从i到j经过3条边的路径数。同理,如果要求经过k步的路径数,我们只需要二分求出A^k即可。K -MistwaldTime Limit:2000MSMemor 阅读全文
posted @ 2013-11-13 21:36 chenhuan001 阅读(354) 评论(0) 推荐(0) 编辑
摘要: 经典的一道DP题。题目明显是一道DP题,但是比赛的时候一个劲就在想怎么记录状态和转移。最后想到了一种n^3的方法,写了下,不出所料的超时了。看了别人的代码才发现竟然是先二分然后再进行DP,像这种思路应该会经常用啊。。。二分距离,DP判断是否可行。 然后这题的DP也是非常经典的,想了好久都想不通,最后站在最优解的情况下思考,才想通。状态转移方程:for(int i=1;i<=n;i++) { dp[i]=1; for(int j=1;j<i;j++) if(mabs(g[j]-g[i])<=(i-j)*s) d... 阅读全文
posted @ 2013-11-13 14:50 chenhuan001 阅读(201) 评论(0) 推荐(0) 编辑