- 博客(17)
- 资源 (1)
- 收藏
- 关注
原创 poj3311 TSP问题 状压DP
题意:从0走遍1~n最后再返回到0,一个点可以走多次,求经过的最短距离。分析:由于一个点可以走多次,所以需要求出任意两点间的最短距离,就要用到floyd算法,同时接下来可以搜索做复杂度是O(n!),而状态压缩的时间效率就高了,关于DP自己有时候状态转移方程知道了,却不知道如何去实现,循环时哪层放在外面,哪层放在里面,所以很容易把DP写成了暴力的搜索,自己要多想想。状态转移方程:dp[S][
2015-08-30 16:33:54 524
原创 poj4549 费马小定理+矩阵快速幂取余
题意:M斐波那契数列F[n]是一种整数数列,它的定义如下:F[0] = aF[1] = bF[n] = F[n-1] * F[n-2] ( n > 1 )现在给出a, b, n,( 0 你能求出F[n]的值吗?只需输出F[n]对1000000007取模后的值即可。分析:很容易推出F[n] = a^(f[n-1])*b^f[n](f[n]为 斐波那契数列)然而F[
2015-08-29 10:23:52 734
原创 poj2226 二分图匹配
题意:给一张图“*”表示可以放木板“.”表示不可以放木板,木板1米宽,可以是可以是任意长度。分析:如果不是二分专题上的题自己很难想到用二分来做,然而知道之后建图有很困难,对于这道题就是把每一行对应每一列,只要两者交点上是“*”,就把它们连起来,就可以建立起一张图 ,就变成求最小点覆盖的问题,就是求最大匹配。#include #include #include #include
2015-08-29 07:39:43 419
原创 poj1305毕达哥拉斯三元组
Language:DefaultFermat vs. PythagorasTime Limit: 2000MS Memory Limit: 10000KTotal Submissions: 1431 Accepted: 834DescriptionComputer generated and assisted
2015-08-28 10:46:41 507
原创 poj2689素数
Language:DefaultPrime DistanceTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 14463 Accepted: 3840DescriptionThe branch of mathematics called numb
2015-08-27 15:34:35 361
原创 POJ3461(KMP模板题)
不多说先粘代码#include #include #include using namespace std;const int maxn = 1000000+5;char text[maxn];char pat[10000 + 5];int nex[10005];int cnt;void Build(){ int len = strlen(pat); i
2015-08-26 23:16:13 427
原创 poj4474 枚举
题意:给一个数求该数的最小倍数的数且不含限定的数字,刚开始是不知道如果找不到的话限定到该数的多少倍 ,然后我就直接枚举到100倍TLE了,改成10倍又WA了。五个小时训练过去后还是没有做出来,看题解才知道枚举时直接判断是否该数的模被枚举过了就可以了, 虽然有点不太理解是为什么,再好好想想吧。#include #include #include #include #inclu
2015-08-26 21:51:56 393
原创 hdu4280 Island Transport 最大流模板Dinic算法
题意: 求从最左边的岛到最右边的岛的最大容量这道题还学会了手动开栈#include#include#include#include#include#include#pragma comment(linker, "/STACK:1024000000,1024000000")//外挂开栈using namespace std;const int maxn = 10000
2015-08-24 10:15:18 397
原创 poj1273 最大流模板 Edmond_karp算法
Edmond_karp算法:#include#include#include#include#include#includeusing namespace std;const int maxn = 200 + 5;const int inf = 0x7f7f7f7f;int pre[maxn], c[maxn][maxn], flow[maxn];int ans;
2015-08-23 16:47:27 346
原创 poj185 炮兵阵地 状压DP
题目链接:http://poj.org/problem?id=1185题意:在一个N*M的矩阵上最多能放多少门大炮,大炮只能放在平原上,且保证任何两支炮兵部队之间不能互相攻击,即任何一支炮兵部队都不在其他支炮兵部队的攻击范围内(横向纵向两个格子)。思路:1、这是经典的状态压缩题,由于当前第i行的状态不仅和第i-1行有关,还和第i-2行有关,所以要开一个三维的数组同时记录当前行和上一行的
2015-08-22 21:53:13 337
原创 poj3254 Corn Fields 状压DP入门
#include#include#include#include#include#includeusing namespace std;const int maxn = (1<<13) + 5;const int INF = 0x7f7f7f7f;const int mode = 100000000;int a[maxn], b[maxn];long long f[12][
2015-08-21 22:38:48 348
原创 Zoj3201 Tree of Tree 树形DP
题目大意:从一棵树上选取k个节点的子树使节点权值之和最大思路: 想到是树形DP了但是一直推不出来状态状态转移方程,首先是自己状态如何表示都没想好刚开始时用状态f[u][k][0]和f[u][k][1]表示以节点u父亲节点选k个节点0表示不选u,1表示选u,如果选u的话u的儿子至少要选一个,不选的话儿子可选可不选,然后想想这样下边计算时就会越来越乱~~~然后看了别人的思路:f[u][
2015-08-21 19:05:11 567
原创 poj1797 最短路变形
题目大意:求第1个点到第n个点的路径中所有的边所能承受最小重力的最大值思路: 刚开始一想没有思路然后想到用Floyd不断更新到每个点的最大值得最小值,TLE一发后想到这样做可能是错的,不仅仅是时间复杂度太高,更新过程中还要记录所有边的最小值,所以就想到了Dijkstra算法,不断更新距离已知集合的最大值不断把最大值得点加进去,中间记录答案网上见有的人说最大生成树,确实有道理,prim算法和
2015-08-21 11:16:08 568
原创 poj2082 连续矩形最大面积
Poj2082求连续区域矩形最大面积(堆栈)1 遇到比栈顶高度高或等于的矩形就进栈2如果比栈顶高度低就让栈里比curh高的出栈。同时进行数据处理,刚开始时toweight = 0,cursize = 0,每出一个矩形就加上所出矩形的宽度,更新最大值;然后toweight + curw,curh的矩形进栈;3最后栈中就是高度不下降矩形,如2 中的处理,不断更新最大值。 #in
2015-08-20 11:59:29 624
原创 Catalan数 大数运算&&普通运算
卡特兰数又称卡塔兰数,英文名Catalan number,是组合数学中一个常出现在各种计数问题中出现的数列。由以比利时的数学家欧仁•查理•卡塔兰 (1814–1894)命名 原理 令h(0)=1,h(1)=1,catalan数满足递推式[1] : h(n)= h(0)*h(n-1)+h(1)*h(n-2) + … + h(n-1)h(0) (n>=2) 例如:h(2)=h(0)*h(1)+
2015-08-20 11:10:43 373
原创 poj2761&&poj2104 主席树(静态区间第K大)
搞了两天参考大牛的博客终于写除了自己的主席树但是一直挖,在离散化时关于是否有相同的数,如果不考虑的话就莫名其妙的ac了,考虑的话就一直wa。 主席树: 好高大上的名字,说白了就是以序列的所有前缀或者后缀建立起来的线段树,同时在建树的过程中还用了上一个线段树的树根。 线段树里记录了其前缀序列里出现的值的次数。 离散后标记为1~n,要建立n个线段树
2015-08-19 15:47:23 531
原创 POJ2352(Treap || 线段树)
题目链接:http://poj.org/problem?id=2352 题目大意:先按Y的升序然后再按X的升序给出坐标,求出每个坐标左下方有多少个点,最后输出有从0到n-1个点的坐标有多少个。 本题可以说是线段树和树状数组的入门题,不用管Y按顺序依次求出每个X插入之前0到x有多少个坐标即可。这道题还可以用Treap来做,也是模板题,由于是刚学Treap,就用这个来写了。
2015-08-18 07:43:10 737
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人