随笔分类 -  ACM学习

上一页 1 2 3 下一页

C++STL的next_permutation
摘要:C++STL的next_permutation在标准库算法中,next_permutation应用在数列操作上比较广泛.这个函数可以计算一组数据的全排列.但是怎么用,原理如何,我做了简单的剖析.首先查看stl中相关信息.函数原型:template<class BidirectionalIterator> bool next_permutation( BidirectionalIterator _First, BidirectionalIterator _Last );template<class BidirectionalIterator, class BinaryPredi 阅读全文

posted @ 2012-03-30 00:44 kuangbin 阅读(10471) 评论(3) 推荐(6) 编辑

卡特兰数总结
摘要:卡特兰数又称卡塔兰数,是组合数学中一个常出现在各种计数问题中出现的数列。由以比利时的数学家欧仁·查理·卡塔兰 (1814–1894)命名。卡特兰数前几项为 (OEIS中的数列A000108): 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700, 1767263190, 6564120420, 24466267020, 91482563640, 343059613650, 1289904 阅读全文

posted @ 2012-03-21 21:02 kuangbin 阅读(3065) 评论(0) 推荐(1) 编辑

ACM参赛总结
摘要:ACM参赛小结我接触ACM始于2011年4月,那时虽然什么都不懂,但是对ACM充满着向往与期待。那时参加完春季学期的校赛之后,我便决定去学习ACM,加入ACM集训队。通过发邮件联系沈老师之后,便在2011年5月,加入了学校ACM集训队。通过和集训队的队员们一起学习以及老师的指导下,我慢慢地得到了提高。从一开始连个简单的BFS、DFS都写不来,到后来慢慢地看懂别人的程序,然后自己会写简单算法了。从一开始只会刷非常简单的水题,到后来学会了分析问题,会根据算法的思想来用程序来实现。从一开始对ACM并不了解,到后来见识了ACM的博大精深,体会到ACM对解决问题的能力的提升。接触ACM之后,真的有种相识 阅读全文

posted @ 2011-12-01 16:22 kuangbin 阅读(10292) 评论(31) 推荐(15) 编辑

2011 ACM 福州赛区现场赛第一题 (A .Xiangqi)HDU 4121 Xiangqi by kuangbin
摘要:Xiangqi HDU4121 阅读全文

posted @ 2011-11-23 19:45 kuangbin 阅读(1856) 评论(3) 推荐(2) 编辑

