
ACM
小狐狸jun
菜鸟飞呀飞~
展开
-
poj1182 并查集 食物链
关键词:并查集 相对关系思路:(用一个并查集就够了,同时对每个节点保持其到根结点相对类别偏移量) 1.p[x]表示x根结点。r[x]表示p[x]与x关系。r[x] == 0 表示p[x]与x同类;1表示p[x]吃x;2表示x吃p[x]。 2.怎样划分一个集合呢? 注意,这里不是根据x与p[x]是否是同类来划分。而是根据“x与p[x]能否确定两者之间关系”转载 2012-12-03 21:58:44 · 382 阅读 · 0 评论 -
hdu 1811 拓扑排序+并查集
Problem Description 自从Lele开发了Rating系统,他的Tetris事业更是如虎添翼,不久他遍把这个游戏推向了全球。 为了更好的符合那些爱好者的喜好,Lele又想了一个新点子:他将制作一个全球Tetris高手排行榜,定时更新,名堂要比福布斯富豪榜还响。关于如何排名,这个不用说都知道是根据Rating从高到低来排,如果两个人具有相同的Rating,那就按这几个人的转载 2012-12-03 22:02:08 · 384 阅读 · 0 评论 -
hdu 1443 Joseph+暴力打表
题目大意:k个好人,k个坏人,确定n,利用Joseph方法删除所有坏人.由于数据规模,可以利用暴力打表,以后能打表就尽量打表。这题原本模拟数据时间完全够的,但是测试数据有很多重复的,导致很多人超时,暗坑!!!!以后要注意点这种情况。打表:#includeint main(){ int n,a[14]={0,2,7,5,30,169,441,1872,7632,174原创 2012-12-03 16:33:24 · 695 阅读 · 0 评论 -
hdu1233 并查集+Kruskal
题意:n个城市,给出城市间的距离,求最短路;利用Kruskal算法:先选取最短路,再从该集合外找次短路。并查集思想:将多点合并的方法为对其父节点p【】赋值指向根节点。找到亮点父节点,根据父节点来判断是否合并。Sample Input31 2 11 3 22 3 441 2 11 3 41 4 12 3 32 4 23 4 5原创 2012-12-03 21:55:30 · 506 阅读 · 0 评论 -
poj3625 最小生成树 Prim
DescriptionFarmer John had just acquired several new farms! He wants to connect the farms with roads so that he can travel from any farm to any other farm via a sequence of roads; roads already原创 2012-12-04 11:23:31 · 979 阅读 · 0 评论 -
最短路径 之 Dijkstra算法
Dijkstra算法又称为单源最短路径,所谓单源是在一个有向图中,从一个顶点出发,求该顶点至所有可到达顶点的最短路径问题。 设G=(V,E)是一个有向图,V表示顶点,E表示边。它的每一条边(i,j)属于E,都有一个非负权W(I,j),在G中指定一个结点v0,要求把从v0到G的每一个接vj(vj属于V)的最短有向路径找出来(或者指出不存在)。 Dijstra算法是运用贪转载 2012-12-04 13:18:38 · 1123 阅读 · 0 评论 -
Kruskal Prim Dijkstra
这三个算法每本算法书都要讲到,这次看《算法之道》又复习了一遍,觉得有些新的领悟,写个模板记录一下。 Kruskal和Prim算法解决的问题都是最小生成树问题,即对于一个图G,找到它的最小生成树T,其中E'包含于E,使得所有V都连通。Dijkstra算法解决的是单源多点最短路径问题,即对于一个图G和一个起点S,为图中的其它所有节点找到距离S最近的路径。所说的图都是加权图,如果是均权图或者权重为一的图转载 2012-12-08 16:42:22 · 601 阅读 · 0 评论 -
poj2485 kruskal与prim
DescriptionThe island nation of Flatopia is perfectly flat. Unfortunately, Flatopia has no public highways. So the traffic is difficult in Flatopia. The Flatopian government is aware of this problem原创 2012-12-09 15:16:01 · 2578 阅读 · 0 评论 -
hdu1874 Dijkstra 最短路
某省自从实行了很多年的畅通工程计划后,终于修建了很多路。不过路多了也不好,每次要从一个城镇到另一个城镇时,都有许多种道路方案可以选择,而某些方案要比另一些方案行走的距离要短很多。这让行人很困扰。现在,已知起点和终点,请你计算出要从起点到终点,最短需要行走多少距离。 Input本题目包含多组数据,请处理到文件结束。每组数据第一行包含两个正整数N和M(0接下来是M原创 2012-12-04 22:15:17 · 638 阅读 · 0 评论 -
poj2253 Dijkstra变形
DescriptionFreddy Frog is sitting on a stone in the middle of a lake. Suddenly he notices Fiona Frog who is sitting on another stone. He plans to visit her, but since the water is dirty and full of原创 2012-12-09 21:49:27 · 1632 阅读 · 0 评论 -
二进制算法
首先是6个二进制的运算符:运算符 含义 描述& 按位与 如果两个相应的二进制位都为1,则该位的结果值为1,否则为0| 按位或 两个相应的二进制位中只要有一个为1,该位的结果值为1^ 按位异或 若参加运算的两个二进制位值相同则为0,否则为1~ 取反 ~是一元运算符,用来对一个二进制数按位取反,即将0变1,将1变0>> 右移 将一个数的各二进制位右移N位,移到右端的低位被舍原创 2012-12-19 17:37:55 · 4282 阅读 · 0 评论 -
poj 1125 基础Floyd
以后还是不把原题贴出来了。就说大意。题意:给出股市经纪人个数n,消息经过每个人需要一定时间,给出不同人之间消息传输的时间,求出从哪个人开始传输消息能最快传遍所有人。思路:多源的最短路,Floyd!。第一次做FLOYD:总结算法核心for k-nfor i-nfor j-n map[i][j]=min(map[i][j],map[i][k]+map[k][j])原创 2012-12-12 17:17:29 · 471 阅读 · 0 评论 -
1511 基础spfa
题意,求0点到N-1点的来回最短路。这题是基础spfa题:坑爹的用了一个下午的时间弄,这题的输入居然要用scanf,为啥没hit提示呢,以后遇到TLE就要考虑是否输入的问题了。总结下spfa算法,比较高效的算法,有点繁琐,主要是利用了邻接表和队列的形式,与bfs很像。同时可以利用入队次数到达V判断是否有负环。spfa优化算法在这题用不着。。 #include#inc原创 2012-12-16 17:26:36 · 531 阅读 · 0 评论 -
poj 1860 Bellman_ford
总结bellman_ford算法:主要考虑到带负权边的图,这样的图,对于存在负权边时无法用dfs,prim等求最短路的。因为每次更新不能确定是否有正值与负值相加得出错误的最短路径的点。bellman_ford就可以解决这个问题。判断方法:若图不存在负权值的时候,每一次做全部边的松弛操作(判断src->j的长度是否大于src-->i+i-->j的长度)则可至少确定一个点的最短路径。则原创 2012-12-15 21:29:14 · 646 阅读 · 0 评论 -
SPFA算法
/*SPFA(Shortest Path Faster Algorithm) [图的存储方式为邻接表]是Bellman-Ford算法的一种队列实现,减少了不必要的冗余计算。算法大致流程是用一个队列来进行维护。 初始时将源加入队列。 每次从队列中取出一个元素,并对所有与他相邻的点进行松弛,若某个相邻的点松弛成功,则将其入队。 直到队列为空时算法结束。它可以在O(kE)的时间复杂度转载 2012-12-15 21:59:30 · 386 阅读 · 0 评论 -
C++大数模板 hdu1134 Catalan数
Catalan数 中文:卡特兰数 原理: 令h(1)=1,h(0)=1,catalan数满足递归式: h(n)= h(1)*h(n-1) + h(2)*h(n-2) + ... + h(n-1)h(1) (其中n>=2) 另类递归式: h(n)=((4*n-2)/(n+1))*h(n-1); 该递推关系的解为: h(n+1)=C(2n,n)/(n+1原创 2013-03-16 16:14:29 · 1512 阅读 · 0 评论 -
(水)hdu1212,1753用来练习java大数
1212import java.math.*;import java.util.*;public class Main { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub BigInteger a,b;原创 2013-03-16 14:48:54 · 672 阅读 · 0 评论 -
ACM中java的使用
这里指的java速成,只限于java语法,包括输入输出,运算处理,字符串和高精度的处理,进制之间的转换等,能解决OJ上的一些高精度题目。1. 输入:格式为:Scanner cin = new Scanner (new BufferedInputStream(System.in));例程:import java.io.*;import java.math.*;import转载 2013-03-17 18:21:03 · 390 阅读 · 0 评论 -
POJ2965 状态压缩+BFS,DFS枚举,以及大牛的解法~
和poj1753非常相似,这题用状态压缩+BFS同样可以解,状态压缩就是用二进制来表示一种状态。这是我在1753上改的BFS+状态压缩代码: //二进制+BFS写法#includeusing namespace std; //解决问题路径搜索bool flag[65536];int step[65536];struct con{ int f;原创 2013-03-15 16:53:37 · 2668 阅读 · 0 评论 -
USACO Problem 77:Greedy Gift Givers解题报告
Greedy Gift GiversA group of NP (2 ≤ NP ≤ 10) uniquely named friends has decided to exchange gifts of money. Each of these friends might or might not give some money to any or all of the other fri原创 2013-04-01 20:54:03 · 808 阅读 · 0 评论 -
USACO Dual Palindromes
这题和上题基本一样,但是看翻译时被坑了...Dual PalindromesMario Cruz (Colombia) & Hugo Rickeboer (Argentina)A number that reads the same from right to left as when read from left to right is called a palindrome. Th原创 2013-04-01 20:57:46 · 434 阅读 · 0 评论 -
USACO Mixing Milk
//很水的一题,用一次结构体排序就过了..Mixing MilkSince milk packaging is such a low margin business, it is important to keep the price of the raw product (milk) as low as possible. Help Merry Milk Makers get the原创 2013-04-01 20:58:20 · 454 阅读 · 0 评论 -
poj1088滑雪搜索dfs
#includeusing namespace std;#define MAXN 20000int map[105][105];int f[105][105];int x[]={0,0,1,-1};int y[]={1,-1,0,0};void dfs(int i,int j){ for(int k=0;k { if(map[i+x[k]][j+y[k原创 2013-04-01 21:00:57 · 577 阅读 · 0 评论 -
完全背包 poj 1384
#include#include#include#includeusing namespace std;const int maxn=500;const int maxdp=10010;int p[maxn],w[maxn];int dp[maxdp];int main(){ //freopen("in.txt","r",stdin); int t;原创 2013-04-01 21:02:46 · 545 阅读 · 0 评论 -
poj 1797 Dijkstra 变形
刚做完2253就做这题了。。和2253基本一样Dijkstra的变形,可以用dfs写,试了一下,但是好像又写了个最短路的递归版....Dijkstra变形的时候注意找的是最大路径。虽然大致代码都自己编出来了,但是还是有好多细节没把握好,没能1a过。 #include#include#include#includeusing namespace std;#define原创 2012-12-11 11:06:47 · 469 阅读 · 0 评论 -
POJ 1426 广搜BFS
DescriptionGiven a positive integer n, write a program to find out a nonzero multiple m of n whose decimal representation contains only the digits 0 and 1. You may assume that n is not greater than 20原创 2012-12-03 22:30:35 · 395 阅读 · 0 评论 -
sticks hdu 1455 dfs+减枝
题意,给出被割断的n个树枝的长度;求出其最小原长.input95 2 1 5 2 1 5 2 1641 2 3 450经典的一道深授,要经过多次减枝://第一次,从大到小判断短棒;即如(a,b,c)其中c=a+b;则总先判断c;//第二次,y记录判断到第几根木棒,下一次选取木棒则从第几根开始. //第三次,若判断第i根木棒失败,则不必判断与其相同原创 2012-12-03 16:25:56 · 490 阅读 · 0 评论 -
Complete Search 枚举搜索
Complete Search 枚举搜索译 by Lucky Crazy思想:写枚举搜索时应遵循KISS原则(Keep it simple stupid,译为“写最单纯愚蠢的程序”,意思是应把程序写得尽量简洁),竞赛时写程序的最终目标就是在限制时间内求出解,而不需太在意否还有更快的算法。枚举搜索具有强大的力量,他用直接面向答案并尝试所有方案的方法发现答案。这种算法几乎总是解题时你第转载 2013-04-01 20:50:02 · 875 阅读 · 0 评论 -
USACO:Broken Necklace
思路:看了看像是动态规划中的最大子串,以前做过一个类似的,网上说是用模拟的水题,自己想用动态规划做一做,就试了一试....时间:用了3天...每天YY几个小时....提交情况:不谈了...心得:打代码的时候都把注释给加上,思路比较清晰,只是后来发现思路漏洞逐渐显露出来,太多情况没有注意,导致后面的程序不断修改,很难看!坑爹的........... ***原创 2013-04-01 20:52:23 · 436 阅读 · 0 评论 -
USACO:Friday the Thirteenth
考点:水题?思路:计算从1900 1月1日开始计算天数,7天一周循环来记录13号星期几提交情况:1A收获:.....经验:读题读题读题...最后输出理所当然的想着是从星期一开始输出,结果想了2个小时....还有对循环范围的控制******************************************************************Friday th原创 2013-04-01 20:54:45 · 477 阅读 · 0 评论 -
USACO Prime Cryptarithm
//这题是一简单的一个递归 算锻炼水体熟练度吧~~~Prime CryptarithmThe following cryptarithm is a multiplication problem that can be solved by substituting digits from a specified set of N digits into the positions原创 2013-04-01 20:59:19 · 405 阅读 · 0 评论 -
hdu1181 变形课 dfs
变形课Problem Description呃......变形课上Harry碰到了一点小麻烦,因为他并不像Hermione那样能够记住所有的咒语而随意的将一个棒球变成刺猬什么的,但是他发现了变形咒语的一个统一规律:如果咒语是以a开头b结尾的一个单词,那么它的作用就恰好是使A物体变成B物体.Harry已经将他所会的所有咒语都列成了一个表,他想让你帮忙计算一下他是否能完成老师的作业,将一个原创 2012-12-03 22:40:35 · 562 阅读 · 0 评论 -
USACO Palindromic Squares
简单的1-300递归搜索主要的2处代码/* 函数circle用于判断正整数n的d进制数表示形式是否是回文数 */int circle(int n, int d){ int s=0,m=n; while(m) { s=s*d+m%d; m/=d; } return s==n;}//函数pri原创 2013-04-01 20:45:29 · 441 阅读 · 0 评论 -
USACO Transformations 题解
一题简单的模拟,第一次做这种旋转矩阵的,开始觉得有点难,其实后来仔细想想,慢慢的来也是挺简单的,提交两次通过,第一次错误是因为没有严格按照题目要求的顺序给出答案.TransformationsA square pattern of size N x N (1 <= N <= 10) black and white square tiles is transformed into ano原创 2013-04-01 20:48:14 · 573 阅读 · 0 评论 -
USACO题解milk2 挤牛奶
类型:模拟.发现自己做模拟老是漏这漏那的,导致数据总是过不了!!!!!不给出中文了,一个求数列并集最长子串的模拟.很水 但是我很坑...思路:对挤奶时间结构体排序,然后递归求最大值;收获:学会用结构体的排序,qsort的使用; 错误情况,模拟时的方法漏洞!!!!!!!!!!!!!!!!!!!!!!!!!!坑..Milking CowsThree farmers r原创 2013-04-01 20:49:04 · 1003 阅读 · 0 评论 -
USACO Barn Repair
//类型,贪心 此题思路:用一个数组储存牛棚有牛的编号,再用一个数组储存每个相邻的牛之间的距离.然后每次的最短距离便是减去最长的相邻牛之间的距离./*ID: jun41821PROG: barn1LANG: C++*/#include #include #include using namespace std;ofstream fout ("barn1.ou原创 2013-04-01 20:56:19 · 387 阅读 · 0 评论 -
USACO Mixing Milk
//很水的一题,用一次结构体排序就过了..Mixing MilkSince milk packaging is such a low margin business, it is important to keep the price of the raw product (milk) as low as possible. Help Merry Milk Makers get the原创 2013-04-01 20:56:44 · 524 阅读 · 0 评论 -
USACO Palindromic Squares
简单的1-300递归搜索主要的2处代码/* 函数circle用于判断正整数n的d进制数表示形式是否是回文数 */int circle(int n, int d){int s=0,m=n;while(m){s=s*d+m%d;m/=d;}return s==n;}//函数printd将正整数n由10进制转换为B进制void printd( in原创 2013-04-01 20:57:20 · 343 阅读 · 0 评论 -
USACO Calf Flac
经典的 最大回文子串Calf FlacIt is said that if you give an infinite number of cows an infinite number of heavy-duty laptops (with very large keys), that they will ultimately produce all the world's great原创 2013-04-01 20:58:47 · 464 阅读 · 0 评论 -
poj 1276 完全背包
poj 1276Cash MachineTime Limit: 1000MSMemory Limit: 10000KTotal Submissions: 18242Accepted: 6364DescriptionA Bank plans to install a machine for cash withdrawal. The machine is able to deliv原创 2013-04-01 21:03:31 · 715 阅读 · 0 评论