acm
文章平均质量分 77
sting0218
Stay Hungry. Stay Foolish.
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
纪录动态规划(浙大1108FatMouse's Speed,杭电1069Monkey and Banana)解题报告
这一类型的题目很多,就是对一个二维数组进行动态规划,但题目所要求得符合要求的最长串一般都是可以不按输入的顺序来的,所以在进行动态规划之前要根据题目要求对数组进行排序。。。。题目大意为,一个二维数组,每次输入w,s,要求W[m[1]] andS[m[1]] > S[m[2]] > ... > S[m[n]]输出最长串的长度和串中元素数组下标。因为要求原来输入数组的下标,所以本原创 2010-05-16 09:43:00 · 876 阅读 · 0 评论 -
pku1160postoffice邮局分布问题结题报告
经典问题。最主要的是要用每个邮局的分布进行动态规划,即由求每一个邮局在所有城镇中的的最小值,让后依次类推,再求第二个,第三个。。。最后得到答案。。题目给出m个村庄及其距离,给出n个邮局,要求怎么建n个邮局使代价最小。思路:用opt[i][j]记录把前i个邮局建到前j个村庄中的最优解,用cost[i][j]记录所有在i到j村庄中,建1个邮局的最小代价。显然邮局应该设到中点(很重要)。让前i个原创 2010-05-16 09:42:00 · 437 阅读 · 0 评论 -
最小生成树的prim算法:pku2485Highways、PKU1258Agri-Net解题报告
对于图,其生成树中的边也带权,将生成树各边的权值总和称为生成树的权,并将权值最小的生成树称为最小生成树(Minimun Spanning Tree),简称为MST。有两种非常典型的算法:Prim算法和kruskal算法,这两种算法都采用了贪心策略。Prim算法的基本思想是:(1) 在图G=(V,E)(V表示顶点,E表示边)中,从集合V中任取一个顶点(例如取顶点v0)放入集合U中,这时U={原创 2010-05-16 09:40:00 · 430 阅读 · 0 评论 -
二叉树查找树字符处理题目 2418Hardwood Species
这题思路和其它二叉查找树一样,都是插入,查找,左孩子,有孩子等等,但是不同的是每个节点是字符串而不是数字,我用了字符串比较来做插入,但是不知为什么总是有错误,估计是指针使用的问题。。这是直接用字符串做的错的代码(待改)#include#include#define max 10001char *key[max];int root=0,sum=0,size=0;i原创 2010-05-16 09:37:00 · 459 阅读 · 0 评论 -
pku3705Reverse(用最少的块移动实现逆序操作 )
这题由一个推导公式的:事实上,给出1到n的逆序排列,最少需要Ceil[(n+1)/2]次块移动就可以完成排序(除了n=1或n=2,Ceil表示取上整)。当n为奇数时,一个满足要求的算法是:每一次把数字n后面那一段的正中间两个元素拿出来,插入到数字n前面那一段数的正中间。当数字n后面的数被移动完了后,把它前面n-1个数左右两半对换一下就行了。例如,当n=7时:7原创 2010-05-16 09:35:00 · 300 阅读 · 0 评论 -
PKU3253Fence Repair解题报告
这题可用哈夫曼树做,可简短时间,但用普通做法也可。这样的话关键就是怎么求最小的情况,一开始以为是从大到小排序,每次取最大的数加进去就好,这是错的。。把一块木板据成N块不好想的话,那么把这个过程反过来:把N块木板拼成一块,每拼一次所需代价是两块木板长度之和。这样就是很明显的哈夫曼树了。每次从现有的木板中选取最短的两块木板,拼在一起变成新的一块后放回去,重复这个过程原创 2010-05-16 09:42:00 · 303 阅读 · 0 评论 -
并查集PKU2492A Bug's Life解题报告
这题和1703几乎是一样的,就是看两个点之间的点是偶数还是基数,关键是记录下每一个点的权数(即每一点在树中的层数)。。。比如像两个串1-2-3和 4-5-6-7,如果吧2和6连,那么怎么去改变合成串中个点的权数是个头疼的问题,只要这个问题解决,那么问题也就迎刃而解了。典型思路,用fa[i]代表i的父节点,这里进行路径压缩,所以每个i的父节点都是它所在的树的根结点。。原创 2010-05-16 09:41:00 · 402 阅读 · 0 评论 -
Dijkstra和prim 算法的区别(PKU2253frogger解题报告)
这两个算法长的十分相像,所以模板都差不多。D算法是用于求最短路径,通弗洛伊德算法,prim算法是用于求最小生成树的,同kruskal算法。两个的模板都是先用数组origin存放原始数据,max_distance存放矩阵中的最大值,result存放最小生成树(或最短路径)的最大边,opt存放节点和最小生成树之间的最小距离, flag判断是否已经加入到最小生成树原创 2010-05-16 09:40:00 · 835 阅读 · 0 评论 -
二部图匹配匈牙利算法(转)
这种题目一般是一个东东对应着另外的东东,一般是多对多的关系,这就形成了一个二部图,问这个二部图最大的匹配数是多少(就是形成一个一对一的关系,求最大的一对一关系的个数)。模板:#define MAXN 310int nx,ny,mat[MAXN][MAXN],fy[MAXN],matx[MAXN],maty[MAXN];int path(int u) {int v;for (v=转载 2010-05-16 09:36:00 · 1585 阅读 · 0 评论 -
strtok函数的使用
转:strtok: 用法:token = strtok(source-str,seperator-str) 用途:在source-str中找出以seperator-str中的字符为分隔的字符串,即是源串中除去了含有分隔串中的所有字符后余下的一段段的字符串,每调用一次找到一串,找不到则返回空串。 注意:返回值是指向源串的指针,所以同样要保证源串的有效性,此外,每次调用返回找到的子串的时候都会把源转载 2010-05-16 09:47:00 · 335 阅读 · 0 评论
分享