Peng Lv

毋意,毋必,毋固,毋我。 言必行,行必果。

导航

2010年2月3日 #

贪心策略

摘要: 之所以称之为“策略”,而不是“算法”,还是有些原因的,贪心思想和动态规划思想练习紧密,可是细想一下有不能混为一谈,动态规划是根据迁移过程的状态去推导下一过程的状态,是有理论依据的,通过每次“完美”的检验而得出最优解,关键是找出一个最优子结构,记得经典的一句话是:动态规划的子结构必须是独立的,而且是重叠的,虽然是一组反义词,可是... 阅读全文

posted @ 2010-02-03 23:10 Lvpengms 阅读(7009) 评论(0) 推荐(1)

C++STL算法分析之:变易算法

摘要: 现在看看stl中的变易算法stl的变易算法很多,有三十个左右,现在只看看较常用的几个算法:copy,copy_backward,swap,iter_swap,swap_ranges,transform,replace_if,fill,fill_n,generate,generate_n,remove,reverse,reverse_copy.copy():区间复制函数,将原区间内的元素一次复制到目... 阅读全文

posted @ 2010-02-03 23:02 Lvpengms 阅读(694) 评论(0) 推荐(0)

Python嵌入C/C++ (Python核心编程)

摘要: [代码]自己写总是会忘了什么,在这就把python核心编程中的python嵌入c的部分贴出来,供大家参考:8.2 在C/C++中嵌入Python在C/C++中嵌入Python,可以使用Python提供的强大功能,通过嵌入Python可以替代动态链接库形式的接口,这样可以方便地根据需要修改脚本代码,而不用重新编译链接二进制的动态链接库。8.2.1 高层次嵌入Python使用Python/C API可... 阅读全文

posted @ 2010-02-03 22:54 Lvpengms 阅读(19490) 评论(0) 推荐(3)

Python嵌入C++

摘要: python是一门非常优秀而且优雅的语言,没有了分号和大括号的烦恼,是你在开发中不用再担心大括号匹配问题和语句结束分号遗漏的麻烦,好了,切入正题,本题谈的是如何将python嵌入到C++中去,让你的c++程序更上一层楼! 1.安装python,去www.python.org下一个python 2.x和3.x的都行。 2.首先要设置库文件,将python内目录下的include和lib包含进库文件和... 阅读全文

posted @ 2010-02-03 22:52 Lvpengms 阅读(1643) 评论(0) 推荐(0)

随机数 srand() & rand()

摘要: 想要计算机产生一个随机数可不像我们扔色子一样简单,计算机执行的每一步操作,说白了就是执行一堆代码,这些代码是事先被安排好的,所以计算机的产生行为是不具有随机性和预测性的(除非有一天计算机的结构不再是现在的体系结构,而是下一代的体系),可想而知计算机所产生的随机数都不是真正意义上的随机数,只是伪随机数。 要产生一个伪随机数,只能通过一定的算法来实现了,于是又了rand()函数,他可以产生一个伪随机... 阅读全文

posted @ 2010-02-03 22:49 Lvpengms 阅读(1342) 评论(0) 推荐(0)

[抄书]贪心策略的理论基础——拟阵

