2012 Multi-University Training Contest 3
摘要:1001 HDU4320 Arcane Numbers 1GCD 0MS 无压力代码:View Code1#include<iostream>2#include<cstdio>3#include<cstring>4#defineLL__int645usingnamespacestd;6LLgcd(LLa,LLb)7{8returnb==0?a:gcd(b,a%b);9}10intmain()11{12LLa,b,c;13intt,k=0;14scanf("%d",&t);15while(t--)16{17k++;18scanf(&
阅读全文
posted @
2012-07-31 18:43
pony1993
阅读(443)
推荐(0) 编辑
最短路—SPFA
摘要:求单源最短路的SPFA算法的全称是:Shortest Path Faster Algorithm。SPFA算法是西南交通大学段凡丁于1994年发表的. 很多时候,给定的图存在负权边,这时类似Dijkstra等算法便没有了用武之地,而Bellman-Ford算法的复杂度又过高,SPFA算法便派上用场了。 我们用数组d记录每个结点的最短路径估计值,而且用邻接表来存储图G。 我们采取的方法是动态逼近法:设立一个先进先出的队列用来保存待优化的结点,优化时每次取出队首结点u,并且用u点当前的最短路径估计值对离开u点所指向的结点v进行松弛操作,如果v点的最短路径估计值有所调整,且v点不在当前的队列中,..
阅读全文
posted @
2012-07-31 09:29
pony1993
阅读(386)
推荐(0) 编辑
SDUT-Team172 Summer Training Practice #3
摘要:Cloned from: UESTC Summer Training #13 Division II题目来源: Andrés Mejía-Posada, May 2012 (UVA 12461—12470)题目依旧略水,大部分都是数学题,推公式、求概率、算约数、矩阵幂模……PrombleA UVA 12461 Airplane题目大意:一共有n个人和n个座位,第一个人不记得自己的座号了,他会随机坐在一个座位上,以后的人都记得自己的座号,如果他的位置被占了,他就会随机坐在一个座位上,否则就坐在自己的座位上,让求第n个人座位被占的概率。其实,不管有多少人,第n个人座位被占的概率
阅读全文
posted @
2012-07-30 22:26
pony1993
阅读(390)
推荐(0) 编辑
POJ 1061 青蛙的约会(扩展欧几里德)
摘要:/*设过s步后两青蛙相遇,则必满足以下等式:(x+m*s)-(y+n*s)=k*l变形得:(n-m)*s+k*l=x-y令:a=n-m,b=l,c=x-y得:a*s+b*k=c,根据扩展欧几里德:只要c%gcd(a,b)==0,则两青蛙能相遇,否则不能。所以原问题可用扩展欧几里德解方程。*/代码:View Code1#include<iostream>2#include<cstdio>3usingnamespacestd;4__int64exgcd(__int64a,__int64b,__int64&x,__int64&y)5{6if(b==0)7{8x
阅读全文
posted @
2012-07-30 12:49
pony1993
阅读(621)
推荐(0) 编辑
SDUT-Team172 Summer Training Practice #2
摘要:Clonedfrom:UESTCSummerTraining#6DivisionII题目来源:UralRegionalSchoolProgrammingContest2011(Ural1873—1884)题目挺水,而且有的还挺好玩的,本来五个小时的比赛,由于时间关系,开了两个半小时,实际用时不到2个小时,共12道题,两个人组队做出来了6道。ProblemA Ural1873 GOVChronicles这是一个纯英语阅读理解,题目描述2000个单词左右,里面出现了11个人,让你数出来每个人参加过几次比赛。代码:View Code 1#include<iostream>2#includ
阅读全文
posted @
2012-07-30 05:56
pony1993
阅读(343)
推荐(0) 编辑
SDUT-Team172 Summer Training Practice #1
摘要:题目来源:The7thZhejiangUniversityProgrammingContests (ZOJ2834—2841)ProblemBZOJ2835MagicSquare水题,不解释。代码:View Code 1#include<iostream>2#include<cstdio>3#include<cstring>4#include<algorithm>5usingnamespacestd;6intmain()7{8intn,i,j,s1,s2,flag;9inta[11][11],b[1001];10while(~scanf(&quo
阅读全文
posted @
2012-07-28 23:14
pony1993
阅读(304)
推荐(0) 编辑
最大流 基础
摘要:图1 如图-1所示,在这个运输网络中,源点S和汇点T分别是1,7,各边的容量为C(u,v)。图中红色虚线所示就是一个可行流。标准图示法如图-2所示:其中p(u,v)/c(u,v)分别表示该边的实际流量与最大容量。关于最大流 熟悉了什么是网络流,最大流也就很好理解了。就是对于任意的u∈V-{s},使得p(s,u)的和达到最大。上面的运输网络中,最大流如图-3所示:MaxFlow=p(1,2)+p(1,3)=2+1=3。 在介绍最大流问题之前,先介绍几个概念:残余网络,增广路径,反向弧,最大流定理以及求最大流的Ford-Fulkerson方法。残余网络增广路径反向弧 观察...
阅读全文
posted @
2012-07-28 10:39
pony1993
阅读(501)
推荐(0) 编辑
2012 Multi-University Training Contest 2
摘要:看完了第一道题,感觉贪心可做,然后跟cz说了一下,他去写,然后我去看另外一道题,就这样悲剧开始了,被坑了一下午,看了一道自认为不算太难的题,然后自己写写,试了点数据感觉不怎么对,然后删了重新想,一直就在纠结,中间交流了一下其他题,在我试图暴力第二道题失败后继续思考那道题,就这样思考到了最后1个小时果断放弃去交流其他题了。最后貌似那道题只有11个队过了。。赛后看了下题解:较难的动态规划题、、、Orz。。1001Hero代码:View Code1#include<iostream>2#include<cstdio>3#include<cstring>4#incl
阅读全文
posted @
2012-07-26 19:41
pony1993
阅读(338)
推荐(0) 编辑
二分图的最大匹配—匈牙利算法
摘要:【基本概念】:二分图:二分图又称作二部图,是图论中的一种特殊模型。设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别属于这两个不同的顶点集(iinA,jinB),则称图G为一个二分图。无向图G为二分图的充分必要条件是,G至少有两个顶点,且其所有回路的长度均为偶数。最大匹配:给定一个二分图G,在G的一个子图M中,M的边集中的任意两条边都不依附于同一个顶点,则称M是一个匹配. 选择这样的边数最大的子集称为图的最大匹配问题,如果一个匹配中,图中的每个顶点都和图中某条边相关联,则称此匹配为完全匹配,也称作完备匹配.最小覆.
阅读全文
posted @
2012-07-25 10:14
pony1993
阅读(11757)
推荐(0) 编辑
拓扑排序
摘要:给定一个有向图G,对于任意一条有向边<Vi,Vj>,称Vi是Vj的直接前驱,Vj是Vi的直接后继,这种前驱与后继的关系具有传递性。 如果一个图的任何一个节点都具有反自反性,也就是说任何一个节点都不是自己的前驱或后继,那么这个有向图是拓扑有序的。拓扑序列:通常,这样的线性序列称为满足拓扑次序(Topological Order)的序列,简称拓扑序列。简单的说,由某个集合上的一个偏序得到该集合上的一个全序,这个操作称之为拓扑排序。离散数学中关于偏序和全序的定义: 若集合X上的关系是R是自反的、反对称的和传递的,则称R是集合X上的偏序关系。 设R是集合X上的偏序(Partial Orde
阅读全文
posted @
2012-07-24 16:10
pony1993
阅读(850)
推荐(0) 编辑
2012 Multi-University Training Contest 1
摘要:1001Clairewd’s message题目大意:第一行输入字母加密规则,第二行输入一个串a以及加密后的a’组成了一个串a’a。但是这个串残缺了一部分内容(a的部分残缺了),只剩下了s=a’b(b是a的一个前缀或者空串)让求出最短的a。View Code1#include<map>2#include<cstdio>3#include<cstring>4#include<iostream>5constintmaxn=100001;6usingnamespacestd;7intmain()8{9chars[27],s1[maxn];10intl1
阅读全文
posted @
2012-07-20 10:11
pony1993
阅读(494)
推荐(0) 编辑
HDOJ 4006 The kth great number(优先队列)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4006题意很简单,求第k大的数。用优先队列,输入的时候,队首元素是最小的,每输入一个元素,队列掺毒是否大于 K,若大于k,删除队首元素,这样队首元素永远是第k大的数。#include <iostream>#include <cstdio>#include <queue>#include <vector>#include <algorithm>using namespace std;int main(){ int n,m,i,a; char
阅读全文
posted @
2012-07-19 10:16
pony1993
阅读(193)
推荐(0) 编辑
树状数组
摘要:树状数组是一个查询和修改复杂度都为log(n)的数据结构,假设数组a[1..n],用lowbit函数维护了一个树的结构那么查询a[1]+...+a[n]的时间是log级别的,而且是一个在线的数据结构,支持随时修改某个元素的值,复杂度也为log级别。来观察这个图:令这棵树的结点编号为C1,C2...Cn。令每个结点的值为这棵树的值的总和,那么容易发现:C1 = A1C2 = A1 + A2C3 = A3C4 = A1 + A2 + A3 + A4C5 = A5C6 = A5 + A6C7 = A7C8 = A1 + A2 + A3 + A4 + A5 + A6 + A7 + A8C16 = A1
阅读全文
posted @
2012-07-19 07:36
pony1993
阅读(212)
推荐(0) 编辑
KMP字符串模式匹配
摘要:kmp算法是一种改进的字符串匹配算法,由D.E.Knuth与V.R.Pratt和J.H.Morris同时发现,因此人们称它为克努特——莫里斯——普拉特操作(简称KMP算法)。KMP算法的关键是根据给定的模式串W1,m,定义一个next函数。next函数包含了模式串本身局部匹配的信息。在S=”abcabcabdabba”中查找T=”abcabd”,如果使用KMP匹配算法,当第一次搜索到S[5]和T[5]不等后,S下标不是回溯到1,T下标也不是回溯到开始,而是根据T中T[5]==’d’的模式函数值(next[5]=2,为什么?后面讲),直接比较S[5]和T[2]是否相等,因为相等,S和T的下标同.
阅读全文
posted @
2012-07-18 17:07
pony1993
阅读(1453)
推荐(1) 编辑
字典树(Trie树)
摘要:字典树,又称单词查找树,Trie树,是一种树形结构,典型应用是用于统计,排序和保存大量的字符串,所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来节约存储空间,最大限度的减少无谓的字符串比较,查询效率比哈希表高。它有三个基本性质,根节点不包含字符,除根节点外每一个节点都只包含一个字符,从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串,每个节点的所有子节点包含的字符都不相同。字典树的插入,删除和查找都非常简单,用一个一重循环即可。1. 从根节点开始一次搜索2. 取得要查找关键词的第一个字母,并根据该字母选择对应的子树并转到该子树继续进行检索3. 在相应的
阅读全文
posted @
2012-07-18 08:45
pony1993
阅读(2317)
推荐(0) 编辑
最小生成树
摘要:克鲁斯卡尔(Kruskal)算法(只与边相关)算法描述:克鲁斯卡尔算法需要对图的边进行访问,所以克鲁斯卡尔算法的时间复杂度只和边又关系,可以证明其时间复杂度为O(eloge)。算法过程:1.将图各边按照权值进行排序2.将图遍历一次,找出权值最小的边,(条件:此次找出的边不能和已加入最小生成树集合的边构成环),若符合条件,则加入最小生成树的集合中。不符合条件则继续遍历图,寻找下一个最小权值的边。3.递归重复步骤1,直到找出n-1条边为止(设图有n个结点,则最小生成树的边数应为n-1条),算法结束。得到的就是此图的最小生成树。克鲁斯卡尔(Kruskal)算法因为只与边相关,则适合求稀疏图的最小生成
阅读全文
posted @
2012-07-17 14:59
pony1993
阅读(1416)
推荐(0) 编辑
最短路+1
摘要:1、最短路上的统计题目:一个无向图,没有自环,所有边的权值均为1,对于一个点对(a,b),输出a,b之间所有最短路上的点的总个数。题解:floyed求出所有的最短路,如果 map[a,b]=map[a,k]+map[k,b]那么 k 就是 a b 最短路上的点。最后输出总个数+2。编译通过...├测试数据01:答案正确...0ms├测试数据02:答案正确...0ms├测试数据03:答案正确...0ms├测试数据04:答案正确...0ms├测试数据05:答案正确...0ms├测试数据06:答案正确...0ms├测试数据07:答案正确...0ms├测试数据08:答案正确...0ms├测试数据09:
阅读全文
posted @
2012-07-17 08:01
pony1993
阅读(332)
推荐(0) 编辑
划分树
摘要:昨天的杭电多校联合训练热身赛的一道题,求区间的中位数,快排会超时,划分树的模版题。。划分树是一种基于线段树的数据结构。主要用于快速求出(在log(n)的时间复杂度内)序列区间的第k大值。划分树和归并树都是用线段树作为辅助的,原理是基于快排和归并排序的。划分树的建树过程基本就是模拟快排过程,取一个已经排过序的区间中值,然后把小于中值的点放左边,大于的放右边。并且记录d层第i个数之前(包括i)小于中值的放在左边的数。具体看下面代码注释。查找其实是关键,因为再因查找[l,r]需要到某一点的左右孩子时需要把[l,r]更新。具体分如下几种情况讨论:假设要在区间[l,r]中查找第k大元素,t为当前节点,l
阅读全文
posted @
2012-07-17 06:57
pony1993
阅读(5708)
推荐(3) 编辑
最短路
摘要:HDOJ 2544 最短路 题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=2544【code】(dijkstra):1#include<iostream>2#include<cstring>3#include<cstdio>4usingnamespacestd;5#definemaxn10016intmap[maxn][maxn];7intdijkstra(intfrom,intto,intn)8{9intdij[maxn],i,k;10boolused[maxn];11memset(used,false,si
阅读全文
posted @
2012-07-14 17:16
pony1993
阅读(184)
推荐(0) 编辑