自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(27)
  • 资源 (1)
  • 收藏
  • 关注

原创 POJ 3487 The Stable Marriage Problem (稳定婚姻问题)

题意:http://poj.org/problem?id=3487/*男生向女生求爱,男生最优稳定匹配*/#include#include#includeusing namespace std;#define MAXN 50int Mpref[MAXN][MAXN]; // Mpref[i][j]表示男生i第j偏爱的女生int Wpref[MAXN][MAXN];

2011-11-30 23:30:52 1962

原创 组合数学习题(由逆序列生成排列)

/****************************************************采用线段树统计空格个数,从而确定某个数字应该存放在排列中的位置,总时间复杂度为n*logn*****************************************************/#include#includeusing namespace std;#de

2011-11-29 17:13:34 1743

原创 组合数学习题(Gray码生成)

习题二:生成Gray码/*************************************************//每次调用函数取得code的下一个码(参数code为当前的gray码)void gray ( int n, int *code ){ int t = 0; for ( int i = 0; i < n; i++ ) t += code

2011-11-29 17:12:26 1272 1

原创 ZOJ 2531 Traveller (Gray码)

TravellerTime Limit: 2 Seconds      Memory Limit: 65536 KB      Special JudgeA traveller plans a round trip through n cities, where n is a power of 2, in which case we simply index them with n

2011-11-29 13:59:59 708

原创 POJ 1082 Calendar Game (博弈)

题意:甲与乙做一个游戏,给定一个1991/1/1至2001/11/4号之间的一个日期,看谁能最终到达2001/11/4。有两种移动方式,1.移动到下一天;2.移动到下一个月的同一天(若下一个月的该天不存在,则不能移动)题解:如果一个状态的后继状态都是必胜状态,那么它是必败状态。如果一个状态的后继状态中存在必败状态,那么它是必胜状态。PS:感觉好奇怪,递归时倘若我先处理下一天,再处理下一月,

2011-11-26 22:13:56 860

原创 POJ 1740 A New Stone Game (博弈)

题意:在一般的Nim游戏基础上,加入了一条新规则:每次都可以从所选的堆中,拿出任意个石子放到其它的任意个堆中。题解:在一般的Nim游戏中,非平衡态->先手胜,平衡态->后手胜。对于任意两堆数量相同的石子,它们对整个局势无影响(它们的异或值等于0,或者说无论甲采取什么方案,乙都可以用对应的方案来纠正状态的变化)。本题中,如果所有堆的数量两两相等,比如 1,1,2,2,5,5,则后手胜。如

2011-11-25 22:33:29 685

原创 POJ 2960 S-Nim

题意:在普通的Nim游戏上加入一些限制。给定一个集合S, 每次只能取S的元素个石子。题解:SG函数。#include using namespace std;#define MAXN 105#define MAXM 10005int h[MAXN];int s[MAXN];int SG[MAXM];int k;void DFS ( int x ){ if ( SG

2011-11-25 16:08:12 1384

转载 跳表

为什么选择跳表目前经常使用的平衡数据结构有:B树,红黑树,AVL树,Splay Tree, Treep等。 想象一下,给你一张草稿纸,一只笔,一个编辑器,你能立即实现一颗红黑树,或者AVL树出来吗? 很难吧,这需要时间,要考虑很多细节,要参考一堆算法与数据结构之类的树,还要参考网上的代码,相当麻烦。 用跳表吧,跳表是一种随机化的数据结构,目前

2011-11-25 10:38:35 5814 3

转载 Nim取子游戏 (SG函数)

Nim游戏(转载)Nim游戏是博弈论中最经典的模型(之一?),它又有着十分简单的规则和无比优美的结论Nim游戏是组合游戏(Combinatorial Games)的一种,准确来说,属于“Impartial Combinatorial Games”(以下简称ICG)。满足以下条件的游戏是ICG(可能不太严谨):1、有两名选手;2、两名选手交替对游戏进行移动(move),每次一步,选手可以在(

2011-11-24 23:03:30 3220

原创 POJ 1067 取石子游戏 (博弈)

取石子游戏Time Limit: 1000MS Memory Limit: 10000KTotal Submissions: 25468 Accepted: 8070Description有两堆石子,数量任意,可以不同。游戏开始由两个人轮流取石子。游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子;

2011-11-24 22:17:02 732

转载 博弈

(一)巴什博弈(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。很容易想到当n%(m+1)这个游戏还可以有一种变相的玩法:两个人轮流报数,每次至少报一个,最多报十个,谁能报到100者胜。(二)威佐夫博弈(Wythoff Game):有两堆各若干个物品,两个人轮流从某一堆或同时从两堆中取同样多的物品,规定每次至少

2011-11-24 21:44:02 958

原创 HDU 1231 最大连续子序列 (dp)

Problem Description给定K个整数的序列{ N1, N2, ..., NK },其任意连续子序列可表示为{ Ni, Ni+1, ...,Nj },其中 1 例如给定序列{ -2, 11, -4, 13, -5, -2 },其最大连续子序列为{ 11, -4, 13 },最大和 为20。 在今年的数据结构考卷中,要求编写程序得到最大和,现在增加一个要求,即还需要输

2011-11-15 22:30:41 3880

原创 POJ 2337 Catenyms (欧拉回路)

题意:给你n个单词,让每个单词的最后一个字母恰好等于下一个单词的第一个字母。构造这样一个串,使每个单词恰好被用到一次。取字典序最小的。例如,把 aloha     arachnid    dog   gopher    rat    tiger  串成 aloha.arachnid.dog.gopher.rat.tiger。 若所个的单词不能构成这样一个串,那么输出“***”。题解:乍一看

2011-11-13 12:25:48 1723

原创 POJ 1041 John's trip (欧拉回路)

题意:John买了新车,想开车去拜访他的朋友,已知每条街道上都恰巧有他的一个朋友,所以他想穿过每条街道一次并且回到起点。城镇上街道总数不超过1995,节点总数不超过44,任意一个节点所关联的街道总数不超过44,每一条街道所关联的两个节点都不同,每条街道的编号也不同。起点是第一次输入的两个节点中较小的那个。若存在多条回路,输出字典序最小的。#include using namespace st

2011-11-12 18:44:04 991

原创 POJ 2404 Jogging Trails (中国邮递员问题,状态压缩DP)

题意:Gord在为一场马拉松做准备,他家后面有一个公园,公园里有许多路径,这些路径连接了水上景点(n题解:计算出任意两点之间的路径,统计出奇度顶点,找出这些奇度顶点的最小带权匹配(貌似计算一般图的最优带权匹配不太好弄,拆点然后用KM做是不对的)。有一个算法叫做Edmonds-Johnson算法可以解决中国邮递员问题,但是我找不到具体代码。#include using namespa

2011-11-11 16:28:49 3065 1

原创 POJ 1556 The Doors (线段相交+Dijkstra)

题意:找从起点到终点的最短路径。题解:可以知道,但凡两点不能直达,则一定是沿着墙边界点走的,这样才能保证路径最短。那么只需要再所有可以直达的点间连上一条边,求一次最短路径。注意判断两线段是否相交应该是判断“严格相交”,即不包含端点。#include #include /*#include //不知道为什么加上这两句就报一些奇怪的错误····using namespa

2011-11-06 19:56:55 798

原创 POJ 1269 Intersecting Lines (两直线之间的位置关系)

题意:判断两直线之间的位置关系,平行,重合,相交题解:注意精度#include #include using namespace std;#define MAX 100#define eps 1e-8#define zero(x) ( ((x) > 0 ? (x) : -(x)) < eps )struct Point { double x, y; };

2011-11-06 16:45:27 458

原创 POJ 3304 Segments (直线与线段相交)

题意:给出许多线段,问能否找到一条直线,使得所有线段在它上面的投影存在交点。题解:转自http://blog.sina.com.cn/s/blog_6635898a0100n2lv.html1:把问题转化为是否存在一条直线与每条线段都有交点。证明:若存在一条直线l和所有线段相交,作一条直线m和l垂直,则m就是题中要求的直线,所有线段投影的一个公共点即为垂足。2:枚举两两线段的各一个端点

2011-11-06 15:56:32 583

原创 POJ 2318 TOYS / POJ 2398 (二分,叉集)

题意:统计每个格子里面的玩具有多少。2318给出分隔板的时候是从左到右,2398的分隔板并没有排序,得自己排一下。两题就是输出有点不同,其他没什么···POJ 2318:#include using namespace std;#define MAX 5999struct CardBoard{ int x1, y1, x2, y2; double k;

2011-11-06 08:23:02 715

原创 POJ 3737 UmBasketella(三分)

题意:给出圆锥的表面积(包含底面)。求其最大体积,以及此时的底面半径及高#include #include using namespace std;#define eps 0.00000005#define PI acos(-1.0) // PI用反三角函数比较准确int main(){ double s; while ( scanf("%lf",&s

2011-11-05 20:00:14 1218

原创 POJ 3301 Texas Trip (三分求极限)

题意:给出许多点的坐标,用最小的正方形覆盖之。题解:三分。注意精度····。公式神马的画个图推一下即解决double mid1 = (left + right)/2;             double mid2 = (mid1 + right)/2;         相比 double mid1 =left +(right - left)/3;double mid2 =

2011-11-05 18:15:00 1364

原创 POJ 1679 The Unique MST (次小生成树Prime/Kruskal)

题意:判断图中的最小生成树是否唯一。题解:只需验是否存在两个或两个以上权值相同的最小生成树。注意:1.图中任意两点间最多只有一条无向边; 2.图可能不连通(此时mst = 0)。Prime :复杂度 O( V ^ 2 )#include using namespace std;#define MAX 101#define INF 999999999#define

2011-11-05 10:43:15 941

转载 最小生成树模版(Prime+邻接表)

最小生成树模版(Prime+邻接表) 使用优先队列+邻接表的prime算法#include #include using namespace std;typedef struct { long v; long next; long cost;}Edge;typedef struct { long v; lon

2011-11-05 08:42:08 2152

原创 POJ 2728 Desert King (最小比率生成树,二分/迭代)

题意:沙漠里的王国需要修建水渠,连接国都与村庄····。说白了求一棵树,每个点有三个坐标(x,y,z)。边的benifit为两点之间的距离,cost为两点的高度差。现在要求一棵树使得 cost / benift 最小。题解:很显然任意两点之间都有边,所以是一个很稠密的图。用Prime。二分的话2800ms+, 迭代300ms+。#include #include using nam

2011-11-04 21:00:42 1088

原创 POJ 2987 Firing (最大权闭合子图Dinic)

题意:公司打算裁员,裁掉某些员工可以获得正收益,而裁掉某些员工会遭受损失。并且员工之间往往存在一定的关系,当某个员工被裁掉之后,在他的关系之下的所有员工都必须被裁掉。现在要求如何裁员才能获得最大收益。题解:s->正权, 负权->t。  ans = 正权和 - maxflow, 或者 ans = 正权和 - 没有被裁的正权和 - abs(被裁的负权和) ( 正边权进入最小割表示该人没被炒,非正边

2011-11-03 23:37:02 946

原创 1254 - lcs (n*logn)

1254 - lcsTime Limit: 3000 msMemory Limit: 65535 KbDescriptionThis problem seems a little easy. Because the two given sequences p1 p2 are just  permutations of 1~n. So try it and tell me the a

2011-11-02 16:54:37 470

原创 1251 - zlly长了一张包子脸

1251 - zlly长了一张包子脸Time Limit: 1000 msMemory Limit: 65535 KbDescriptionzlly长了一张包子脸,他特别喜欢吃糖果,现在他手头有若干种糖果,每种糖果有个口味值,每种糖果有无数多个。然后娄童鞋也非常喜欢吃糖果,他的口味特别广泛,他喜欢各种各样的口味值,他要求zlly用现有的口味值拼出新的口味值。现在,娄童鞋想知道他不能

2011-11-02 15:07:35 1042

C++ STL 标准模板库

ACMer必备.内容非常详尽,不过是英文版的额。

2012-07-24

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除