
编程
文章平均质量分 72
--子非鱼--
一个人幸运的前提是有能力和有条件改变自己
展开
-
mongo备忘
MongoDB标准 URI 连接语法:mongodb://[username:password@]host1[:port1][,host2[:port2],…[,hostN[:portN]]][/[database][?options]mongodb:// 这是固定的格式,必须要指定。/database 如果指定username:password@,连接并验证登陆指定数据库。若不指定...原创 2018-10-11 21:35:23 · 342 阅读 · 0 评论 -
大数乘法
自己写着练手吧代码如下:#include#include#include#includeusing namespace std;const int INF=100000;int s3[INF]; //存储乘积void Multiplication(string s1,string s2) //计算大数乘法{ memset(s3,0,sizeof(s3));原创 2012-12-15 11:38:12 · 565 阅读 · 0 评论 -
HDU 1151Air Raid
原题链接点击打开链接题意:一个城市有m个十字路口,n条街道,街道是单向的,而且该城市的所有街道不存在环路,现在你要派伞兵空袭,伞兵随机降落在任意的十字路口上,从该十字路口出发能到达的十字路口,该伞兵都能到达,问,最少需要多少伞兵,能访问该城市的所有十字路口。思路:该题以十字路口为顶点,根据题中给出的街道建边,然后求所建二分图的最小路径覆盖即可。代码如下:#i原创 2012-12-14 13:28:39 · 699 阅读 · 0 评论 -
(备忘)MFC窗体加载位图
以单文档为例:1.将所需位图资源添加进当前项目;2.在C**View类的OnDraw()函数中添加如下代码即可:CBitmap m_bit; m_bit.LoadBitmapW(IDB_BITMAP1); //装载位图资源 BITMAP bip; m_bit.GetBitmap(&bip); //用位图填充bitmap结构 int w = bip.bmWidth ;原创 2014-03-21 15:05:30 · 1024 阅读 · 0 评论 -
POJ Nearest Common Ancestors
最近公共祖先问题(Tarjan算法)原创 2014-04-01 15:20:32 · 927 阅读 · 0 评论 -
字节对齐
转自飘过的小牛:http://www.thinkingbar.com/2013/08/31/%E5%AD%97%E8%8A%82%E5%AF%B9%E9%BD%90/一、思考代码#includeusing namespace std;struct st1{ char a; int b; short c;};struct st2{转载 2014-03-27 20:07:50 · 665 阅读 · 0 评论 -
RMQ (Range Minimum/Maximum Query)算法
转自 飘过的小牛点击打开原文链接1. 概述RMQ(Range Minimum/Maximum Query),即区间最值查询,是指这样一个问题:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j当然,该问题也可以用线段树(也叫区间树)解决,算法复杂度为:O(N)~O(logN),这里我们暂不介绍。2.RMQ算法对于该问题,最容易想到的解决方转载 2014-03-11 09:15:05 · 594 阅读 · 0 评论 -
最小生成树(MST)
基本概念:在无向图中,连通且不含圈的图称为 “树” 。 给定无向图G=(V,E), 连接G中所有点,且边集是E的子集的树称为G的 “生成树” 。在G的所有生成树中,权值最小的那颗树称为 “最小生成树” 。 构造MST的算法有很多,最常见的有两个 : Kruskal算法 和 Prime算法 。Kruskal算法:(适用于稀疏图)原理:原创 2013-04-03 20:52:20 · 920 阅读 · 0 评论 -
线段树
1.概述 线段树,也叫区间树,是一棵完全二叉树。它在每个节点保存一条线段,通常用于解决数列维护问题,基本能够保证每个操作的时间复杂度为O(lgn)。2.线段树的操作一般包括:单点更新、成段更新、区间合并、扫描线等......(这次先写一点吧):单点更新:hdu1754点击打开链接代码如下:#include#include#define MID(x,y原创 2013-03-23 09:11:09 · 811 阅读 · 0 评论 -
矩阵连乘问题
做好充足的准备,你才能在机会到来时狠狠的抓住它!Come on!#include #include const int INF=100;int m[INF][INF],s[INF][INF],p[INF];// m[i][j]表示从第i个矩阵到第j个矩阵连乘需要进行乘法计算的次数// s[i][j]=k 表示:m[i][j]最小时,应先计算第ige矩阵到第k个矩阵的乘积,//原创 2013-10-16 17:12:45 · 714 阅读 · 0 评论 -
哈夫曼编码(备忘)
#include #include #include #include #include#include #include using namespace std;const int INF=70;char record[INF];int weight[INF];mapmp;class NodeTree //存储节点信息{publ原创 2013-09-28 20:28:26 · 661 阅读 · 0 评论 -
NYOJ-754黑心医生
点击打开题目链接一道简单的模拟题,思路很简单,用一个队列和一个优先队列分别存储数据,优先队列用来确定当前病人中最有钱的病人。当前病人不是最有钱的人时就移动到队列的末端,否则就删除对首元素。#include #include #include //#define LOCALusing namespace std;int main(){#ifdef LOCAL freop原创 2013-09-07 08:35:48 · 1674 阅读 · 0 评论 -
NYOJ-756重建二叉树
点击打开题目链接1.后序序列的最后一个元素是二叉树的根节点;2.在中序序列中找到根节点的位置,则中序序列中根节点左边的元素是该根节点的左子树,右边的元素是根节点的右子树;3.由左子树的节点 在后序序列中找到对应的序列,则所得序列的最后一个元素就是左子树的根节点(右子树构建的方法与此相同)。所以有递归的方法很方便的就能重建二叉树并得到先序序列。 #include #incl原创 2013-09-07 08:51:11 · 1000 阅读 · 0 评论 -
NYOJ-640 Geometric sum
点击打开题目链接题意:计算(a + a^2 + … + a^n) mod m. (1≤a,n,m≤10^18)令 S=a + a^2 + … + a^n.1)当n为偶数时:S=a + a^2 + … + a^(n/2) + a^(n/2)*(a + a^2 + … + a^(n/2));2)当n为奇数时:S=a + a^2 + … + a^(n/2) + a原创 2013-08-05 13:48:57 · 874 阅读 · 0 评论 -
Codeforces-231C-To Add or Not to Add(二分搜索)
点击打开题目链接该题可以这么认为:经过一系列操作后,出现次数最多的数一定是原数组中的数,所以将原数组排序后,枚举每一个元素,计算数组中有多少个数能转换成该元素,计算过程就用二分实现了。#include #include #include #define LL __int64using namespace std;const int INF=1e5+5;LL num[INF],s原创 2013-08-01 18:26:52 · 1138 阅读 · 0 评论 -
大数 加法,乘法,减法(c++类实现)
闲来无事,练练c++!#include #include #include #include #include using namespace std;const int INF=1e4;class BignNum{public://--------------------构造函数 BignNum(){ memset(num,0,sizeof(num)); len=1原创 2013-07-12 15:16:31 · 1654 阅读 · 1 评论 -
NYOJ 528 找球号(三)
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=528解题思路:对一个数连续异或(^)偶数次结果为0。代码如下:#include #include int Input() //按字符输入{ int c,res,flag(1); while( !isdigit(c=getchar()) && c!='-'原创 2014-03-18 09:12:52 · 727 阅读 · 0 评论 -
NYOJ 61 传纸条(一)
转自:http://blog.youkuaiyun.com/harrypoirot/article/details/20068649双线程dp;本题的特点是不只要从A找一条最优的路到B,并且还要有路回来,而且两条路不能有交叉、重合。要完成这一点,需要一种新思路,也就是说不是真的过去再回来,因为我们的目的是找到“两条”路,而方向则是无所谓的!所以我们可以从起始点同时计算两转载 2014-03-23 12:45:34 · 801 阅读 · 0 评论 -
BNU 1065
简单的数位dp。题目链接:http://www.bnuoj.com/bnuoj/problem_show.php?pid=1065直接上代码了:#include #include #include int dp[10005][17]; //dp[i][j]:表示第i个数字转换成二进制后第j位是0还是1int sum[17]; //sum[j]:表示所有数字转化成二原创 2014-03-23 17:25:27 · 615 阅读 · 0 评论 -
[备忘] tcp连接
tcp连接理解系统通过一个4元组(server ip:port, client ip:port)来唯一标识一条tcp连接 默认情况下一个端口上只能绑定一个socket套接字端口复用允许多个socket绑定同一个端口 (SO_REUSEADDR)listen函数监听端口发现有请求过来时,通知系统内核创建tcp连接,放到系统的连接队列里边accept函数只是从系统的连接队列里面获取一条连接,原创 2017-09-29 10:43:38 · 374 阅读 · 0 评论 -
最长单调递增子序列--几种方法
最长单调递增子序列原创 2014-04-09 12:27:06 · 1641 阅读 · 0 评论 -
计算最长回文子串
回文字符串 最长回文字符串 manacher原创 2013-04-19 19:30:59 · 915 阅读 · 0 评论 -
排序总结
1. 直接插入排序思想:将数组分为无序区和有序区两个部分,然后不断将无序区的第一个元素按大小顺序插入到有序区中去,最终将所有无序区元素都移动到有序区完成排序。时间复杂度O(n^2)级别代码实现:const int INF=1000;int num[INF]; //存储待排序的数据void InsertSort(int n) //直接插入排序,n表示元素个数{原创 2014-03-11 16:31:02 · 673 阅读 · 0 评论 -
堆排序
#include #include #define LIFT(i) i<<1#define RIGHT(i) (i<<1|1)using namespace std;const int INF=1e5;int num[INF];void MaxHeapify(int id,int n) //调整大顶堆 O(lgn){ while(id<=n/2) {原创 2013-10-21 10:07:28 · 812 阅读 · 0 评论 -
c++文件操作总结
转载自:掌握文本文件读写的方法了解二进制文件的读写方法C++文件流:fstream // 文件流ifstream // 输入文件流ofstream // 输出文件流//创建一个文本文件并写入信息//同向屏幕上输出信息一样将信息输出至文件#include#includevoid main(){ ofstream f1("d:转载 2014-06-13 16:07:27 · 596 阅读 · 0 评论 -
(练手备忘)汇编实现将输入的字符串中的空格去掉后反序输出
功能:任意输入一个字符串,去掉其中的空格后反序输出编译器使用的是MASMPlus;#Mode = DOSMAXLEN = 64 ;设置字符串的最大长度SPACE = ' ' ;空格datasg segment buffer db MAXLEN+1,0,MAXLEN+1 dup(0) ;字符串输入缓冲区 string db MAXLEN+3 dup(0)原创 2014-05-10 19:28:13 · 2804 阅读 · 0 评论 -
LCA (最近公共祖先)
Tarjan算法 (以发现者Robert Tarjan命名)是一个在图中寻找强连通分量的算法。算法的基本思想为:任选一结点开始进行深度优先搜索dfs(若深度优先搜索结束后仍有未访问的结点,则再从中任选一点再次进行)。搜索过程中已访问的结点不再访问。搜索树的若干子树构成了图的强连通分量。 求最近公共祖先问题,dfs+并查集原创 2013-05-04 12:17:47 · 829 阅读 · 0 评论 -
把二元查找树转变成排序的双向链表(微软面试题)
参考了July的博客,然后自己动手实现了一线,留着备忘吧!原创 2014-04-07 18:04:40 · 773 阅读 · 0 评论 -
(备忘) MFC局部显示窗口
SetWindowRgn 函数是设置了一个窗口的区域.只有被包含在这个区域内的地方才会被重绘,而不包含在区域内的其他区域系统将不会显示.定义:int SetWindowRgn(HWND hWnd, HRGN hRgn, BOOL bRedraw);int SetWindowRgn(HRGN hRgn,BOOL bRedraw); //在VC6.0基于对话框时候,该函原创 2014-03-24 21:48:30 · 1076 阅读 · 0 评论 -
NYOJ 995硬币找零
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=995动态规划问题原创 2014-04-04 18:02:47 · 1151 阅读 · 0 评论 -
nyoj 78 圈水池
点击打开题目链接Andrew's Monotone Chain二维凸包算法详解:点击打开博客链接#include #include #include using namespace std;const int INF=110;struct Convex{ int x,y;}Hull[INF],Res[INF];bool cmp(Convex a,原创 2013-07-25 17:53:53 · 1316 阅读 · 9 评论 -
最大流ISAP算法模板
SAP算法框架:1、定义距离标号为各点到汇点距离的下界(即最短距离)。2、在初始距离标号的基础上,不断沿着可行弧找增广路。3、遍历当前节点完以后,为了保证下次再来的时候有路可走,重新标号当前距离。4、检查重新标记的顶点,若其为原点,且被标记的高度等于节点个数时,图中已经不存在增广路,算法可结束。否则 继续从原点开始遍历。由于我们不停的遍历,最原创 2013-04-30 09:10:58 · 882 阅读 · 0 评论 -
算法艺术——网络最大流 (转自:Rachel-Zhang)
原文链接:http://blog.youkuaiyun.com/abcjennifer/article/details/5556455/USACO 4.2.1 Ditch 网络最大流问题算法小结通过 USACO 4.2.1 Ditch 学习一下最大流算法 。可惜它给的测试数据几乎没有任何杀伤力,后面测试时我们采用 DD_engi 写的程序生成的加强版数据。总体上来说转载 2014-03-23 15:28:49 · 904 阅读 · 0 评论 -
Dijkstra优化
稀疏图的邻接表:在这种表示方法中,每一个结点i都有一个链表,里面保存着从i出发的所有的边。这里用数组来实现链表。first[u]保存结点为u的第一条边的编号,next[e]表示编号为e的边的“下一条边”的编号。#include#include#include#define INF 1000int u[INF],v[INF],w[INF],first[INF],next[INF];vo原创 2013-04-04 10:25:22 · 763 阅读 · 0 评论 -
计算日期
蔡勒(Zeller)公式,是一个计算星期的公式,随便给一个日期,就能用这个公式推算出是星期几。公式:w =〔 [c/4] - 2c + y + [y/4] + [13 * (m+1) / 5] + d - 1 〕% 7 (或者是:w= 〔y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1 〕% 7)若要计算的日期是在1582年10月4日或之前,公式则为w=原创 2013-07-15 16:26:26 · 748 阅读 · 0 评论 -
归并排序
归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。值得注意的是归并排序是一种稳定的排序方法。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。#include #include using namespace std;const int INF=1e5;int num原创 2013-05-08 10:33:45 · 655 阅读 · 0 评论 -
字典树
【转自 Maik的解释】Trie树|字典树的简介及实现Trie,又称字典树、单词查找树,是一种树形结构,用于保存大量的字符串。它的优点是:利用字符串的公共前缀来节约存储空间。相对来说,Trie树是一种比较简单的数据结构.理解起来比较简单,正所谓简单的东西也得付出代价.故Trie树也有它的缺点,Trie树的内存消耗非常大.当然,或许用左儿子右兄弟的方法建树的话,可能会原创 2013-03-30 12:13:13 · 683 阅读 · 0 评论 -
hdu 1102 (最小生成树)
点击打开题目链接该题就是一个简单的最小生成树问题,用的是prime算法。代码如下:#include#include#include#define INF 0xffffff#define MAX 110int map[MAX][MAX],dis[MAX],visit[MAX];int ans,n;void prime(int node){ memset(visit原创 2013-04-03 20:57:51 · 845 阅读 · 0 评论 -
hdu 1712 ACboy needs your help(分组背包)
简单分组背包入门,点击打开题目链接#include#include#include#define Max(x,y) x>y?x:yint A[110][110];int f[110];int main(){ int n,m; while(scanf("%d%d",&n,&m) && (m+n)) { for(int i=1;i<=n;i++原创 2013-04-02 16:19:23 · 737 阅读 · 0 评论 -
hdu 4501 小明系列故事——买年货(二维费用背包问题)
题目链接~~点我打开题目哦~~该题是一道二维费用背包问题,用dp[v1][v2][k]表示用v1的钱,v2的积分和k件免费产品时,能够获得的最大价值,设第i件商品的价钱为c1,积分为d1,价值为val,则状态转移方程可写成:dp[v1][v2][k]=max(dp[v1][v2][k],dp[v1-c1][v2][k]+val,dp[v1][v2-d1][k]+val,dp[v1][v2]原创 2013-04-02 15:03:58 · 1177 阅读 · 0 评论