上一页 1 ··· 18 19 20 21 22 23 24 25 26 ··· 61 下一页
摘要: 题目链接:http://poj.org/problem?id=2125思路:将最小点权覆盖转化为最小割模型,于是拆点建图,将点i拆成i,i+n,其中vs与i相连,边容量为w[i]-,i+n与vt相连,边容量为w[i]+,如果i,j有边相连,则i与j+n连边inf.从而跑最大流求解。对于输出解决放案,我们可以在残余网络中进行dfs,从vs出发,对于那些in遍历到的点,说明之前有j->i的边(jj不是最小割中的边,i是最小割中的点,输出‘+’。copy一张图: 1 #include 2 #include 3 #include 4 #include 5 #include 6 using ... 阅读全文
posted @ 2013-08-23 16:25 ihge2k 阅读(323) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4704思路:一道整数划分题目,不难推出公式:2^(n-1),根据费马小定理:(2,MOD)互质,则2^(p-1)%p=1,于是我们可以转化为:2^(n-1)%MOD=2^((n-1)%(MOD-1))%MOD,从而用快速幂求解。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 #define MOD 1000000007 7 8 char str[100100]; 9 long long Pow(long l. 阅读全文
posted @ 2013-08-23 11:05 ihge2k 阅读(585) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4705思路:反面考虑,用总的方案数减去A,B,C三点在同一路径上的方案数。于是我们可以确定中间点B,在当前以B为根求得的son中任选一个,在剩下的节点n-tmp-1(tmp为已经求得的B的儿子的个数)中任选一个,产生tmp*(n-tmp-1)中组合。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 #define MAXN 100100 7 #pragma comment(linker, "/STAC 阅读全文
posted @ 2013-08-23 10:15 ihge2k 阅读(718) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=3469思路:终于把网络流的模版测试好了,在Dinic和Sap之间还是选择了Sap,事实证明Sap确实比Dinic效率高,在此贴出自己的网络流模版: 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define MAXN 44444 8 #define MAXM 999999 9 #define inf 1que; 41 que.push(vt); 42 while(!que.empty... 阅读全文
posted @ 2013-08-22 11:15 ihge2k 阅读(842) 评论(3) 推荐(0) 编辑
摘要: 前沿:之前之做过一些递推关系式简单的矩阵快速幂,看了大牛的博客发现对于那种方程两边有多个不同的未知变量也可以用矩阵解决:http://blog.csdn.net/abcjennifer/article/details/5302198,于是找了几道题练手,顺便分享一下经验。题目链接:http://acm.fzu.edu.cn/problem.php?pid=1683思路:直接给出递推关系式:S(n)=S(n-1)+F(n)=S(n-1)+3*F(n-1)+2*F(n-2)+7*F(n-3).于是写成矩阵的形式:从而求的S(n). 1 #include 2 #include 3 #include 阅读全文
posted @ 2013-08-21 19:32 ihge2k 阅读(497) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4679思路:一开始看到题目的时候完全没什么想法,然后就跟着网上的解题报告学的,总算是理解的还行。做法:先找一条最长路,如果去掉的边不是这条最长路的,那么直接就是最长路乘上权值,否则的话,以最长路的两端进行双向dfs,每次求出某节点以下子树中的最长路。http://paste.ubuntu.com/5999233/ 阅读全文
posted @ 2013-08-18 19:15 ihge2k 阅读(203) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4681思路:首先预处理出串C在A,B中的所有的位置,然后从前向后求一次最长公共子序列,从后向前求一次最长公共子序列。最后就是直接枚举所有可能的组合了。PS:就因为把strlen写在了循环里,TLE了好多次。http://paste.ubuntu.com/5998824/ 阅读全文
posted @ 2013-08-18 16:03 ihge2k 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4576思路:由于每次从某一位置到达另一位置的概率为0.5,因此我们用dp[i][j]表示第i次操作落在位置j的概率,并且可以发现,当前位置的概率只与上一次的位置上的概率有关,因此我们可以滚动数组来处理。最后就是从l到r的概率累加了。http://paste.ubuntu.com/5998274/ 阅读全文
posted @ 2013-08-18 11:21 ihge2k 阅读(267) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4587思路:题目的意思很简单,就是删除任意2个节点以及关联的边,求图的最大连通分量数。我们知道删除割点连通分量会增加,因此我们可以枚举其中一个点,然后另一个点选择割点,统计每次的最大值即可。http://paste.ubuntu.com/5998026/ 阅读全文
posted @ 2013-08-18 09:20 ihge2k 阅读(786) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=1041思路:懒得写了,直接copy吧:对于一个图可以从一个顶点沿着边走下去,每个边只走一次,所有的边都经过后回到原点的路。一个无向图存在欧拉回路的充要条件是每个顶点的度是偶数, 对于有向图存在欧拉回路的条件是每个顶点的出度等于入度(就是出去的边数等于进来的边数)。根据这个首先判断存在欧拉回路不, 如果存在然后用DFS去找欧拉回路。DFS的思想等效于先找一个环,然后对环上所有点递归DFS,并且把这些递归产生的路插入这个环中。 实际上程序实现起来很简单,递归完成后不需要单独做插入。由于图已经保证连通,首先用度数是否是偶数,判断图是否是 阅读全文
posted @ 2013-08-16 21:19 ihge2k 阅读(644) 评论(0) 推荐(0) 编辑
上一页 1 ··· 18 19 20 21 22 23 24 25 26 ··· 61 下一页