![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法/数据结构
文章平均质量分 63
Unimen
享受编程,挑战自我!
展开
-
把ACM单独的拿出去
以后会把ACM在算法分类下拿出去,为的就是给详细分类下,条理清楚下,每个类型的题,每个类型的算法会单独列出,算法分类里写综合性的东西,以前写在这个分类下的属于ACM的会慢慢放到相应的类别里,相应类别暂时只指各oj中相应类别题目的题解原创 2011-09-10 21:52:03 · 566 阅读 · 0 评论 -
poj 2246Matrix Chain Multiplication
/*解题报告:1、用栈模拟乘法,控制计算顺序 2、这种输入模式的输入方法 */#include #include #include using namespace std;struct Node{ int rows,cols;};map matrixs;int main(){ int n; char name; cin>>n;原创 2011-06-18 18:22:00 · 589 阅读 · 0 评论 -
poj 2247 Humble Numbers
/* Name:poj 2247 Humble Numbers Author:Unimen Date: 24/04/11 16:51*//*解题报告:1、递推计算,并打表,注意计算质因数的方法 2、注意输出格式 */#include using namespace std;int anResult[6000];int MinTwo(int原创 2011-06-18 18:19:00 · 506 阅读 · 0 评论 -
poj 1131Octal Fractions
/*解题报告:(0.75)8 = (7*8-1 * 5*8-2) = (0.953125)10 其中负号代理多少次方(0.75)8 = ((5/8 + 7)/8)*/#include #include using namespace std;const int MAX = 100;char szOctal[MAX];char szDest[MAX];in原创 2011-06-18 18:15:00 · 651 阅读 · 0 评论 -
poj 2250 Compromise
/* Name:poj 2250 Compromise Author: UnimenSun Date: 15/05/2011 19:29 Description: 最长公共子序列变形*//*解题报告:最长公共子序列变形题解析:与最长公共子序列不同的时,需要打印方案,解法方法为,在dp的同时,记住方案,也就是代码中的rem数组,但是该题于DAG DP输原创 2011-06-18 18:07:00 · 669 阅读 · 0 评论 -
poj 1185炮兵阵地
/* Name: poj 1185炮兵阵地 Author: UnimenSun Date: 22/05/2011 15:06 Description: 状态压缩DP*//*解题报告:算法: 1.利用二进制表示某个位置有无炮兵状态 2.把任意一行看成一个二进制串,并转化为相应的十进制数,即该行的压缩状态 3.枚举该行原创 2011-06-18 18:04:00 · 577 阅读 · 0 评论 -
poj 1579 Function Run Fun
/* Name: poj 1579 Function Run Fun Author: Unimen Date: 07-05-11 1:16 Description: 记忆化搜索*//*解题报告:记忆化搜索*/#include #include #include using namespace std;int anw[21][21][2原创 2011-06-18 18:02:00 · 454 阅读 · 0 评论 -
poj 2063 Investment
/* Name: poj 2063 Investment Author: Unimen Date: 07/05/11 15:05 Description: 完全背包*//*解题报告:完全背包只需注意一点:注意到The value of a bond is always a multiple of $1 000,可以将value/1000,这样可以将循环次数降原创 2011-06-18 18:01:00 · 459 阅读 · 0 评论 -
poj 2392 Space Elevator
/* Name: poj 2392 Space Elevator Author: Unimen Date: 11/05/2011 20:06 Description:多重背包*//*解题报告:多重背包1、给限制的高度排序后即可转化为多重背包的模型2、多重背包O(VN)的解法:先转化为完全背包,然后在循环的过程中,设置一个计数数组,计录 某个物品原创 2011-06-18 18:00:00 · 638 阅读 · 0 评论 -
poj 1014Dividing
/* Name: poj 1014Dividing Author: UnimenSun Date: 14/05/2011 18:54 Description: 多重背包体积与价值相等*//*解题报告:1、多重背包体积与价值相乘的特例,用线性动规优化解决(数组计数的方法)*/#include #include using namespace s原创 2011-06-18 17:59:00 · 535 阅读 · 0 评论 -
poj 3624 Charm Bracelet
/*解题报告:0-1背包的祼体,适合初学者练习下面的代码用了滚动数组,即用一维数组实现的*/#include #include using namespace std;int main(){ int n, m; int w, d; int i, j; int f[12880]; while(cin>>n>>m) { memset(f原创 2011-06-18 17:57:00 · 394 阅读 · 0 评论 -
HDU 1171 Big Event in HDU
/*解题报告:价值与体积相等的多重背包题可用两种方法解决法一:代码1;线性规划法二:代码2;优先级队列注:线性动规时间复杂度低*///代码一#include #include using namespace std;struct Node{ int vw; int k;}node[105];int n, sum, tempsum;原创 2011-06-18 17:50:00 · 484 阅读 · 0 评论 -
poj 1426 FindTheMultple
/* Name:poj 1426 FindTheMultple Author:Unimen Date: 1/05/2011 13:49 Description:广搜 同余定理 *//*解题报告:1、广搜索,同余定理 */#include #include #include using namespace std;int visite原创 2011-06-18 18:26:00 · 464 阅读 · 0 评论 -
poj 2823 Sliding Window
/* Name:poj 2823 Sliding Window Author: Unimen Date: 08/05/11 18:24 Description: 单调队列 *//*解题报告:单调队列的精典应用 *///STL队列实现 #include #include using namespace std;const int MAX原创 2011-06-18 18:23:00 · 463 阅读 · 0 评论 -
poj 2244Eeny Meeny Moo
/*解题报告:约瑟夫问题的数学解法:为了讨论方便,先把问题稍微改变一下,并不影响原意:问题描述:n个人(编号0~(n-1)),从0开始报数,报到(m-1)的退出,剩下的人继续从0开始报数。求胜利者的编号。我们知道第一个人(编号一定是m%n-1) 出列之后,剩下的n-1个人组成了一个新的约瑟夫环(以编号为k=m%n的人开始):k k+1 k+2 ... n-2, n-1, 0原创 2011-06-18 18:20:00 · 500 阅读 · 0 评论 -
poj 1543Perfect Cubes
#include #include using namespace std;int n;int main(){ int i, j, q, p; while(cin>>n) { for(i=3; i<=n; ++i) { for(j=2; j<=n; ++j) { if(j>i) break; for(q=3原创 2011-06-18 18:18:00 · 517 阅读 · 0 评论 -
poj 2567Code the Tree
/*解题报告:1、巧妙的利用优先队列实现2、注意vectro与set的搭配使用,实现了不易实现的数据结构3、priority_queue的使用方法 4、输入的递归实现:带括号的可以考虑使用递归 */#include #include #include #include using namespace std;void InitObj(vector >原创 2011-06-18 18:23:00 · 750 阅读 · 0 评论 -
poj 1129Channel Allocation
/*解题报告:解析:转发器网络相当于一个无向图,而临近的转发器使用不同的频道相当于无向图的着色问题。即 四色问题。于是可将该题转化为着色问题实现:着色实现: 因为颜色一共就有四种于是可将本题化分为以下两种情况: 1、所有的转发器互不相邻,只要有种颜色 2、用两种或三种颜色去填,看是否可以成功,如果都不成功的话,就需要四 构造无向图:用二维数组gra原创 2011-06-18 18:25:00 · 467 阅读 · 0 评论 -
poj 1041 John's trip
/* Name: poj 1041 Johns trip Author: UnimenSun Date: 21/05/11 15:04 Description: 欧拉回路*//*解题报告:欧拉回路:欧拉回路时要判断图是否存在欧拉回路由于由题意可知图是连通的,因此只须判断图中结点的度数即可无向图存在欧拉回路的条件为:连通且不存在奇点无向图存在原创 2011-06-18 18:28:00 · 802 阅读 · 0 评论 -
二叉排序树
/* Name: 二叉排序树相关操作 Author: Unimen Date: 2011/10/8 13:14:21*//*删除结点比较麻烦,总结如下:4大种情况1、结点p无右孩子:将该点的左孩子变为其在双亲中的同位孩子 1、p为其双亲的左孩子时将其原创 2011-10-08 17:44:03 · 564 阅读 · 0 评论 -
二叉树基本操作c实现
头文件:/* Name: 二叉树基本操作 Author: Unimen Date: 2011/10/6 23:42:57*/#ifndef _BITREE_H_#define _BITREE_H_const int maxn = 100; //树结原创 2011-10-08 17:40:35 · 1383 阅读 · 0 评论 -
poj 1716 Integer Intervals
与 zoj 1508 Intervals相同,均为差分约束,http://blog.csdn.net/unimen/article/details/6719738/* Name: poj 1716Integer Intervals Author: Unimen原创 2011-08-27 09:54:41 · 721 阅读 · 0 评论 -
zoj 1508 Intervals
/* Name: zoj 1508 Intervals Author: Unimen Date: 25/08/11 20:50 Description: 差分约束 *//*解题报告:详见06年冯威论文技巧:不用单独的建图,简图和寻找最短路径可以结合起来,原创 2011-08-25 20:56:40 · 911 阅读 · 0 评论 -
hdu 4006 亚洲预选赛大连站
/* Name: hdu 4006 亚洲预选赛大连站 Author: Unimen Date: 4/09/2011 18:11 Description: 优先级队列 *//*解题报告:用优先级队列维持输入的数,优先级队列队首元素最小,这样优先级队列中元原创 2011-09-04 18:12:14 · 3142 阅读 · 0 评论 -
hdu 1003 MaxSum
/* Name: hdu 1003 Max Sum Author:UnimenSun Date: 25/07/11 15:16 Description: DP */ /*解题报告:简单最长子序列和题,该题是个小变形:要求求出起始位置与终原创 2011-07-25 15:22:50 · 472 阅读 · 0 评论 -
poj 1717 Dominoes
/* Name: poj 1717 Dominoes Author:UnimenSun Date: 3/07/11 21:54 Description: 变形0-1背包*//*解题报告:该题为变形的0-1背包,如果能做到很好的转化解决原创 2011-07-03 18:18:35 · 1517 阅读 · 0 评论 -
joj 2657 简单贪心
/* Name: joj 2657 打水问题 Author:UnimenSun Date: 4/07/11 21:54 Description: 简单贪心 */ #include #include #include usi原创 2011-07-04 14:56:12 · 577 阅读 · 0 评论 -
hdu 2751 命运
/* Name: hdu 2751 命运 Author:UnimenSun Date: 30/06/11 21:54 Description:简单DP *//*解题报告:简单DP转移方程: dp[i][j] = max(dp[i-1][j], dp[i][j-1], dp[i][k]) + array[i][j] k的条件原创 2011-06-30 21:54:00 · 940 阅读 · 0 评论 -
hdu 2752 终曲
/* Name:hdu 2752 终曲 Author:UnimenSun Date: 29/06/11 17:35 Description: 字符串 子串 *//*解题报告:总体思路: 注意到数据量不大,可以先找原串的最短子串,从最短的子串依次试即可,试的过程中注意要保持字典序最小见代码注释寻找子串:以abcd为例:a b c d; ab原创 2011-06-29 17:41:00 · 1328 阅读 · 0 评论 -
hdu 2570 迷瘴
很奇怪的一道题,明明是道很简单的贪心,但怎么弄也是WA,于是干脆放了几天后重写 /* Name: hdu 2570 迷瘴 Author:UnimenSun Date: 28/06/11 20:19 Description: 简单贪心 *//*解题报告: 简单贪心:注意到数据量不是很大,先把pi非递增排序, 从最小的开始枚举直到遇到大于题中给的浓度停原创 2011-06-28 20:27:00 · 868 阅读 · 0 评论 -
博弈知识小结
引言: 有一种很有意思的游戏,就是有物体若干堆,可以是火柴棍或是围棋子等等均可。两个人轮流从堆中取物体若干,规定最后取光物体者取胜。这是我国民间很古老的一个游戏,别看这游戏极其简单,却蕴含着深刻的数学原理。下面我们来分析一下要如何才能够取胜。<br /><br />(一)巴什博奕(Bash Game):<br /> 只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。<br /> 显然,如果n=m+1,那么由于一次最多只能取m个,所以,转载 2011-05-02 18:27:00 · 1633 阅读 · 0 评论 -
浙江工商 1005 渊子赛马
/* Name: 浙江工商 1005 渊子赛马 Author: UnimenSun Date: 06/06/11 17:56 Description: 模拟 *//*解题报告:1、用渊子的最慢的马与国王最慢的马比,如果能赢则win加1如果不能进入第二步2、与国王最快的马比,如果国王的赢则lose加13、循环上面两步直到渊子的马赛完注:应先给渊子原创 2011-06-18 18:43:00 · 4011 阅读 · 0 评论 -
poj 1394 Railroad
/* Name:poj 1394 Railroad Author:Unimen Date: 02/05/11 16:51 Description:Floyd最短路径 *//*解题报告:1、老方法先将城市编号:用map的方法2、构建每列火车的邻接矩阵3、通过火车的邻接矩阵解题4、方法:将问题分为两部分想 1、在满足的时间后出发,最早到达目的原创 2011-06-18 18:35:00 · 985 阅读 · 0 评论 -
poj 1932 XYZZY
/* Name:poj 1932 XYZZY Author:Unimen Date: 21/04/11 16:51 Description:Floyd, SPFA变形应用 *//*解题报告:先Floyd,求出在不考虑能量值的情况下是否能到达终点n然后spfa, 如果终点进队列或者出现正环则一定能到达终点注意:1、这里没有用SPFA求最短路径,而是原创 2011-06-18 18:34:00 · 1084 阅读 · 0 评论 -
poj 1273 Drainage Ditches
/* Name: poj 1273 Drainage Ditches Author: UnimenSun Date: 08/06/11 21:41 Description: 祼的最大流*//*解题报告:祼的最大流用Edmonds_Karp算法即可,处理图时注意有重边注:该题的解法,即Edmonds_Karp函数是最大流问题的模板*/#includ原创 2011-06-18 18:32:00 · 680 阅读 · 0 评论 -
poj 2367 Genealogical tree
/* Name: poj 2367 Genealogical tree Author: UnimenSun Date: 21/05/11 15:04 Description: 拓扑排序水题*//*解题报告:拓扑排序祼题 不能再祼了 适合刚开始学的练习用*/#include #include using namespace std;原创 2011-06-18 18:30:00 · 768 阅读 · 0 评论 -
poj 1003Hangover
#include using namespace std;int main(){ double input; while(cin>>input && input != 0) { int i=2; double sum=0; while(sum<=input) { sum+=(double)1/i; //注意强制类型转换 i++;原创 2011-06-18 18:17:00 · 376 阅读 · 0 评论 -
poj 2192 Zipper
/* Name: poj 2192 Zipper Author: UnimeSun Date: 16/05/11 21:39 Description: DP*//*解题报告:DP转移方程:dp[i][j]:len1以i,len2以终结时,能否够成串result dp[i][j] = len1[i]==result[i+j]&&dp[i-1][j] ||原创 2011-06-18 18:11:00 · 585 阅读 · 0 评论 -
1050To the Max.cpp
/*解题报告:1、求一行数的最大连续和子序列2、将多维压缩为一维*/#include #include using namespace std;int array[101][101];int b[101];int nmax;int MaxSum(int a[],int n){ int sum=0; int temp=0; for(int原创 2011-06-18 18:09:00 · 380 阅读 · 0 评论 -
poj 1386 Play on Words
/* Name: poj 1386 Play on Words Author: UnimenSun Date: 08/06/11 15:43 Description:欧拉路径&欧拉回路*//*解题报告:有向图存在欧拉回路的条件:1、所有结点为的入度等于出度有向图存在欧拉路径的条件:1、仅存在两个结点:其中一个入度比出度大一,另一个出度比入度大一原创 2011-06-18 18:28:00 · 637 阅读 · 0 评论