摘要: 我曾一直肤浅的认为贪心算法是没有什么理论基础来支撑的,是有局部最优解而导致可能的整体最优解,可是最近看了拟阵和贪心的相关,才知道,拟阵理论是贪心策略的理论基础.....拟阵拟阵是满足下列条件的一个序对M=(S,I);1)S是一个有穷的集合。2)I是S的一类具有遗传性质的非空子集族。遗传性质定义为:如果B∈I且A⊂B,那么A∈I。即若B∈I,则B是S的独立子集(独立子集的定义),且B的任意子集也都是S的独立子集。空集必为I的成员。注意,I是集合的集合。3)I满足交换性质。交换性质定义为,若A∈I,B∈I且|A|<|B|,则存在某一元素x∈B-A,使得A∪{x}属于I。(这条性质给了我们已知 阅读全文

posted @ 2010-02-03 22:48 Lvpengms 阅读(5719) 评论(3) 推荐(1)

C++ explicit 关键字解析

摘要: C++提供了关键字explicit,可以阻止不应该允许的经过转换构造函数进行的隐式转换的发生。声明为explicit的构造函数不能在隐式转换中使用。  C++中, 一个参数的构造函数, 承担了两个角色。 1 是个构造器 2 是个默认且隐含的类型转换操作符。   所以, 有时候在我们写下如 AAA = XXX, 这样的代码, 且恰好XXX的类型正好是AAA单参数构造器的参数类型, 这时候编译器就自动... 阅读全文

posted @ 2010-02-03 22:46 Lvpengms 阅读(1478) 评论(0) 推荐(0)

c++ 降低文件间类的耦合度及关联度

摘要: 最近想写个文字版的RPG游戏,想了又想,决定就先从一个任务类Mission开始规划,结构写了一下午,开始慢慢认识到降低类之间的耦合度是多么重要了,我的大体框架由于类的关联度太高,结果写的一团糟,要想写个可拓展并且易用的类真是太难了,刚好effective c++中有一节是关于这部分内容的,由于没有中文版电子书,只能用英文版的了: Item31: Minimize compilation depen... 阅读全文

posted @ 2010-02-03 22:45 Lvpengms 阅读(1343) 评论(0) 推荐(0)

背包九讲

摘要: 这个问题很老了,翻出来学一学,巩固一下,温故而知新嘛(帖子转的)P01: 01背包问题 题目 有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。 基本思路 这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。 用子问题定义状态:即f[i][v]表示前i件物品恰放入一个容量为v的背包可... 阅读全文

posted @ 2010-02-03 22:45 Lvpengms 阅读(151) 评论(0) 推荐(0)

再谈swap()交换函数....a,b

摘要: 再谈谈这个老得再老的、仅次于hello world 的小问题。 开始吧,有两种方式来达到交换a,b的方法,一种是 引用,另一种是传址调用. 引用就不多说了,int swap(int& a,int& b)就搞定,下面说说传址调用。 首先说明下指针在语言中的作用:1)为了避免大量不必要的内存拷贝,尤其是调用函数的时候2)为了更加方便的直接操作内存(这便是指针的伟大之处)3)更加省时省力... 阅读全文

posted @ 2010-02-03 22:43 Lvpengms 阅读(4050) 评论(0) 推荐(1)

谈谈动态规划的思想

摘要: 动态规划( dynamic programming )算法是解决多阶段决策过程最优化问题的一种常用方法,难度比较大,技巧性也很强。利用动态规划算法,可以优雅而高效地解决很多贪婪算法或分治算法不能解决的问题。动态规划算法的基本思想是:将待求解的问题分解成若干个相互联系的子问题,先求解子问题,然后从这些子问题的解得到原问题的解;对于重复出现的子问题,只在第一次遇到的时候对它进行求解,并把答案保存起来,... 阅读全文

posted @ 2010-02-03 22:38 Lvpengms 阅读(12905) 评论(0) 推荐(2)

Windows编程学习笔记(十二)

摘要: 第八章 菜单及其他资源这一部分主要学习了windows程序中对资源的定义及使用。在windows程序中,主要有以下几种资源:·图示·游标·字符串·自订资源·菜单·键盘快捷键·对话框·位图/**************************************************... 阅读全文

posted @ 2010-02-03 19:46 Lvpengms 阅读(322) 评论(0) 推荐(0)

C++STL算法分析之:非变易算法

摘要: 最近看了stl源码剖析和分析,不禁感慨,stl真是数学和计算机科学结合的奇葩!精妙的组合构成了强大的stl,虽然在某些对数据结构和算法要求非常高的情况下(比如ACM)stl可能不如其他,但是在大型应用和程序中stl已经做得足够完美了。我将会在文章中分析stl每个算法的源码及其分析,更本质的stl构建思想建议大家看看侯捷大师的《stl源码剖析》吧。现在我们来看看stl算法中的非易变算法,其他算法比如... 阅读全文

posted @ 2010-02-03 16:59 Lvpengms 阅读(1205) 评论(0) 推荐(0)

WinAPI GetWindowLong() SetWindowLong()

摘要: GetWindowLong() SetWindowLong() 详解这两个函数在windows程序中有着重要的作用,依照MSDN说明以下这两个函数。/*****************************************************************/GetWindowLong这个函数可以通过一个窗口的句柄来得到窗口的一些其他的信息,比如ID等语法:LONG GetW... 阅读全文

posted @ 2010-02-03 16:53 Lvpengms 阅读(2205) 评论(0) 推荐(0)

Windows编程学习笔记(十)

摘要: 第七章 子窗口控件(上)/**************************************************************************/基础知识通过呼叫GetParent,子窗口消息处理程序能确定其父窗口的窗口句柄:hwndParent = GetParent (hwnd) ;其中,hwnd是子窗口的窗口句柄。它可以向其父窗口消息处理程序发送消息:SendM... 阅读全文

posted @ 2010-02-03 16:51 Lvpengms 阅读(1390) 评论(0) 推荐(0)

Windows编程学习笔记(十一)

摘要: 第七章 子窗口控件(下)控件这部分比较多,看了很长时间才差不多。/***************************************************/静态类别 我们可以建立静态文字的子窗口控件,这些字窗口不会接受鼠标或键盘输入,也不向父窗口发送wm_command消息,当我们在静态子窗口上移动或按下鼠标时,这个窗口将拦截wm_nchittest消息并将httransparent... 阅读全文

posted @ 2010-02-03 16:51 Lvpengms 阅读(417) 评论(0) 推荐(0)

Windows编程学习笔记(八)

摘要: 第五章 鼠标(下)主要是对鼠标各个信息的处理和利用,WM_MOUSEMOVE WM_LBUTTONDOWN WM_LBUTTONUP 注意当绘制例子中的画图程序时(画矩形)如何达到鼠标按住拖动时不留下走过的痕迹呢,这就需要在WM_MOUSEMOVE里做手脚,每次受到WM_MOUSEMOVE消息,就重新画矩形,不过在画的时候加一句SetROP2 (hdc, R2_NOT) ; 这样当在原来的矩... 阅读全文

posted @ 2010-02-03 16:50 Lvpengms 阅读(295) 评论(0) 推荐(0)

Windows编程学习笔记(九)

摘要: 第六章 定时器定时器的原理及使用,在windows程序中的作用,WM_TIMER消息的使用。/******************************************************************************/我们都知道,无论是那种语言和程序,定时器功能都是必不可少,他的作用非常广泛,·定时显示·在游戏同步的应用·多媒体播放声... 阅读全文

posted @ 2010-02-03 16:50 Lvpengms 阅读(203) 评论(0) 推荐(0)

Windows编程学习笔记(六)

摘要: 第四章 键盘 本章主要学习了windows键盘处理的过程,东西很杂碎,wParam lParam这两个重要的参数。/***************************************************************/队列和同步 当使用者按下并释放键盘上的键时,产生的格式消息并不保存在消息队列中,windows在所谓的系统消息队列中保存这些消息。只有当Windows应用程... 阅读全文

posted @ 2010-02-03 16:49 Lvpengms 阅读(272) 评论(0) 推荐(0)

Windows编程学习笔记(七)

摘要: 第五章 鼠标学习了主要的鼠标消息及控制,lParam wParam 字段的了解。/**********************************************************/Windows程序可以使用语句 wndclass.hCursor = LoadCursor(NULL,IDC_ARROW)来载入光标。Windows只把键盘消息发送给具有输入焦点的窗口,而鼠标则是只要... 阅读全文

posted @ 2010-02-03 16:49 Lvpengms 阅读(258) 评论(0) 推荐(0)

Windows编程学习笔记(五)

