2013年10月26日

Find a multiple

摘要: poj2356:http://poj.org/problem?id=2356题意:给定n个数,从中选出连续的若干个,使得和为n的倍数。多解时输出任意解。分析:设sum[0]=0,sum[i]表示数列中第1~i个数的和对n取余的结果。那么现在有sum[0~n],n+1个整数,分布在区间 [0,n-1]上的n个整数点上,则至少有两个数会分布在同一个整数点,即存在sum[i]==sum[j]且i!=j。这样以来第i+1~j个数即为 所求。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 int s[10003] 阅读全文

posted @ 2013-10-26 18:16 天依蓝 阅读(158) 评论(0) 推荐(0)

2013年10月25日

敌兵布阵

摘要: hdu1166:http://acm.hdu.edu.cn/showproblem.php?pid=1166题意:n个阵营一字排开,每个初始有a[i]个人。现有两种操作:Q a b 查询[a,b]之间总人数并输出A/S a b 在a号位添加/删除b个人题解:用线段树维护,就是单点更新,区间查询。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 int n,a,b; 7 struct Node{ 8 int left;//左二子 9 int right;//右儿子 10 int ... 阅读全文

posted @ 2013-10-25 15:11 天依蓝 阅读(162) 评论(0) 推荐(0)

2013年10月24日

Rabbit hunt

摘要: poj2606:http://poj.org/problem?id=2606给你n个点,求在一条直线上的点最多有几个。题解:直接暴力,但是要注意,横坐标相等的情况,这是不能求斜力,只能特殊处理。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 struct Node{ 7 int x; 8 int y; 9 }node1[102];10 int n;11 int ans;12 double KK(Node a,Node b){13 if(a.x!=b.x)14 ret... 阅读全文

posted @ 2013-10-24 09:49 天依蓝 阅读(363) 评论(0) 推荐(0)

2013年10月23日

Play on Words

摘要: poj1386:http://poj.org/problem?id=1386题意:给你n个单词,问你是否能够通过调整单词的顺序存在这样的一个序列,使得 每个单词的首字母是前一个单词的尾字母。题解:每个单词可以看做从首字母连向尾字母的一条边,然后就是整个图的欧拉路径。统计每个点的入度和初度,如果基图连通,并且只有两个点入度和初度不等,并且相差分别为1,-1,就存在这样的路径,否则则没。 连通性,可以用并查集. 处理完之后,看每个点的父亲是否相等来判断是否连通。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; . 阅读全文

posted @ 2013-10-23 08:49 天依蓝 阅读(314) 评论(0) 推荐(0)

2013年10月22日

Door man

摘要: poj1300:http://poj.org/problem?id=1300题意:给你n个房间,房间之间有一些门,房间是按0~~n-进行编号的。然后给出一些房间的之间门,n行,每行的数字表示该们与其它们之间是否有门,而且只表示出比他大的房间号。然后给你一个起点,问你从起点出发,然后经过所有的房间回到0点,房间之间可能有多道门。题解:题目描述的可能不是很清楚,题目是要求一条欧拉回路。源点是0点,可以从起点到达源点之后,看看能否经过每个房间回到0点。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 int r 阅读全文

posted @ 2013-10-22 15:59 天依蓝 阅读(328) 评论(0) 推荐(0)

2013年10月19日

Borg Maze

摘要: poj3026:http://poj.org/problem?id=3026题意:在一个y行 x列的迷宫中,有可行走的通路空格’ ‘,不可行走的墙’#’,还有两种英文字母A和S,现在从S出发,要求用最短的路径L连接所有字母,输出这条路径L的总长度。题解:一格的长度为1,而且移动的方法只有上、下、左、右,所以在无任何墙的情况下(根据题意的“分离”规则,重复走过的路不再计算因此当使用prim算法求L的长度时,根据算法的特征恰好不用考虑这个问题(源点合并很好地解决了这个问题),L就是最少生成树的总权值W由于使用prim算法求在最小生成树,因此无论哪个点做起点都是一样的,(通常选取第一个点),因此起点 阅读全文

posted @ 2013-10-19 14:05 天依蓝 阅读(227) 评论(0) 推荐(0)

2013年10月18日

Agri-Net

摘要: poj1258:http://poj.org/problem?id=1258题意:生成树的模板题。简单题。 1 #include 2 #include 3 #include 4 #include 5 #define INF 100000000 6 #define MAXN 103 7 using namespace std; 8 int n,m; 9 int Edge[MAXN][MAXN];10 int lowcost[MAXN];11 int nearvex[MAXN];12 void prim(int u0){13 int i,j;14 int sumweight=0;1... 阅读全文

posted @ 2013-10-18 19:11 天依蓝 阅读(184) 评论(0) 推荐(0)

Highways

摘要: poj1751:http://poj.org/problem?id=1751题意:给你n个城市,每个城市的坐标给你,然后为了是每个城市都连通,需要在已经建了一些街道额基础上,再次建一些街道使其连通,求使得所建街道最短的那些边。题解:直接求一棵生成树,把已经建好的边的边权设置为0,用prim走一遍。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #define INF 100000000.0 7 using namespace std; 8 struct Node{ 9 int x;10 int y;11 }no... 阅读全文

posted @ 2013-10-18 18:48 天依蓝 阅读(185) 评论(0) 推荐(0)

2013年10月17日

Truck History

摘要: poj1789:http://poj.org/problem?id=1789题意大概是这样的:用一个7位的string代表一个编号,两个编号之间的distance代表这两个编号之间不同字母的个数。一个编号只能由另一个编号“衍生”出来,代价是这两个编号之间相应的distance,现在要找出一个“衍生”方案,使得总代价最小,也就是distance之和最小。题解:问题可以转化为最小代价生成树的问题。因为每两个结点之间都有路径,所以是完全图。 此题的关键是将问题转化为最小生成树的问题。每一个编号为图的一个顶点,顶点与顶点间的编号差即为这条边的权值,题目所要的就是我们求出最小生成树来。这里我用prim算 阅读全文

posted @ 2013-10-17 22:55 天依蓝 阅读(249) 评论(0) 推荐(0)

Arctic Network

摘要: poj2349:http://poj.org/problem?id=2349题意:有卫星电台的城市之间可以任意联络。没有卫星电台的城市只能和距离小于等于D的城市联络。告诉你卫星电台的个数S,让你求最小的D.题解: 生成最小生成树,去掉最长的S条边后,剩下最长的边就是D.也就是求最小生成树中第S+1长的边。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #define INF 100000000.0 7 using namespace std; 8 int cas,x,y,top; 9 int n,s;10 double low 阅读全文

posted @ 2013-10-17 22:29 天依蓝 阅读(213) 评论(0) 推荐(0)

导航