
ACM--题目
文章平均质量分 73
u010793761
这个作者很懒,什么都没留下…
展开
-
acm 模板
ACM模板并查集--------------------------------------------------------------------------------------( 2 )母函数--------------------------------------------------------------------------------------原创 2013-10-07 14:22:36 · 540 阅读 · 0 评论 -
poj1860_最短路bellman Ford算法应用
题意简述某城市有M(1算法分析本题可抽象为一张有N个节点的有向图,一个兑换站就是它所兑换的两种货币间的两条有向边。边的权值有两个:汇率及手续费。问题可化简为:从定点出发找正权环。由于可以通过无限次走正权环使得收益趋于无穷,所以不考虑返程开销。容易发现,这是Bellman-Ford算法的逆用。将求最短路改为求最长路,再找可以无限松弛的正环,即可得解。只原创 2014-01-05 19:30:40 · 836 阅读 · 0 评论 -
poj2828线段树单点更新
刚开始看到题目,想用memmove偷懒,结果TLE,后来查了查,才发现用memmove也是O(n^2)的复杂度。。。#include #include string.h>int seq[222222];int main(){ int n,i,j,idx,posi,vali,t; while (~scanf("%d",&t)) { mems原创 2014-09-04 20:53:06 · 437 阅读 · 0 评论 -
延迟标记思想精讲
一 概述线段树,类似区间树,是一个完全二叉树,它在各个节点保存一条线段(数组中的一段子数组),主要用于高效解决连续区间的动态查询问题,由于二叉结构的特性,它基本能保持每个操作的复杂度为O(logn)。线段树的每个节点表示一个区间,子节点则分别表示父节点的左右半区间,例如父亲的区间是[a,b],那么(c=(a+b)/2)左儿子的区间是[a,c],右儿子的区间是[c+1,b]。原创 2014-03-06 16:12:16 · 2402 阅读 · 0 评论 -
Prim算法和Kruskal算法
Prim算法和Kruskal算法都能从连通图找出最小生成树。区别在于Prim算法是挨个找,而Kruskal是先排序再找。 一、Prim算法: Prim算法实现的是找出一个有权重连通图中的最小生成树,即:具有最小权重且连接到所有结点的树。(强调的是树,树是没有回路的)。 Prim算法是这样来做的: 首先以一个结点作为最小生成树的初始原创 2013-10-19 22:04:50 · 808 阅读 · 0 评论 -
poj1837Balance dp
转载请注明出处:優YoU http://user.qzone.qq.com/289065406/blog/1299341345提示:动态规划,01背包初看此题第一个冲动就是穷举。。。。不过再细想肯定行不通= =O(20^20)等着超时吧。。。我也是看了前辈的意见才联想到01背包,用动态规划来解 题目大意:有一个天平,天平左右两边各有若干个钩子,总原创 2014-11-20 19:20:34 · 363 阅读 · 0 评论 -
hdu1272小希的迷宫 基础并查集
题意:输入包含多组数据,每组数据是一个以0 0结尾的整数对列表,表示了一条通道连接的两个房间的编号。房间的编号至少为1,且不超过100000。每两组数据之间有一个空行。 整个文件以两个-1结尾。如果输入完之后发现有圈存在,则输出NO,否则输出YES。解题思路:输入的两个房间号,查找它们各自的根,如果根相同,则连接就会形成圈,所以做好标记。代码:#include#inc原创 2014-02-22 15:26:31 · 458 阅读 · 0 评论 -
hdu1863畅通工程
畅通工程Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 13854 Accepted Submission(s): 5727Problem Description省政府“畅通工程”的目标是使全省任何两个原创 2014-02-23 20:55:26 · 541 阅读 · 0 评论 -
hdu1102Constructing Roads
Constructing RoadsTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 12166 Accepted Submission(s): 4621Problem DescriptionThere原创 2014-02-23 14:41:28 · 538 阅读 · 0 评论 -
hdu 2062 输出第几个子集的所有元素
Problem Analyse 考虑一个集合 An = { 1, 2, ..., n}。比如,A1={1},A3={1,2,3}。我们称一个非空子集元素的排列为一个子集序列。对所有的子序列按字典顺序排序。你的任务就是给出第m个子序列。Algorithm Analyse 首先我们来看看An一共有多少个子集。n=1时,原创 2014-04-05 22:38:14 · 695 阅读 · 0 评论 -
hdu 2159 二维完全背包
/*dp[j][l] = Max(dp[j][l],dp[j-c[i]][l-1]+w[i])它表示 用掉了j点的忍耐度,并且杀了l个怪后,所获得的最大经验数。*/ #include#include#include#includeusing namespace std;#define MAX(a, b) (a) > (b) ? (a) : (b)const i原创 2013-08-23 10:06:52 · 574 阅读 · 0 评论 -
hdu1869_最短路模板题
#include#include#include#include#includeusing namespace std;const int LEN=205;const int INF=0x3f3f3f3f;int vis[LEN], know[LEN][LEN], dis[LEN];void init(){ int i, j; for(i=0; i<=LEN;原创 2014-01-05 14:41:48 · 585 阅读 · 0 评论 -
hdu4472 Count dp
本题的题意就给你n个点,使之构成一个树,当要求每一层的每个节点的子节点数要相同。解法:对于给的n个点,我们先将boss(既父节点)去掉,因为这个只有一种放法,于是还剩下n-1个点,因为要求每一层的每个节点的子节点数要相同,所以可将这n-1个节点m等分,每份为(n-1)/m个点,再递归求解即可,边界条件显然是n=1,dp[n]=1。原创 2014-11-20 19:03:46 · 438 阅读 · 0 评论 -
poj1062dijkstra
思路:以物品为结点,物品之间的优惠价格为边权值建图,酋长10000金币当做0号结点,题意就是求图中各结点到0号结点的最短路长度,再加上终点处物品的价值,恰好就是探险家经过这个物品买卖途径所需要付出的金钱。用dijkstra算法求出单源最短路径,从各个结点的最短路径中选出最短的那条就是答案。基本还是经典最短路问题,但做了一点小小变形主要是:1 有结点等级限制,需要枚举等级 2 把终点的物品价值计入最原创 2013-09-28 15:23:37 · 516 阅读 · 0 评论 -
hdu4034 逆向算
题目描述:给你一个n*n矩阵来表示一个图,矩阵的每个元素gij都表示i点到j点的最短路,其中对角线元素总是0。问满足这个矩阵的图的最少边数是多少,若不存在,则输出impossible。显然,边数最多的情况是每两点之间都有最短的直边相连,边数最多为n2-n,在每两点都有最短直边相连情况下,我们以一一删去多余的边,最后就是最终结果。 考虑:若gij = gik + gkj ,i 与 j的这条边可以原创 2013-08-20 13:36:45 · 659 阅读 · 0 评论 -
hdu1213How Many Tables 基础题
题目大意:Ignatius 的生日这天来了很多朋友,到了吃饭的时候朋友们做的桌子上必须认识的朋友才坐一桌, 不认识的另开一桌,问至少需要多少张桌子。我的解法: 使用并查集合并认识的朋友,他们认识的坐一桌,初始化是每个人都不认识别人;合并完成之后就是看看还有 ”哪些人认识的还是自己“ ( fa[i]==i ) 因为不等于的都是有朋友的,所以他和他的朋友坐一桌,所以等于的桌子数原创 2014-02-19 15:53:54 · 477 阅读 · 0 评论 -
二分匹配及应用
开始重新学习二分匹配,发现以前几乎什么都不会,仅仅是记了个匈牙利算法和学生选课的模型,做不出题来也很正常,下面写下新认识.在竞赛中,围绕二分图而展开的题目层出不穷,需要从根本上理解问题.首先,需要了解二分图的概念,至于二分图,通俗的说,就是顶点可以分成两个部分,每个部分之内不能有边的图,相当于男女(排除gay啊).一定要深刻理解下.对于二分图的一些浅显易懂的性质:原创 2014-03-08 17:36:33 · 762 阅读 · 0 评论 -
POJ1062 昂贵的聘礼 单源最短路径变形 dijkstra算法
转自:http://blog.youkuaiyun.com/yangliuy/article/details/7173287原创 2014-05-19 22:00:01 · 492 阅读 · 0 评论 -
hdu1325&&poj1308 Is It A Tree? 基础并查集
Is It A Tree?Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 11616 Accepted Submission(s): 2672Problem DescriptionA tree is a原创 2014-02-23 09:39:11 · 569 阅读 · 0 评论 -
poj2828之单点更新
题目意思:有n个人排队,每个人有个pos值,和value值,表示他可以插到第pos个人的后面,输出最后的队形序列。 解题思路:如果顺着插的话,要移动后面的队列,如果用链表的话,找到插入的位置很费时。 如果逆着考虑的话,当前的人插到恰好有pos个空位的最小的地方,就很简单。用线段树维护区间内空位的个数,如果要求的空位数大于左边区间的空位数,则减去左边的空位数,再在右边查找原创 2013-12-08 20:57:34 · 577 阅读 · 0 评论 -
华东交通大学2013ACM“双基”程序设计竞赛 解题报告
华东交通大学2013年ACM“双基”程序设计竞赛 最终排名:http://acm.hdu.edu.cn/diy/contest_ranklist.php?cid=20955&page=1华东交通大学2013年ACM“双基”程序设计竞赛赛后重挂(对题目感兴趣的同学可以去该网址重新提交代码进行测试):http://acm.hdu.edu.cn/diy/contest_show.php?cid=21原创 2013-10-27 21:59:18 · 1336 阅读 · 0 评论 -
poj2573怎样方案过桥时间最短
一、问题 在漆黑的夜里,四位旅行者来到了一座狭窄而且没有护栏的桥边。如果不借助手电筒的话,大家是无论如何也不敢过桥去的。不幸的是,四个人一共只带了一只手电筒,而桥窄得只够让两个人同时过。如果各自单独过桥的话,四人所需要的时间分别是1、2、5、8分钟;而如果两人同时过桥,所需要的时间就是走得比较慢的那个人单独行动时所需的时间。问题是,如何设计一个方案,让这四人尽快过桥。 假设原创 2014-03-08 17:10:36 · 876 阅读 · 0 评论 -
hdu 3791 链表实现二叉搜索树
二叉搜索树Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2679 Accepted Submission(s): 1170Problem Description判断两序列是否为同一二叉搜索树序列原创 2014-04-29 15:27:38 · 443 阅读 · 0 评论 -
hdu 3999二叉树先序遍历
The order of a TreeTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1040 Accepted Submission(s): 549Problem DescriptionAs we k原创 2014-04-29 19:21:37 · 517 阅读 · 0 评论 -
hdu题目分类
分类一(详细): 分类二:基础题:1000、1001、1004、1005、1008、1012、1013、1014、1017、1019、1021、1028、1029、1032、1037、1040、1048、1056、1058、1061、1070、1076、1089、1090、1091、1092、1093、1094、1095、1096、1097、1098、1106、1108、1原创 2014-03-01 09:27:17 · 690 阅读 · 0 评论 -
hdu2874 建树保存查找功能丰富的代码
//hdu 2874#include#include#include#includeusing namespace std;const int maxn = 10005;vectorG[maxn],V[maxn];bool vis[maxn];int pre[maxn][20];long long dis[maxn][20];int deep[maxn];void dfs原创 2014-03-20 21:25:56 · 468 阅读 · 0 评论 -
hdu1711 hdu1686 hdu3336 hdu1358
hdu 1711kmp算法模板题,没明白问什么这里下标一定要是1开始,0开始就错了,或许是我还有地方没想到只是过了样例而已,改为1过了代码:#include #include#include#include#include#include#include#includeusing namespace std;const int LEN1=1000105;原创 2014-03-17 19:06:18 · 468 阅读 · 0 评论 -
hihoCoder #1014 : Trie树 使用递归建树的方法
时间限制:10000ms单点时限:1000ms内存限制:256MB描述小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在编程的学习道路上一同前进。这一天,他们遇到了一本词典,于是小Hi就向小Ho提出了那个经典的问题:“小Ho,你能不能对于每一个我给出的字符串,都在这个词典里面找到以这个字符串开头的所有单词呢?原创 2014-07-21 20:29:05 · 1017 阅读 · 0 评论 -
hdu 1426 数独, dfs
超时了,觉得是dfs#include#include#include#include#include#include#includeusing namespace std;const int LEN=10;bool ma1[LEN][LEN], ma2[LEN][LEN], ma3[LEN][LEN];bool ma[LEN][LEN][LEN];ch原创 2014-09-06 20:21:03 · 470 阅读 · 0 评论 -
hdu 1228 这种水题最烦人了
#include#include#include#include#include#include#include#include#includeusing namespace std;string a[3], b[3], t;int k, g, na, nb;int process(string s){ if( s=="zero" ) return 0;原创 2014-09-07 10:59:40 · 460 阅读 · 0 评论 -
hdu 2149 巴什博奕
#include#include#include#include#include#include#include#include#includeusing namespace std;const int LEN=20;const int INF=0x3f3f3f3f;int n, m;int main(){ while( cin>>m>>n ) {原创 2014-09-07 16:31:19 · 536 阅读 · 0 评论 -
hdu 1496 整数hash
这样的思想确实可以开阔视野#include#include#include#include#include#include#includeusing namespace std;const int LEN=2000006;const int OFFSET=1000000;const int RANGE=101;int hash[LEN];int main()原创 2014-09-06 22:28:14 · 436 阅读 · 0 评论 -
算法解决
大致题意:有N只奶牛,其中奶牛A认为奶牛B备受注目,而奶牛B也可能认为奶牛C备受注目。奶牛们的这种“认为”是单向可传递的,就是说若奶牛A认为奶牛B备受注目,但奶牛B不一定会认为奶牛A备受注目。而当A认为B备受注目,且B认为C备受注目时,A一定也认为C备受注目。 现在给出M对这样的“认为...备受注目”的关系对,问有多少只奶牛被除其本身以外的所有奶牛关注。原创 2014-12-03 17:15:29 · 600 阅读 · 0 评论 -
KMP模板题
#include #include int N,M;int a[1000005],b[10005],next[10005];void getnext(){ int k=1,j=0; while (k<M) { if (j==0||b[j]==b[k]) { ++j; ++k;原创 2013-08-24 19:59:16 · 514 阅读 · 0 评论 -
关于KMP算法当中的next函数
转载来源:http://blog.youkuaiyun.com/phil2036/article/details/2068674 首先先贴出KMP算法的框架代码,这段代码使用C语言当中的字符串数据结构,因此字符串当中第一个字符的下标为零。int Index(const char * str1,const char * str2,int pos){ int * n原创 2013-08-24 16:50:44 · 550 阅读 · 0 评论 -
hdu2546 0-1背包 饭卡
http://www.cnblogs.com/gt123/p/3461195.html#include#include#include#include#include#include #include#includeusing namespace std;const int LEN=1005; int p[LEN], w[LEN*50];int main(原创 2014-03-31 21:50:41 · 435 阅读 · 0 评论 -
hdu1856More is better基础并查集
More is betterTime Limit: 5000/1000 MS (Java/Others) Memory Limit: 327680/102400 K (Java/Others)Total Submission(s): 11685 Accepted Submission(s): 4325Problem DescriptionMr Wang原创 2014-02-23 10:50:57 · 541 阅读 · 0 评论