- 博客(42)
- 资源 (1)
- 收藏
- 关注
转载 makefile ——wildcard notdir patsubst
1、wildcard : 扩展通配符2、notdir : 去除路径3、patsubst :替换通配符例子:建立一个测试目录,在测试目录下建立一个名为sub的子目录$ mkdir test$ cd test$ mkdir sub在test下,
2011-08-05 11:01:01
636
原创 自己写的古剑奇谭3D宣传画(哈哈)
先上图:也是简单程序,就是加了个背景,然后六个主角的图片作为纹理贴图,覆盖正方体的表面。貌似旋转起来的时候有部分图案不是很清楚,不过无伤大雅,无上大雅(嘿嘿)用MFC写的,所以贴上view类的代码;头文件:// posterView.h : interface of the CposterView class//#pragma onceclass CposterView : public CView{protected: // create from serialization on
2011-02-14 21:44:00
2953
1
原创 3D球体一个(纪念第一个opengl程序~~)
<br />终于搞定第一个像样的简单opengl程序,不过纹理贴图部分目前还是一头雾水啊,明天一定将其搞定。<br /> <br />先上个实例图:<br /><br /> <br />功能很简单,使用鼠标的左中右键分别设置球体颜色的 RGB参数以调整颜色。<br />按a或d使球体旋转<br /> <br />代码如下// display.cpp : Defines the entry point for the console application.//#include "stdafx.h"
2011-02-10 17:46:00
16213
2
原创 MFC之贪吃蛇
记得刚上大学还不会编程的时候就开始YY自己什么时候写个贪吃蛇、扫雷的小游戏出来就好。如今acm竞赛已经结束,自己终于有些空余时间了。处于项目需要,最近又开始学习MFC,于是昨天花了一天时间写了个简陋的贪吃蛇游戏。由于刚学MFC,也没有借鉴别人程序,刚开始还弄出很多错误,不过好歹自己最终都把这些bug搞定了。自己目前也只是菜鸟,此篇文章更多只是为了一个记录,有兴趣的人可以看看。不过这里想说一点用新出的IDE学习编程语言还真是麻烦。比如说写这个贪吃蛇,为了程序的方便,所以想把客户区的大小固定下来,网上找的方法
2010-12-10 11:09:00
5397
转载 VS 2008 OpenGL 配置
<br />最近准备学习OpenGL,结果发现敲入书中给的代码,居然提示头文件找不到,相当郁闷,查了一下才发现有些不是VC自带的,需要自己下载安装,以下为转帖,感觉说的还算详细,OpenGl大牛们,就略过此文好了,呵呵<br /><br />OpenGL作为当前主流的图形API之一,它在一些场合具有比DirectX更优越的特性。<br />1、与C语言紧密结合。<br />OpenGL命令最初就是用C语言函数来进行描述的,对于学习过C语言的人来讲,OpenGL是容易理解和学习的。如果你曾经接触过TC的gra
2010-11-25 18:40:00
686
原创 hdu 3682(To Be an Dream Architect)
<br />把坐标映射成一个 n进制数 hash一下,去掉重复的即可。处理方法有很多种。 用STL的set、和map会超时<br /> <br />val = x*n*n + y *n + z;<br /> <br />我用了sort排序然后手动统计不同数目就过了<br /> <br />代码:<br /> <br />/* * File: main.cpp * Author: Hewie * * Created on November 15, 2010, 10:06 AM
2010-11-15 11:17:00
1735
原创 hdu 1428(漫步校园)
<br />算法应该是最短路加DP吧。<br /> <br />按照提议,做题思路自然是先求出所有点到 n,n 的最短距离,吧n,n当源点求最短距离即可。我是直接bfs求的。<br /> <br />求完最短距离后求方法数,用记忆化搜索,状态方程不难。<br /> <br />这样写貌似效率很低,用G++提交还超时,我估计应该是求最短路的bfs()耗时太多,主要是太懒,不想重新建图。不过还是凑合AC了<br /> <br />附上该效率低下的代码:<br /> <br />/* * File:
2010-10-28 19:49:00
1292
1
原创 hdu1403 poj2774(后缀数组)
后缀数组的简单应用推荐罗穗骞的论文,我的主要代码也是按照论文上来的。两个题基本一样可以用同样的代码通过代码如下:/* * File: main.cpp * Author: liuwei * * Created on October 14, 2010, 7:30 PM */#include #include #include #include using namespace std;#define MAXN 200010char str[100010];
2010-10-14 19:34:00
1281
原创 poj 2186 Popular Cows (强连通分量,缩点)
<br />一直不明所谓缩点为何意,弄完这题算是明白了。<br /> <br />其实很简单,我们求强连通分量时,给每个顶点做一个标记,标记该顶点属于哪个强联通分量,然后属于同一个强连通分量的点就可以看作同一个点了。这就是所谓的“缩点”<br /> <br />此题用了个定理 :有向无环图(DAG)中,从任意一个点出发,必定可以到达某一个出度为0的点。<br /> <br />这个不用证明,直观想一下就行了。 因为无环,所以从一个点出发,必定会到达终点,终点的出度即是0<br />求强连通的目的也就是将原
2010-10-09 16:09:00
4516
1
原创 poj 3264 Balanced Lineup rmq/线段树
<br />题意很简单,区间最值之差。<br />rmq或线段树都可。<br /> <br />比较郁闷的是,G++提交3000+MS,C++1700+MS,差别很大<br /> <br />rmq的代码,跑了1766MS:<br />#include <cstdio>#include <cstring>#include <iostream>#include <string>#include <cmath>using namespace std;const int MAXN = 50
2010-10-09 09:56:00
626
原创 hdu 3118 Arbiter
<br />看起来很难的一个题。 其实做法就是枚举<br /> <br />将该图枚举成一个二分图 一部分节点标记为 1 剩下的标记为0 同类型节点之间不可达,所以若一条边的两个节点属于同一类型我们就把该条边去掉。<br />我们右发现n比较小不大于15,所以我们可以用为运算来解决此题。<br /> <br />首先自然是建图,用邻接阵来存储不同端点间边的个数。<br /> <br />然后分类的方法自然是有 (1<<n)-1 种 ,我们令i为0, i ——(1<<n)-1 每个
2010-10-05 09:04:00
1032
原创 hdu 3006 The Number of set
<br />很巧妙的用位的方法来表示集合 用位运算的方法,集合a和集合b的并 就是a|b<br /> <br />然后简单模拟即可<br /> <br /> /* * File: main.cpp * Author: liuwei * * Created on September 27, 2010, 1:58 PM */#include <cstdlib>#include <cstdio>#include <cstring>using namespace s
2010-09-27 14:20:00
1067
原创 hdu 3487 Play with Chain(伸展树)
此题乃传说中splay的简单应用。不愧是传说中的数据结构,花了两天才写出来,第一次写debug可是费了不少功夫啊。老实说写这种数据结构还真实不简单,上次学treap的时候也是花了好大功夫。 不过最终好歹是写出来了,而且学到了不少东西。算是值了。上次写treap的时候,旋转操作写了两个函数,这次学会了一种新写法,可以将旋转操作直接写成一个操作。在结构体中 用ch[2] 来记录儿子节点。用ch[0]表示左儿子,用ch[1]表示右儿子。于是rotate操作就可以写成void rotate(int x, i
2010-09-23 14:27:00
1778
原创 hdu 3308 LCIS (线段树)
<br />题意不难理解 就是求某一区间的最长连续递增子序列。<br />虽然猜测是线段树做法,但是之前没见过类似题目。 所以搜了下解题报告。<br /><br /><br />对于某一区间 ,我们保存以从该区最左边点为起点的最长子序列长度,和以该区间最右边的点为终点的最长子序列,以及该区间的最长子序列。<br /> <br /><br />对于中点mid 如果a[mid]>=a[mid+1] 断开 那么有左边最长=左儿子左边最长 右边最长=右儿子右边最长 全局最长=Max(两个儿子的全局最长)<
2010-09-22 11:48:00
1054
原创 pku 2823(单调队列、线段树)
这个题目之前就用线段树做了一遍,今天看了下单调队列。重新写了一遍, 对于此题来说,比线段树快不少。单调队列呢,比如说 一个用来求最大元素的单调队列,那么,这个队列中的元素就是非递增的。这个时候也许就会有疑问,优先级队列也有这个特性。为什么还要用这个所谓的单调队列。这里有个问题是普通的 FIFO 队列,只能从队首删除元素,但是优先级队列可以从队尾进行删除。 这就是单调队列最重要的一个特性。对于此题来说,就是一个区间求最值的问题。所以方法呢,也是有很多的。 比如RMQ、线段树等等。至于单调队列的做法就是
2010-09-09 14:13:00
850
原创 AC自动机(Aho-Corasick automaton)
AC自动机,说白了还是一种处理字符串的数据结构。在建立的trie树的基础上,用kmp。 达到快速匹配的目的。一个最简单的应用,就是给定一些单词,然后给定一段文本,求这些单词中有多少个在这段文本中出现过。看到网上一堆都是hdu2222的解题报告,我也结合此题说说自己对AC自动机的理解吧题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2222 就是AC自动机最基本的应用。因为AC自动机是建立在字典树的基础上的,所以首先要建立trie这是节点的结构:struct
2010-09-07 10:11:00
2254
转载 fedora 13 配置java环境变量
具体说来,就是配置jdk环境变量。本文就介绍在linux下配置jdk环境变量的几种常用方法。首先在linux下安装jdk,如果出现提示权限不够(且root下也提示权限不够),可用#ls -l filename命令查看一下,如果显示类似如:-rw-rw-rw- 1 root root ….则表示任何用户都没有可执行权限(即使是root用户)。解决方法:#chmod a+x filename这样,安装好后,就可以接下来进行环境变量的配置了。这里给出三种可选方法:一、修改/etc/profile文件当本机仅仅作为
2010-09-05 18:51:00
2719
转载 fedora 13 播放mp3
ubuntu 用了一段时间,又出了点笑问题,虽然不影响使用。不过还是换fedora玩玩。权限的管理比ubuntu严格很多,希望能够稳定一点。网上搜的安装MP3解码器的方法:在root权限下执行下面两个命令:rpm -ivh http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpmyum install gstreamer-plugins-bad gstreamer-ffmpeg gstreamer-
2010-09-05 16:57:00
632
原创 pku 1511 Invitation Cards (SPFA 和 dijkstra+优先级队列优化)
<br />简单的最短路题目,只需建两次图,分别调用单源最短路算法即可。<br /> <br />但是由于数据量较大,所以需要用邻接表存储,以及对普通算法进行些优化。<br /> <br />注意最后的求和需要用long long型变量存储<br /> <br />分别用SPFA 和 加了优先级队列的dijkstra写了一遍,效率差不多,用的STL的priority_queue,如果手写堆的话应该可以更快。<br /> <br />SPFA版本:1511Accepted33016K1750MSG++23
2010-08-26 16:54:00
1039
转载 Linux控制台下的快捷键(转)
<br />Linux控制台(文本模式)下提高工作效率的快捷键<br /><br />在Linux环境里,有一些按键有特殊的含意。<br /># Ctrl-U: 擦除一行光标前面的部分。<br /># Ctrl-H: 擦除光标前面的一个字符。<br /># Ctrl-D: 终止输入。(退出 shell,如果您正在使用 shell 的话)。<br /># Ctrl-C: 终止当前正在运行的程序。<br /># Ctrl-Z: 暂停程序。 <br />&'')<br /># Ct
2010-08-16 11:03:00
3453
原创 关于树状数组的一个小问题
虽然说树状数组的原理是早就懂了,不过一直也没多想那么神奇的位运算到底是怎么回事,只是照葫芦画瓢。今天研究的时候研究了下位运算的内容,也弄懂了树状数组中的一个小问题首先说说位运算的一些基本操作:c语言的几个基本操作符自然不必多说置位(Set bit)A |= 1 清位(Clear bit)A &= ~(1 测位(Test bit)(A & 1 (A >> bit & 1) != 0取最后一个非0位(Extracting every last bit)A & -A
2010-08-10 16:26:00
492
转载 [转]Ubuntu10.04修复Grub2引导
<br /><br />直接进入主题吧,用ubuntu10.04光盘启动电脑,进入LIVECD模式。<br />sudo -i<br />先来找一找你的ubuntu10.04安装在那个分区,用:<br />fdisk -l<br /><br />我的部分输出如下:<br />Device Boot Start End Blocks Id System<br />/dev/sda1 1 914
2010-08-01 19:41:00
610
原创 pku 1915 Knight Moves(双向广度优先搜索)
<br /> 题意比较简单,就是模仿马在国际象棋棋盘的动作,给出起始点和终点,求最少步数<br /> <br />先用 BFS写了一遍过了,然后看到不少人提到双向BFS ,看了后重新写了一遍<br /> <br />其实双广也并不难,理解了也很容易写出来, 就是起点和终点同时开始搜索,直到发现重合点为止。<br /> <br />对于此题来说,从起点开始搜已被搜索的点vis置为1,从终点开始搜索已被搜索的点vis置为2, <br />若从起点开始搜遇到vis为2的点,或者从终点开始搜遇到vis为1的点
2010-07-29 15:48:00
663
原创 pku 1056(字典树)
<br />字典树,做的,据说暴力能过。。。<br /> <br />代码:<br />#include <iostream><br />#include <string><br />using namespace std;<br /><br />struct tree {<br /> int nxt[2];<br /> bool isWord;<br /> void init() {<br /> nxt[0]=nxt[1] = -1;<br />
2010-07-28 14:51:00
492
原创 pku 1042 Gone Fishing
<br />贪心做法,思想主要是枚举需要去几个地方钓鱼, 选定了地方后,直接把在路上的时间减去就是钓鱼上所画时间了。接下来按哪个地方鱼多九分配给哪个地方就行,不用考虑路程时间了。<br />这样做的原因是 如果你先在1处钓鱼,然后 某个时间去了x, 然后再次回到1,这样的话和一开始就在1多钓几次鱼的效果一样,而且前者还多花了路程上的时间。 枚举去前n个地方,然后在1处掉,掉完后去2,然后去3... 直到到n处为止。<br /> <br />具体的可以参照黑书。<br /> <br />比较好
2010-07-28 11:16:00
467
原创 hdu1251 统计难题(字典树)
<br />#include <iostream><br />#include <string><br />using namespace std;<br /><br />struct node<br />{<br /> bool isWord;<br /> int next[26],cnt;<br />}tree[1000010];<br /><br />string word;<br />int total;<br /><br />void init(
2010-06-17 21:38:00
386
转载 ubuntu播放器乱码解决方法(转)
ubuntu播放器乱码解决方法先在终端下,执行:sudo apt-get install python-mutagen从终端进入MP3目录,执行以全命令进行转换:mid3iconv -e GBK *.mp3经过逐个的认证,所在MP3目录下所有文件标签都升级为ntf8格式。这样重新启动播放器,引导播放目录播放,再也不会出现乱码了。
2010-06-17 18:45:00
916
原创 netbeans 按F9 无法编译的问题
<br />在ubuntu下安装了netbeans 一直没用,今天想试一段简单java程序的输出结果,居然还出问题了<br /> <br /> <br />就是运行完成一次后,再次按F9,居然没有反应。在工程上单击右键,发现compile 选项处于灰色状态,无法使用。<br />于是网上搜寻方法,无奈中文网站上都没搜到。最后好歹在国外的网站上找到了,貌似不少外国程序员也在诧异这个问题。<br /> <br />其实是6.8版本的netbeans的设置问题,默认状态下的java 选定了compile on
2010-06-17 17:29:00
2444
原创 pku 1472 Instant Complexity
<br />纠结的一道模拟题 ,快被它弄崩溃了,不做评论,栈模拟做的,<br />需要注意的地方有:注意LOOP的参数为0的情况,然后输出的格式相当复杂,但我的错误不是这两个。 <br /> <br />我是错在这种情况:<br /> <br />BEGIN LOOP n OP 1 END LOOP n OP 1 END END<br /> <br />正确的答案应该是 2*n 我之前的结果好象是 n^2+n<br /> <br />也就是没有考虑到LOOP 并行的情况,当成总是嵌套的来处理了。
2010-06-12 19:16:00
438
原创 pku1442 Black Box
<br />用优先级队列做的,由于一个细节问题,贡献了N次的RE<br /> <br />问题就是要求动态的查询第 k小的数,k由1开始递增<br /> <br />做法是用两个优先级队列 (也可以说是堆),一个最大优先级队列,一个最小优先级队列<br /> <br />由于是求第k小的数,所以每次查询的时候保持最大堆有有前k小的数就行了 然后返回qMax.top()<br /> <br />为了提取这前k小的数,所以我们一开始把数加入到qMin中,由qMin来返回前k小的数<br /> <br />要
2010-06-11 18:37:00
508
原创 pku2442 Sequence
<br />题意是 给出 m组数,<br />每组 n个数 然后从m组中 每组选出一个进行求和 ,然后取其中前n小的数输出<br /> <br />选择的总数自然是 n的m次方,暴力法自然是超时的。<br /> <br /> <br />一个简单的思路是,从第一组到第m组依次处理<br /> <br />首先第一组的n个数自然是最小的n个数, 然后这n个数和第二组的n个组进行组合,形成n×n个数,保留其前n个数,再处理第三组,依次类推直到第m组<br /> <br />为什么保留前n个数就可以了呢?
2010-06-03 19:16:00
896
1
转载 删除 ubuntu 10.04 grub 启动项中的内存测试选项(转)
方法一:菜单上不要memtest,没必要删除或修改文件,只要修改文件属性。代码:chmod -x /etc/grub.d/20_memtest86+sudo update-grub如果又再想要,就这样:代码:chmod +x /etc/grub.d/20_memtest86+sudo update-grub方法二:sudo apt-get purge
2010-05-26 09:41:00
1945
原创 pku 2106 Boolean Expressions
类似表达式求值的题目 和表达式求值的做法也差不多 用两个栈分别储存 操作数 和 运算符 运算符的优先级 为 ! > & > | 有个地方需要注意的是,如果是! 与 ! 自己进行比较, 应该当作 ! 因为第二个! 准备进栈时,如果此时处理 第一个!,储存操作数的栈为空栈,如果此时调用pra.top() 就会出现RE 代码如下: #inc
2010-05-23 20:10:00
676
原创 ubuntu codeblocks 更改调试终端
ubuntu下的codeblocks看起来果然是比windows下的稍微高档一点 建立控制台程序生成完毕后,发现自带的调试终端xterm不能进行复制粘贴操作(反正我是没弄出来,不知道有没有其他方法),在网上找了找,找到了个更换调试终端的方法,就是把ubuntu下的gnome-terminal 用作调试终端,修改后就行了。 具体操作如下:更改调试终端:使用gnome-ter
2010-05-23 18:21:00
3432
2
原创 杭州邀请赛的总结
杭州之行呢,如预期的一样——打酱油了 热身赛的时候排40多名,还是有得铜的希望的。正式比赛就比较糟糕了 由于队伍自身实力不强,一开始就做好了跟风的准备。比赛之前说好hjy看ABC三题和zzw看DEF三题,我看后面四道题,看题的时候就比较糟糕,一眼看过去,没有发现那种非常简单的纯模拟,不久就有队伍开始出H题了,然后我就叫他们俩也停止看题一起来弄H,想了一会,还是我去敲了,交上去Y
2010-05-13 08:34:00
737
转载 ubuntu 10.04安装jdk(转)
在ubuntu10.04版本里面,sun的jdk已经不是在标准库里面,标准库的只有openJDK了,sun的jdk已经被放到partner库里面,所以如果要安装jdk,需要以下步骤:To enable Partner Repo:SYSTEM -> ADMINISTRATION -> SOFTWARE SOURCES -> OTHER SOFTWARE-> ADDde
2010-05-05 16:09:00
543
原创 toj 3505. Naughty Mike(树状数组)
前天加了个acm群,群里一个人问的一个问题 看了一下,虽然知道是用线段树或者树状数组做,但是自己确不会这两种数据结构 看了看,贡献了无数次wa后,借助模板过了 题意很简单,就是求子段和, 但是由于数据量较大,普通的方法肯定超时,所以用树状数组。 数据量大只能用scanf 和printf 用cin 和cout超时 代码如下: #i
2010-04-29 08:43:00
532
原创 NKOJ 1791 Party at Hali-Bula(树状DP)
题目大意是某些人将去参加一次party 但是他们和他们不能和他们的上司一起参加,问满足此条件的情况下能去的最多人数首先由给出的条件建好树,我是用邻接矩阵来存的,主要是为了方便,实际上效率还是比较低的。需要保存两个状态 一是某节点不用(即此人不去的情况)时该节点和该节点子树的最大值dp[i][0]; 二是是用该节点时,该节点及其
2010-04-27 16:02:00
452
原创 pku 1017 贪心
题目大意就是在一个6*6的盒子里,放一些不同大小的方片 1*1、2*2、......6*6求把所有方片放下所需盒子的最小数量 用sum记录对于6*6的方片,必须得用一个盒子 sum+=num[6]; 对于5*5的方片,首先必须用一个盒子才能将其装下,所以sum+=num[5];剩下的空间只能装1*1的方片了,所以判断num[1]与11的大小,num[1]>11?nu
2010-04-25 10:26:00
509
原创 pku 1011(dfs)
dfs题目 有点麻烦啊 先写了一次wrong answer了参考了一下discuss错在了这种类型的数据上1021 14 13 11 9 6 4 3 2 1正确的匹配应该是:2114 4 313 6 211 9 1分析了一下应该是 在确定长度为21 是否满足条件时我是这么搜的2114 6 113 4 3 这里无法满足条件后就直
2010-04-13 12:07:00
468
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人