背包问题教程-01背包,完全背包,多重背包,混合背包 收藏
摘要:P01: 01背包问题题目有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。基本思路这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。用子问题定义状态:即f[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值。则其状态转移方程便是:f[i][v]=max{f[i-1][v],f[i-1][v-c[i]]+w[i]}这个方程非常重要,基本上所有跟背包相关的问题的方程都是由它衍生出来的。所以有必要将它详细解释一下:“将前i件物品放入容量为v的背包中”这个子问题,若只考虑第i件物品的策略(放或不放),那 阅读全文

posted @ 2011-11-16 02:30 kuangbin 阅读(2489) 评论(0) 推荐(0) 编辑

卡特兰数 ACM 数论
摘要:维基百科资料:卡塔兰数卡塔兰数是组合数学中一个常出现在各种计数问题中出现的数列。由以比利时的数学家欧仁·查理·卡塔兰(1814–1894)命名。卡塔兰数的一般项公式为 另类递归式: h(n)=((4*n-2)/(n+1))*h(n-1);前几项为 (OEIS中的数列A000108): 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700, 1767263190, 6564120420, 2 阅读全文

posted @ 2011-10-13 22:32 kuangbin 阅读(1944) 评论(0) 推荐(0) 编辑

【转】ACM博弈知识汇总
摘要:博弈知识汇总有一种很有意思的游戏,就是有物体若干堆,可以是火柴棍或是围棋子等等均可。两个人轮流从堆中取物体若干,规定最后取光物体者取胜。这是我国民间很古老的一个游戏,别看这游戏极其简单,却蕴含着深刻的数学原理。下面我们来分析一下要如何才能够取胜。(一)巴什博奕(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。 显然,如果n=m+1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个,后取者都能够一次拿走剩余的物品,后者取胜。因此我们发现了如何取胜的法则:如果n=(m+1)r+s,(r为任意自然数,s≤m),那么先取者要拿. 阅读全文

posted @ 2011-08-28 22:00 kuangbin 阅读(23073) 评论(21) 推荐(17) 编辑

[转]ACM 取石子问题
摘要:取石子问题有一种很有意思的游戏,就是有物体若干堆,可以是火柴棍或是围棋子等等均可。两个人轮流从堆中取物体若干,规定最后取光物体者取胜。这是我国民间很古老的一个游戏,别看这游戏极其简单,却蕴含着深刻的数学原理。下面我们来分析一下要如何才能够取胜。(一)巴什博奕(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。 显然,如果n=m+1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个,后取者都能够一次拿走剩余的物品,后者取胜。因此我们发现了如何取胜的 法则:如果n=(m+1)r+s,(r为任意自然数,s≤m),那么先取者要拿走 阅读全文

posted @ 2011-08-27 22:40 kuangbin 阅读(3175) 评论(0) 推荐(1) 编辑

【转】2-SAT问题及其算法
摘要:原文地址:http://www.cppblog.com/MatoNo1/archive/2011/07/13/150766.aspx为了便于查看,只有转载下来了,免得找不到了【2-SAT问题】现有一个由N个布尔值组成的序列A,给出一些限制关系,比如A[x]AND A[y]=0、A[x]OR A[y]OR A[z]=1等,要确定A[0..N-1]的值,使得其满足所有限制关系。这个称为SAT问题,特别的,若每种限制关系中最多只对两个元素进行限制,则称为2-SAT问题。由于在2-SAT问题中,最多只对两个元素进行限制,所以可能的限制关系共有11种:A[x]NOT A[x]A[x] AND A[y]A 阅读全文

posted @ 2011-08-19 12:00 kuangbin 阅读(1314) 评论(0) 推荐(0) 编辑

二分图匹配(Hopcroft-Carp的算法)模版:
摘要:/**********************************************二分图匹配(Hopcroft-Carp的算法)。初始化:g[][]邻接矩阵调用:res=MaxMatch(); Nx,Ny要初始化!!!时间复杂大为 O(V^0.5 E)适用于数据较大的二分匹配 ***********************************************/ const int MAXN=3001;const int INF=1<<28;int g[MAXN][MAXN],Mx[MAXN],My[MAXN],Nx,Ny;int dx[MAXN],dy[MA 阅读全文

posted @ 2011-08-12 11:19 kuangbin 阅读(1923) 评论(0) 推荐(0) 编辑

二分图匹配(匈牙利算法模板)
摘要:一、最大匹配——匈牙利算法/****************************************************二分图匹配(匈牙利算法的DFS实现)INIT:g[][]两边定点划分的情况CALL:res=hungary();输出最大匹配数优点:适于稠密图,DFS找增广路快,实现简洁易于理解时间复杂度:O(VE);****************************************************/const int MAXN=1000;int uN,vN; //u,v数目int g[MAXN][MAXN];//编号是0~n-1的 int linker[M 阅读全文

posted @ 2011-08-09 21:32 kuangbin 阅读(5379) 评论(5) 推荐(2) 编辑

高精度的进制转换!!!!
摘要:前面的内容来源于:http://www.cnblogs.com/phinecos/archive/2009/09/11/1564975.html引用原文:在数据结构课关于栈的这一章中,我们都学过用“模2取余法”来将一个10进制数转换为一个二进制数,进而可以推广到“模n取余法”,经其转换为n进制(n任意指定)。确实,这是一个很基础的题目,可你是否想过如果这个10进制数是一个大数(其位数可能上千位,此时用一般数据类型肯定是会溢出的),那么这个问题又如何来求解呢?当然,也许你会说很简单嘛,自己写一个大数类(当然至少要写一个大数除法才行),或者你用的是Java这种现代化语言,就更轻松了,直接用BigI 阅读全文

posted @ 2011-08-09 16:23 kuangbin 阅读(6429) 评论(0) 推荐(2) 编辑

【转】2011 Multi-University Training Contest 3 - Host by BIT
摘要:T1:Inverting Cups题意是给出A个杯子,一开始都朝上,每次可以翻B个杯子,问最少需要翻转多少次可以让所有杯子都朝下。分类讨论:首先对于A%B==0一类情况,直接输出。对于A>=3B,让A减到[2B,3B)区间内,翻转次数累加上A/B-2。当A>=2B时,分奇偶讨论:A为奇数B为偶数显然无解;AB同奇偶时最多需要3次,A偶数B奇数最多需要4次。当A<2B时,分奇偶讨论:AB同奇偶时最多需要3次,A奇数B偶数无解,A偶数B奇数时,有F(A,B)=F(A,A-B)成立,可以转换成上面的情况求解即可。具体证明画画图就知道了,将两个B分别放到对称的位置上,想办法调整使得每 阅读全文

posted @ 2011-08-01 16:25 kuangbin 阅读(358) 评论(0) 推荐(0) 编辑

POJ题目分类
摘要:初期:一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. (4)递推. (5)构造法.(poj3295) (6)模拟法.(poj1068,poj2632,poj1573,poj2993,poj2996)二.图算法: (1)图的深度优先遍历和广度优先遍历. (2)最短路径算法(dijkstra,bellman-ford,floyd,heap+dijkstra) (poj1860,poj3259,poj1062,poj2253,poj1125,poj2240) (3)最小生成树算法(prim,krus 阅读全文

posted @ 2011-07-29 10:19 kuangbin 阅读(75020) 评论(17) 推荐(43) 编辑

关于qsort的完整版
摘要:六种qsort排序方法<本文中排序都是采用的从小到大排序>一、对int类型数组排序int num[100];Sample:int cmp ( const void *a , const void *b ){ return *(int *)a - *(int *)b;}qsort(num,100,sizeof(num[0]),cmp);二、对char类型数组排序(同int类型)char word[100];Sample:int cmp( const void *a , const void *b ){ return *(char *)a - *(char *)b;}qsort(wor 阅读全文

posted @ 2011-07-28 21:10 kuangbin 阅读(377) 评论(0) 推荐(0) 编辑

最大流问题
摘要:最近又复习了下最大流问题,每次看这部分的内容都会有新的收获。可以说最大流问题的资料网上一搜一大把,根本没有必要自己写;但是大部分资料上的专业术语太多了,初学很难理解,至少我当年学这部分的时候前几次就没有看懂。所以我准备备份一点个人的理解。图-1 如图-1所示,在这个运输网络中,源点S和汇点T分别是1,7,各边的容量为C(u,v)。图中红色虚线所示就是一个可行流。标准图示法如图-2所示:其中p(u,v) / c(u,v)分别表示该边的实际流量与最大容量。 关于最大流 熟悉了什么是网络流,最大流也就很好理解了。就是对于任意的u∈V-{s},使得p(s,u)的和达到最大。上面的运输网络中,最大流如图 阅读全文

posted @ 2011-07-26 20:48 kuangbin 阅读(48746) 评论(5) 推荐(5) 编辑

HDOJ题目分类
摘要:模拟题, 枚举1002 1004 1013 1015 1017 1020 1022 1029 1031 1033 1034 1035 1036 1037 1039 1042 1047 1048 1049 1050 1057 1062 1063 1064 1070 1073 1075 1082 1083 1084 1088 1106 1107 1113 1117 1119 1128 1129 1144 1148 1157 1161 1170 1172 1177 1197 1200 1201 1202 1205 1209 1212(大数取模) 1216(链表)1218 1219 1225 1228 阅读全文

posted @ 2011-07-26 14:05 kuangbin 阅读(13533) 评论(0) 推荐(5) 编辑

【转】 cin、cin.get()、cin.getline()、getline()、gets()等函数的用法
摘要:学C++的时候,这几个输入函数弄的有点迷糊;这里做个小结,为了自己复习,也希望对后来者能有所帮助,如果有差错的地方还请各位多多指教(本文所有程序均通过VC 6.0运行)转载请保留作者信息;1、cin1、cin.get()2、cin.getline()3、getline()4、gets()5、getchar()1、cin>>用法1:最基本,也是最常用的用法,输入一个数字:#include <iostream>using namespace std;main (){int a,b;cin>>a>>b;cout<<a+b<<en 阅读全文

posted @ 2011-07-26 12:22 kuangbin 阅读(439) 评论(0) 推荐(1) 编辑

有向图的强连通分量
摘要:最关键通用部分:强连通分量一定是图的深搜树的一个子树。一、 Kosaraju算法1. 算法思路基本思路:这个算法可以说是最容易理解,最通用的算法,其比较关键的部分是同时应用了原图G和反图GT。(步骤1)先用对原图G进行深搜形成森林(树),(步骤2)然后任选一棵树对其进行深搜(注意这次深搜节点A能往子节点B走的要求是EAB存在于反图GT),能遍历到的顶点就是一个强连通分量。余下部分和原来的森林一起组成一个新的森林,继续步骤2直到 没有顶点为止。改进思路:当然,基本思路实现起来是比较麻烦的(因为步骤2每次对一棵树进行深搜时,可能深搜到其他树上去,这是不允许的,强连通分量只能存在单棵树中(由开篇第一 阅读全文

posted @ 2011-07-25 22:51 kuangbin 阅读(2261) 评论(0) 推荐(1) 编辑

int ,long , long long类型的范围
摘要:unsigned int 0~4294967295 int 2147483648~2147483647 unsigned long 0~4294967295long 2147483648~2147483647long long的最大值:9223372036854775807long long的最小值:-9223372036854775808unsigned long long的最大值:18446744073709551615__int64的最大值:9223372036854775807__int64的最小值:-9223372036854775808unsigned __int64的最大值:18 阅读全文

posted @ 2011-07-23 18:10 kuangbin 阅读(176434) 评论(0) 推荐(23) 编辑

上一页 1 2 3 下一页

导航

JAVASCRIPT: