2012年3月27日
摘要: HYSBZ_1002 努力了一大节毛邓课,终于把这个题的递推公式写出来了O(∩_∩)O~ 由于推倒过程有点不好叙述,所以在此就只列出结论了,如果有什么疑问或者建议可以一起讨论哈。 设f[n]表示第n个原子和中心相连的病毒数,g[n]表示第n个原子不和中心相连的病毒数,那么最后的结果就是f[n]+g[n]。同时还需要一个辅助的表达式h[n],表示将环变成一条直链(首尾没有直接相连的线)后的病毒数(用h[n]去推其他表达式的时候可以看作是第n个原子和第1个原子不连线,而在计算h[n]的时候实际上也可以看成是第n-1个原子和第n个原子之间不连线,这样更容易得到h[n]=f[n-1]+2*h[n-1. 阅读全文
posted @ 2012-03-27 22:48 Staginner 阅读(1743) 评论(0) 推荐(0) 编辑
摘要: POJ_3613 这个题目我们可以用一个矩阵f[i][j][n]表示进过的边数为n的i到j的最短路,利用二分的思想就可以得到f[i][j][n]=min{f[i][k][n/2]+f[k][j][n-n/2]},这样就可以用快速幂去做了。只要先求得f[i][k][n/2],就可以利用f[i][k][n/2]求得f[k][j][n-n/2],于是一共只需要计算O(logn)个矩阵,每个矩阵是2维的,计算的时候可以用floyd。 此外,这个题目顶点的标号范围较大,但实际上点数很少,所以可以先将各个点做一次映射。#include<stdio.h>#include<string.h& 阅读全文
posted @ 2012-03-27 17:42 Staginner 阅读(350) 评论(0) 推荐(0) 编辑