算法
文章平均质量分 81
小酷miki
这个作者很懒,什么都没留下…
展开
-
ZOJ 2412 Farm Irrigation
题意:将大写字母A~K转化为相应的tuxin原创 2014-07-06 11:08:35 · 434 阅读 · 0 评论 -
POJ 2823 Sliding Window
题目连接:http://poj.org/problem?id=2823题意: 有N个数,每次从左到右选取M个数,第一行输出每个区间中的最小值,第二行输出最大值。分析: 如果直接暴力求去每个区间的最大,最小值。时间复杂度是O(n^2),会超时的。 思路1:单调队列,维护每个区间的最大值和最小值。#include#include#includeusing原创 2015-01-04 14:08:54 · 428 阅读 · 0 评论 -
HDU 2177 威佐夫博弈
/*/////////////////////////////HDU 2177题意:威佐夫博弈的第一步如何走。分析:先打表出1000000的a、b表。按照n==m和n!=m两种情况。n==m时会变成0 0 ,还有可能是当n==b[i] 则m拿去m-a[i]个就会变成a[i],b[i]的奇异局势。n!=m时m==a[i]&&n>b[i] ==>原创 2015-01-22 18:52:13 · 468 阅读 · 0 评论 -
威佐夫博弈详解
部分内容参考:http://blog.csdn.net/lgdblue/article/details/15809893威佐夫博弈(Wythoff Game)问题模型:有两堆各若干个物品,两个人轮流从某一堆或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜。策略:我们用(ak,bk) (ak如果甲面对(0,0),那么甲已经输了原创 2015-01-22 19:42:30 · 962 阅读 · 0 评论 -
斐波那契博弈(Fibonacci Nim)
引用:http://blog.csdn.net/dgq8211/article/details/7602807问题模型:有一堆个数为n(n>=2)的石子,游戏双方轮流取石子,规则如下:1)先手不能在第一次把所有的石子取完,至少取1颗;2)之后每次可以取的石子数至少为1,至多为上一轮对手刚取的石子数的2倍。3)取走最后一个石子的人获胜。结论:当原创 2015-01-24 15:55:33 · 619 阅读 · 0 评论 -
尼姆博弈(Nimm Game)
引用:http://blog.csdn.net/shuangde800/article/details/7443566问题模型:有三堆各若干个物品,两个人轮流从某一堆取任意多的物品,规定每次至少取一个,多者不限,最后取光者获胜。Bouton定理:先手能够在非平衡博弈中获胜,而后手能够在平衡博弈中获胜。平衡条件:所有堆二进制表示时,每一位上1的1的个数都是偶数原创 2015-01-24 16:36:09 · 763 阅读 · 0 评论 -
巴什博弈(Bash Game)
问题模型:只有一堆n个物品,两个人轮流从这堆物品中取物品,规定每次至少取一个,最多取m个。解决思路:若n=m+1时,由于先手最多只能取m个,所以无论先手怎么取,剩下的都可以让后手取完,即后手必胜。假设n=(m+1)*r+s。(1)当s不等于0,先手要拿走s个物品,此时后手处于在剩下(m+1)*r个物品的状态进行取物品;假设后手取k(1状态,如此下去,先手原创 2015-01-24 17:15:29 · 727 阅读 · 0 评论 -
快速矩阵幂 HDU1757
矩阵的快速幂是用来高效地计算矩阵的高次方的。将朴素的o(n)的时间复杂度,降到log(n)。这篇文章很好得分析了原理:http://www.cnblogs.com/yan-boy/archive/2012/11/29/2795294.html题意:if(x f(x) = x.if (x>=10)f(x) = a0 * f(x-1) + a1 * f(x-2)原创 2015-01-26 16:54:13 · 434 阅读 · 0 评论 -
快速矩阵幂HDU1575
HDU 1575求矩阵A的k次的主对角线和mod9973的值。/*//////////////////////////////HDU 1757 快速矩阵幂//////////////////////////////*/#include #include int n,mod=9973;struct Matrix{ int m[12][12]; void clear原创 2015-01-26 17:07:14 · 393 阅读 · 0 评论 -
快速矩阵幂HDU2604
/*//////////////////////////////HDU 2604 快速矩阵幂给出长度L,里面有2^L个人求E队列的数量。分析:由题意可知,f(0)=0 f(1)=2 f(2)=4f(3)=6 f(4)=9 当x>=5时 f(n)=f(n-1)+f(n-3)+f(n-4)构造出 初始矩阵A 乘法矩阵E 9 6 4 2 1 1 0 0A= 0 0 0 0原创 2015-01-26 19:17:44 · 386 阅读 · 0 评论 -
快速矩阵幂HDU 2256
题意:给出n,求(sqrt(2.0)+sqrt(3.0))^(2*n)向下取整mod1024的值。分析转自:http://www.07net01.com/program/570696.html代码实现:/*//////////////////////////////HDU 2256 快速矩阵幂题意:给出n,求(sqrt(2.0)+sqrt(3.0))原创 2015-01-26 20:00:07 · 355 阅读 · 0 评论 -
快速矩阵幂POJ3070
新获得快速求斐波那契数列的方法。 1 1A= 1 0 f(n)=A^n。/*//////////////////////////////POJ 3070 快速矩阵幂题意:用矩阵求斐波那契数列 //////////////////////////////*/#include #include #include int n,mod=10000;st原创 2015-01-26 20:31:45 · 357 阅读 · 0 评论 -
快速矩阵幂POJ3233
给出n,k,m;n为矩阵A的行数和列数。然后输入矩阵A求A^1+A^2+...A^k 全部mod m的矩阵。#includeint n,mod, k;struct Matrix{ int m[32][32];}E, Z;Matrix Mut(Matrix A, Matrix B){ Matrix ans; for (int i = 0;原创 2015-01-26 20:40:37 · 275 阅读 · 0 评论 -
快速矩阵幂NYOJ301
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=301求f(x)=a*f(x-2)+b*f(x-1)+c。构造出矩阵初始化矩阵A和乘法矩阵E:f(x-1) f(x-2) 1 b 1 0A= 0 0 0E= a 0 0 0 0 0 c 0 1原创 2015-01-26 22:01:37 · 379 阅读 · 0 评论 -
快速矩阵幂HDU2842
解题思想部分参考:http://blog.csdn.net/q3498233/article/details/5786303题意:题目大意:有n个环在一条线上,叫你把他们通通取下来最少要做几步操作,结果mod 200907.要拿下环来是有条件的,i-th环的前面的环如果通通拿下来了,那么(i+1)-th这个环,你可以放进去,也可以取下来.注意,第一个环,可以随意拿进取下,其他环就是原创 2015-01-27 10:42:15 · 368 阅读 · 0 评论 -
快速矩阵幂HDU3117
题意:求斐波那契数,如果位数不超过8位就直接输出。如果超过8位,就输出前四位+“...”+后四位。分析:打表发现前40项不超过8位。所以前40个直接输出。最后超过8位的斐波那契数。对于后4位用快速矩阵幂求出。对于前4位,利用公式求出。由f[n] = 1/sqrt(5)*(((1+sqrt(5))/2)^n-((1-sqrt(5))/2)^n)可知,当原创 2015-01-27 11:57:59 · 315 阅读 · 0 评论 -
快速矩阵幂-有向图
给定一个有向图,问从A点恰好走k步(允许重复经过边)到达B点的方案数mod p的值把给定的图转为邻接矩阵,即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步的路径数,我们只需要二分原创 2015-01-27 16:47:27 · 423 阅读 · 0 评论 -
快速矩阵幂ZOJ3497
题意:起点是(0,0),终点是(M,N)从起点出发,走一条长度为P的路径,路径中间点不能经过终点(但可以反复经过其他点)。到终点也到其它点 Maybe只能到达终点 True不能到达终点 False/*//////////////////////////////快速矩阵幂 ZOJ 3497//////////////////////////////*/#in原创 2015-01-28 13:38:26 · 343 阅读 · 0 评论 -
POJ 1026 Cipher
POJ 1026 Cipher题意:n,然后n个数,每个数代表下一次到达的下标,这样不断得交换下去(置换群思想)。给出k和字符串,通过上面的置换得出最终的字符串。分析:先找出每个置换群的长度和数字。并且记录每个数下一个置换。然后对于每个置换群,只需要置换k%len(len是当前置换群的长度)。#include#include#in原创 2015-06-04 11:18:07 · 370 阅读 · 0 评论 -
POJ 3692 Kindergarten
POJ 3692 Kindergarten题目链接:POJ 3692题意:在幼儿园,有g个女生,b个男生,女生之间是互相认识的,男生之间也是互相认识的,然后男生女孩之间有m个关系,代表是互相认识的。从他们之中选取一些出来,使得大家互相认识而且总人数最多。分析:转化为补图,补图中有边的说明是不为识的,那么想要剩下的人都认识,就得把边去掉,也就是去掉最少的点使所原创 2015-05-25 20:57:22 · 363 阅读 · 0 评论 -
POJ 1274 The Perfect Stall
POJ 1274 The Perfect Stall题目链接:POJ 1274题意:n个奶牛,m个帐篷。n行,每行一个Si,表示第i个奶牛喜欢的帐篷个数,然后Si个数,表示第i个奶牛喜欢的帐篷号。输出最多可以能够住在喜欢的帐篷的奶牛数。分析:二分匹配的模板#include#include#include#include#include原创 2015-05-25 20:21:53 · 290 阅读 · 0 评论 -
HDU 3435 A new Graph Game
HDU 3435 A new Graph Game题目链接:HDU 3435题意:找出一条费用最小的圈并且每个点走一次分析:最小权完备匹配#include#include#include#include#includeusing namespace std;const int maxn=1005;const int INF=1e9;in原创 2015-05-18 11:43:23 · 357 阅读 · 0 评论 -
HDU 1853Cyclic Tour
HDU 1853Cyclic Tour题目链接:HDU 1853题意:小Tom想旅游完n个地方,每次旅游至少要经过两个点,问最少经过的长度,如没有方案可以旅游完n个点则输出-1.分析:最小权完备匹配#include#include#include#include#includeusing namespace std;const int maxn原创 2015-05-18 11:33:59 · 292 阅读 · 0 评论 -
HDU 1533 Going Home
HDU 1533 Going Home题目:HDU 1533题意: m代表人,H代表家,将全部人安排最短的路线回家。思路: 将“人”与每个“家”连一条线,并且以两者的横纵坐标的差值之和的负值为边权。(即为-(abs(x1-x2)+abs(y1-y2))),因为KM算法是求最大值,所以取负值,输出-ans就行#include#include#includ原创 2015-05-18 11:09:41 · 327 阅读 · 0 评论 -
KM算法详细总结
转载来源:http://blog.csdn.net/zyy173533832/article/details/11519291Kuhn-Munkres算法KM算法是基于匈牙利算法求最大或最小权值的完备匹配关于KM不知道看了多久,每次都不能完全理解,今天花了很久的时间做个总结,归纳以及结合别人的总结给出自己的理解,希望自己以后来看能一目了然,也希望对刚学习KM算法的人有帮助,转载 2015-05-13 20:10:02 · 2315 阅读 · 0 评论 -
KM算法模板
模板:const int maxn=1005;const int INF=1e9;bool sx[maxn], sy[maxn];int match[maxn],lx[maxn], ly[maxn];int n, m, d;int g[maxn][maxn];int sum;//n:左集元素个数; m:右集元素个数// g[i][j] 代表i到j的边权bool dfs (i原创 2015-05-18 10:15:22 · 313 阅读 · 0 评论 -
HDU 2255奔小康赚大钱
HDU 2255奔小康赚大钱题目链接:HDU 2255题意: 村里共有n间房间,刚好有n家老百姓,考虑到每家都要有房住每家必须分配到一间房子且只能得到一间房子由于老百姓都比较富裕,他们都能对每一间房子在他们的经济范围内出一定的价格,比如有3间房子,一家老百姓可以对第一间出10万,对第2间出2万,对第3间出20万.每组数据的第一行输入n,表示房子的数量(也是老百姓原创 2015-05-18 10:30:25 · 279 阅读 · 0 评论 -
POJ1006: 中国剩余定理的完美演绎
转载来自:http://www.cnblogs.com/walker01/archive/2010/01/23/1654880.html 人自出生起就有体力,情感和智力三个生理周期,分别为23,28和33天。一个周期内有一天为峰值,在这一天,人在对应的方面(体力,情感或智力)表现最好。通常这三个周期的峰值不会是同一天。现在给出三个日期,分别对应于体力,情感,智力出现峰值的日期。然转载 2015-05-12 22:19:42 · 636 阅读 · 0 评论 -
POJ 2226 Muddy Fields
POJ 2226 Muddy Fields题目链接:POJ 2226题意:给定一个矩阵,其中有一些地方有水,有一些地方有草地,用一些长度任意,宽度为1的木板盖住这些有水的地方,但是不能覆盖草地,问至少需要几块板子。分析:以x方向连续的一段作为一个点,以y方向连续的一段作为一个点,也就是木板尽量得长,若两段有交点,则"连边",然后进行匹配,就是问题转化成求原创 2015-05-12 21:01:59 · 320 阅读 · 0 评论 -
POJ 2594 Treasure Exploration
POJ 2594 Treasure Exploration题目链接:POJ 2594题意:使最少的机器人参观完n个点,在通过的道路中,机器人只可以一端到另一端,不能往后走,机器人之间通过的点可能相同。分析:最小路径覆盖数=最大匹配数#include#include#includeusing namespace std;int n,m,s,v原创 2015-05-12 20:40:37 · 296 阅读 · 0 评论 -
POJ 3041 Asteroids
POJ 3041 Asteroids题目链接:POJ 3041分析:最大点独立集=最大匹配数#include#include#include#includeusing namespace std;int n,m;// DFSconst int maxn=512;bool used[maxn];vectorg[maxn];int L,R;int原创 2015-05-12 19:46:32 · 301 阅读 · 0 评论 -
POJ 1466 Girls and Boys
POJ 1466 Girls and Boys题目链接:POJ 1466题意:求最大集合:集合里任何两个学生都没有发生过浪漫关系。分析:答案等于n-最大匹配数/2 因为成对匹配的,只需要求出有多少对就行了构图,连边。然后匈牙利算法求解。#include#include#includeusing namespace std;int n;//原创 2015-05-12 14:07:50 · 358 阅读 · 0 评论 -
ZOJ 1516 Uncle Tom's Inherited Land
ZOJ 1516 Uncle Tom's Inherited Land题目链接:ZOJ 1516跟ZOJ 1654差不多#include#includeusing namespace std;const int MAX=201;int n,m;int dr[][2]={{-1,0},{1,0},{0,-1},{0,1}};int sx[MAX],sy[MA原创 2015-05-12 13:56:41 · 355 阅读 · 0 评论 -
POJ 1422 Air Raid
POJ 1422 Air Raid题目链接:POJ 1422分析:最小路径覆盖 = 图的顶点数 – 最大匹配数#include#include#include#includeusing namespace std;const int MAX=201;int n,m;// DFSconst int maxn=200;bool used[ma原创 2015-05-12 19:38:30 · 336 阅读 · 0 评论 -
POJ 1469 COURSES
POJ 1469 COURSES题目链接:POJ 1469题意:P个课程,每个课程被Count个人选了,每个课只能有一个代表,每个学生只能代表一个课程。问是否存在每个课都有代表的情况。输出“YES”或者“NO”分析:课程和学生进行连线。然后寻找最大匹配数,看是否等于P。#include#include#include#inclu原创 2015-05-12 13:03:29 · 318 阅读 · 0 评论 -
POJ 1436 Horizontally Visible Segments
POJ 1436题目链接:POJ 1436题意:n条横坐标为x的竖线,竖线纵坐标从y1到y2.有多少个三元组能两两互相看到对方的。分析:先进行覆盖填充,然后暴力求解。#include #include #include #include #include using namespace std;#define lson l, mid,原创 2015-05-06 12:18:46 · 184 阅读 · 0 评论 -
POJ 3225 Help with Intervals
POJ 3225 Help with Intervals题目链接:POJ 3225题意:S一开始是空集,然后进行5个操作。U a b 是将区间[a,b]变成1.I a b 是将(-oo,a)(b,+oo)变成0.D a b 是将区间[a,b]变成0.C a b 是将(-oo,a)(b,+oo)变成0且[a,b]进行异或操作。S a b 是将区间[a,b]原创 2015-05-06 07:43:19 · 298 阅读 · 0 评论 -
POJ 3675 Telescope
POJ 3675 Telescope题目链接:POJ 3675题意:圆和多边形的公共面积。分析:将多边形分成n个三角形和圆的公共面积。实现1:/* POJ 3675 多边形和圆的公共面积 题意:坐标在原点,然后输入圆的半径R 然后输入N和N个点坐标,N个点围成个多边形*/#include#include#define eps 1原创 2015-05-05 20:42:09 · 528 阅读 · 0 评论 -
HDU 4549 M斐波那契数列
HDU 4549 M斐波那契数列题目链接:HDU 4549M斐波那契数列F[n]是一种整数数列,它的定义如下:题意:F[0] = aF[1] = bF[n] = F[n-1] * F[n-2] ( n > 1 )给出a, b, n,求出F[n]对1000000007取模后的值.分析:通过代数计算F[n]前几项,F[2]=a*b;原创 2015-05-06 20:15:57 · 354 阅读 · 0 评论 -
POJ 2676 Sudoku
题目链接:POJ 2676/*//////////////////////////////////////////////// POJ 2676 填充数独思路:记录每行每列每个小格子所保存的数,然后回溯来尝试 未被记录的数。 ////////////////////////////////////////////////*/#include#include#i原创 2015-05-07 15:12:48 · 270 阅读 · 0 评论