摘要: 第二章 图形基础(下)用画刷填入内部画刷是一个8*8的位图,他水平和垂直地重复使用来填入内部区域。Windows还有五个函数,让我们建立逻辑画刷,然后就可以使用SelectObject选入,建立的逻辑画刷最后必须要删除。1. hBrush = CreateSolidBrush(crColor); 其中Solid并不是指画刷为纯色。2. hBrush = CreateHatchBrush(iHatc... 阅读全文

posted @ 2010-02-03 16:48 Lvpengms 阅读(467) 评论(0) 推荐(0)

Windows编程学习笔记(三)

摘要: 本章主要学习了最基本的windows GDI的使用,和很多GDI的基础必要的知识,更多高级的知识本章是没有讲述的,仅仅有绘直线.、曲线等内容,不过这些东西是高级GDI的基础。第三章 图形基础(上)/***************************************************************************/图形设备接口(GDI,Graphics Devic... 阅读全文

posted @ 2010-02-03 16:47 Lvpengms 阅读(414) 评论(0) 推荐(0)

Windows编程学习笔记(四)

摘要: 第三章 图形基础(中)/*******************************************************/使用画笔1.获得现有的画笔句柄:HPEN hPen = GetStockObject(WHITE_PEN); // get the handle of penSelectObject(hdc,hPen); // use this pen函数也可以这样用 hPen ... 阅读全文

posted @ 2010-02-03 16:47 Lvpengms 阅读(524) 评论(0) 推荐(0)

Windows编程学习笔记(二)

摘要: 这章的内容比繁琐,需要多用练习才能较熟练的掌握。第二章 输出文字/****************************************/WM_PAINT消息发生以下事件时窗口消息处理程序会接收到一个WM_PAINT消息:1. 当移动窗口时,窗口中先前被隐藏的区域重新可见2. 使用者改变窗口的大小,WM_SIZE3. 程序使用ScrollWindow 或ScrollDC函数滚动显示区域的... 阅读全文

posted @ 2010-02-03 16:46 Lvpengms 阅读(678) 评论(1) 推荐(0)

Windows编程学习笔记(一)

摘要: Windows 编程学习笔记学习C++也有一段时间了,一直想学习Windows编程,可是每次都被些无聊的事情耽误了,还有就是自己的毅力太不坚定了,好几次学到一半就荒废了,结果到现在,WIN编程、MFC、Linux、Python全部处于一知半解的阶段,这个样到研究生还不得让人笑死…..现在正好是寒假,也是考研之前的最后一个寒假了,时间还算比较充裕,所以要下定狠心把windows编程系统的... 阅读全文

posted @ 2010-02-03 16:45 Lvpengms 阅读(1683) 评论(0) 推荐(0)

POJ 1988 Cube Stacking

摘要: * 1988 Cube Stacking* 题意给你 1-n 编号的立方体,然后移动含有指定编号的立方体* 栈移到另一个栈上边,问指定的编号立方体下面有多少个立方体。** 应用 并查集的思路,移动一个栈时,相当于union_set操作,只要另开一个* 数组记录立方体的位置,当合并时,只要改变根节点的位置记录就可以了,* 这个地方并查集用的比较巧妙。其余的就是基本的并查集操作了。* */[代码] 阅读全文

posted @ 2010-02-03 16:44 Lvpengms 阅读(1533) 评论(0) 推荐(0)

POJ 2236 Wireless Network

摘要: /* 此题是并查集的应用,只不过是增加了一个判断距离的* 条件,这样每次输入一个点时,就需要和所有以前的点* 进行判断,因此时间有点多,没有想到很好的方法,真不* 知道100ms是怎么做出来的。。。。* */[代码] 阅读全文

posted @ 2010-02-03 16:43 Lvpengms 阅读(378) 评论(0) 推荐(0)

POJ 2051 Argus

摘要: /* 题目要求按注册者报告返回的时间顺序输出注册者的* 编号,如果同一时间按出现,则先输出序号小的* 大体思路:这个方法有点慢,先对注册者排序,然后每次输出* 最先返回的,用find_min来找到最先返回的,复杂度有点高。*/[代码] 阅读全文

posted @ 2010-02-03 16:41 Lvpengms 阅读(429) 评论(0) 推荐(0)

POJ 2513 Colored Sticks

摘要: /* 此题考察 并查集 和 hash (或trie树)应用,我是用的hash,可以证明:如果满足题意要求,那么同种颜色出现次数为奇数次的个数不超过2,即最多有两种颜色他们出现的次数为奇数,并且所有的颜色属于同一集,根据这个原理,便有了hash+并查集的算法。这样不怎么费时,510ms就过了。在并查集 中,最父节点的值为负值,其绝对值是整个子树节点的个数*/[代码] 阅读全文

posted @ 2010-02-03 16:40 Lvpengms 阅读(368) 评论(0) 推荐(0)

POJ 2632 Crashing Robots

摘要: /* 题目很好理解,要你判断机器人的路径,输出 * 碰撞信息,关键是题目的二维数组需要转换(下标不一样)* 还有就是机器人的状态要及时更新,我就在这儿调试了* 半天才找出来的,郁闷了。* 机器人状态: 坐标x,y,方向drt,方向要及时更新,* 地图也要及时更新,就差不多了。*/codeCode highlighting produced by Actipro CodeHighlighter (f... 阅读全文

posted @ 2010-02-03 16:37 Lvpengms 阅读(284) 评论(0) 推荐(0)

POJ 2181 Jumping Cows

摘要: //本题是用DP来解,大致意思是在偶数次时选择一个数为增大,//在奇数次时选择一个数为减小,可以越过不选,问最后最大//能积累多大的数。//主要是状态转移方程:s[i][2][2]来表示在奇数、偶数和选择、不选四个//状态,那么如果这一次为奇数选择,那么上一次必定是选 偶数选择 和 奇数//不选 这两个状态中最大的于是有了: s[i][0][0]=max(s[i-1][0][1],s[i-1][1... 阅读全文

posted @ 2010-02-03 16:33 Lvpengms 阅读(758) 评论(0) 推荐(0)

POJ 2029 Get Many Persimmon Trees

摘要: //这题应该用树状数组做,可是第一眼看,想都没想就搜了...[代码] 阅读全文

posted @ 2010-02-03 16:32 Lvpengms 阅读(458) 评论(0) 推荐(0)

POJ 1157 LITTLE SHOP OF FLOWERS

摘要: //dp问题,不算太难//写好之后一直不过,原因就是在第一列的初始化时,没有处理好。。。[代码] 阅读全文

posted @ 2010-02-03 16:31 Lvpengms 阅读(302) 评论(0) 推荐(0)

POJ 1050 To the Max

摘要: //此题又是DP,我是看了结题报告才想出来的。。。。。。。。。。。。//苦想了好长时间,就是一层纸捅不破,原来那就//是应该加一个二维数组记录每行的前i个值得和//说白了就是记录一下状态,因为题意是一个二维矩阵//和得优化,所以一维的状态时不能够满足的,看来DP还是没//理解透彻[代码] 阅读全文

posted @ 2010-02-03 16:30 Lvpengms 阅读(555) 评论(0) 推荐(0)

POJ 1018 Communication System

摘要: //此题是DP问题,可是我一直没有想出公式//组后只能根据带宽来枚举,再采用贪心策略[代码] 阅读全文

posted @ 2010-02-03 16:28 Lvpengms 阅读(941) 评论(0) 推荐(0)

POJ 1002 487-3279

摘要: //题意是让你找出相同的电话号码,//问题难在字符与数字的转换上//先转换为数字进行排序,再转化为字符串输出//要注意开头为0的电话号码的情况,这个问题彻底把我整无奈了,////关于字符串 与 数字的转换和操作函数还是有待提高//最后附上我和别人的代码,我代码有点乱,我都不想看了。。。。[代码] 阅读全文

posted @ 2010-02-03 16:27 Lvpengms 阅读(295) 评论(0) 推荐(0)

POJ 3080 Blue Jeans

摘要: //本题爆搜即可......//含有一点是要按字典序排序,输出最小值//程序写得太麻烦了.....codeCode highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--#include<iostream>usingnamespacestd;intsub(... 阅读全文

posted @ 2010-02-03 16:24 Lvpengms 阅读(288) 评论(0) 推荐(0)

POJ 2240 Arbitrage

摘要: /* bellman,加上map,判断是否有负权回路即可* */[代码] 阅读全文

posted @ 2010-02-03 16:19 Lvpengms 阅读(188) 评论(0) 推荐(0)

POJ 1719 Shooting Contest

摘要: /* 给定一个 r*c 的格子矩阵,有C发子弹,每列格子有2个白色的方块,在1,2,3,...c 列上开枪打白色的格子,打到一个,那么这个白色方块所在的行就算打到了,求怎样打,才能把所有的行全部打到,如果全部打到而且有多余的列,那么这列随便打一个方块就可以了,按列的1,2,3,4......C的顺序,输出要打的行号。很明显的一个二分匹配,普通的二分匹配算法就行了。*/[代码] 阅读全文

posted @ 2010-02-03 16:16 Lvpengms 阅读(517) 评论(0) 推荐(0)

POJ 1698 Alice's Chance

摘要: /* 一个演员很想参加film,但是一天只能参加一项,且每项必须在规定的几个星期内参加规定的天数,求演员是否能全部完成所有的film档期。 可以考虑用网络流做,加源汇点,如果film_i 和week_i_day_j天有联系,那么就连一条INF边,源点到film_i连一条day_i边,各个星期的天数到汇点连一条1边,求最大流是否和总天数相等。最大流用isap就可以了,非常快。 */[代码] 阅读全文

posted @ 2010-02-03 16:15 Lvpengms 阅读(834) 评论(0) 推荐(0)

POJ 2139 Six Degrees of Cowvin Bacon(floyd)

摘要: [代码][代码] 阅读全文

posted @ 2010-02-03 16:13 Lvpengms 阅读(928) 评论(0) 推荐(0)

POJ 2987 Firing (ISAP最小割)

摘要: /* 这个题目建图是关键,具体还是靠自己体会了,需要注意的是结果要用__int64来保存。。*/[代码] 阅读全文

posted @ 2010-02-03 16:12 Lvpengms 阅读(649) 评论(0) 推荐(0)

POJ 3469 dual core cpu ---ISAP

摘要: /*这个题目的构图还是不错的,关键是最大流最小割定理的理解程度,算法用的是ISAP,效率还不错。 需要注意的是比如这句话 edge[index].pair = ++index,不同的编译器对这句话的翻译是不一样的, 主要是对++index的处理,有的是先对++index处理:++index,edge[index].pair = index,而有的不是, 可能翻译成:edge[index].pair... 阅读全文

posted @ 2010-02-03 16:10 Lvpengms 阅读(705) 评论(0) 推荐(0)

POJ 1273 第一个SAP(ISAP)

摘要: /* sap学了很长时间,一直不敢下手写,结果就是不写永远不会真正的理解算法的含义,sap理论很多算法书上都有讲解,但我还是建议看数学专业 图论的书,比如 《有向图的理论,算法及应用》,这本书的内容非常棒,相信看过的都知道吧,比其他算法书上讲的透多了。SAP有个优化就是 当出现断链时,就可以直接退出,还有个优化是当前弧的优化,这两个优化只需要一句话+一个数组就解决了,相当实惠,好的ISAP执行的效率真的非常高,我写的ISAP用的是链式前向星法表示。这个就算是模板了吧,虽然写的不是很好。。*/#include<iostream>#include<cstdio>#inclu 阅读全文

posted @ 2010-02-03 16:09 Lvpengms 阅读(1245) 评论(0) 推荐(0)

POJ 3169 Layout

摘要: 查分约束好题,关键在于转化![代码] 阅读全文

posted @ 2010-02-03 16:07 Lvpengms 阅读(250) 评论(0) 推荐(0)

POJ 3084 Panic Room

摘要: 这个题的题意不怎么好理解,关键是英语句子有点别扭。。题意:给你几个屋子,其中有些是恐怖者的屋子,有一个是需要保护的屋子,题目要求是不让恐怖者来到受保护的屋子。刚开始所有的门是打开的,让你求出最少需要关闭多少门,才能保证恐怖者不会到达目的地。I 2 1 2 表示这个屋子是恐怖者,可以直接进入1房和2房。剩下的就是建图了,加一个源点,连边权为inf到所有的恐怖者的屋子,如果i->j,则从i连一条... 阅读全文

posted @ 2010-02-03 16:03 Lvpengms 阅读(496) 评论(0) 推荐(0)

POJ 1751 Highways

摘要: 最小生成树的水题,直接的最小生成树算法就可以了。题意给定n个城市,只不过是又给定了已经连接起来的道路,由于输出的是城镇的编号,所以不用计算两城镇之间的真正距离(既不用算sqrt),用的是kruskal,比较费时,估计用prim可以节省不少时间.codeCode highlighting produced by Actipro CodeHighlighter (freeware)http://www... 阅读全文

posted @ 2010-02-03 16:00 Lvpengms 阅读(658) 评论(0) 推荐(0)