自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

转载 Qt系统托盘

<br /> <br />Qt的系统托盘的使用,可比mfc中好多了!他封装了一个专门的QSystemTrayIcon类,建立系统托盘图标。<br />其实在Qt提供的示例程序已经很不错了,$QTDIR/examples/desktop/systray<br />在这里简单的实现一个系统托盘功能,对其系统托盘类的使用做以演示。#include <QtGui>class Window: public QWidget{ Q_OBJECT public: Window(

2011-03-12 14:05:00 3153 1

转载 Ubunt10.04下安装Matlab2010

下载 Matlab,安装到/usr/share/matlab/。1. 安装时使用了root账户,安装完成后普通用户没有.matlab权限:替换用户名nansun代码:sudo chown -R nansun .matlab/sudo chgrp -R nansun .matlab/2. 中文字体不能正常显示:替换matlab和java安装目录如已安装java:代码:cd /usr/share/matlab/sys/java/jre/glnxa64/jre/lib/sudo ln -s /etc/java-6

2010-08-29 22:29:00 834

转载 ubuntu 下源代码编译安装

为了编译源代码包,你先要安装build-essential.你可以用以下命令很用以的就安装了build-essential.sudo apt-get install build-essential checkinstall    当然如果你不喜欢用apt-get命令,你也可以用新立得来安装build-essential和checkinstall.   现在我们需要把下载来的压缩文件解压,解压.tar.gz的文件,我们可以用以下命令(假设包含源代码的压缩文件是example.tar.gz)tar -xvzf

2010-08-17 02:12:00 820

转载 用U盘代替CD安装ubuntu

<br /><br />有人说未来光驱都用不着了。蓝光高清格式刚刚战胜了hddvd格式,还来不及庆祝胜利,马上就面临光驱将要被淘汰的命运。因为随着网络带宽的增加,移动3G / 4G的普及,随着硬盘和U 盘容量的迅速增加,动辄一两百元一张高价的几十G的光盘存储越来越像鸡肋。上次参加通信展,看到一款直接连接网络的“DVD”家用播放器,那么未来家庭环境还用得着摆一款蓝光DVD吗? 有高速的宽带和大容量的可移动的硬盘,或直接配HDPC,还用得着费尽心思去买高价光盘?<br />光盘消失有点不可思议。就像以前软驱是电

2010-08-17 01:10:00 1145

转载 修改Ubuntu9.10的Grub启动菜单

<br /> <br />        之前我的Ubuntu系统都是通过修改/boot/grub/menu.lst文件来实现修改Grub菜单的,而在9.10里修改这个文件就无效了。后来查询了下,了解到Ubuntu9.10用的是Grub2,已经不再使用原来的menu.lst,而是改成同目录下的grub.cfg的只读文件。后来想起来自己安裝Ubuntu9.10的时候,没有格式化原来的系统分区,所以原来的一些系统文件安装的时候并没有清除,导致我的系统同时存在这两个文件。知道原因后面就好办了,不过默认这个文件用s

2010-08-17 01:08:00 493

原创 Sicily 1294. 高级机密[数论]

<br />这道题其实没什么难度,放在这里只是想要对那个数学公式有个记录<br /> <br />即,x*y mod c=x*(y mod c) mod c<br /> <br />如此,求a^b mod c就容易多了~一个循环就行~<br /> <br />代码:<br />#include <iostream>using namespace std;int main(){ int a,b,c; cin>>a>>b>>c; int x=a%c; for

2010-07-28 23:14:00 1020

原创 Sicily 1010. Zipper

<br />DP,f[i][j]=true表示长度为i和j的两个单词a,b可以组合成c,否则的话表示不可以<br />则转移方程为<br />f[i][j]=true((a[i-1]==c[i+j-1] && f[i-1][j])||(b[j-1]==c[i+j-1] && f[i][j-1]))<br /> <br />不多说了,还要注意的是要初始化<br />for (i=1;i<=la;i++)if (a[i-1]==c[i-1] && f[i-1][0]) f[i][0]=true;for

2010-07-22 23:56:00 814

原创 Sicily 1064. Subway Tree Systems[数的最小表示]

首先,关于树的最小表示,可以看下http://blog.csdn.net/titikdhu/archive/2010/07/22/5755486.aspx这里我们可以看到的是,如果重新回到某结点,则其经过路径上的0和1的个数应该相等,因为进出是相对称的。故,我们可以根据0、1的个数来划分子树,当某区间内的0、1数相同则我们就可以把他们划为一颗子树之中。然后对子树进行某个顺序的排序(虽然是可以是任意规则下的排序,不过还是字典序比较简单),最后对两颗数处理后得到的最小表达进行比较,若相同,则same否则diff

2010-07-22 16:33:00 711

转载 有向树与树的括号序列最小表示法

<br /><br />[有向树] 一个弱连通有向图,若去掉方向后得到一棵树,则称此有向图为一棵有向树,记为T。<br />[外向树] 若一个有向树T,有且只有一个顶点入度为0,其余顶点入度都为1,则称T为外向树。T中入度为0的节点被称为T的根节点,出度为0的节点被称为T的叶节点。每个节点的有向边指向的节点被称为该节点的子节点。<br />[内向树] 若一个有向树T,有且只有一个顶点出度为0,其余顶点出度都为1,则称T为内向树。T中出度为0的节点被称为T的根节点,入度为0的节点被称为T的叶节点。每个节点的有

2010-07-22 15:34:00 2002

原创 Sicily 1089.Farey Sequence[线性筛法求素数]

<br />这道题用到了线性筛法求素数,关于线性筛法求素数可以参看http://blog.csdn.net/titikdhu/archive/2010/07/22/5754172.aspx。<br />这道题我们可以发现一个规律,设f[n]表示n阶Farey Sequence的的元素个数,则f[n]与f[n-1]之间的差值即为以n为分母,以小于n且与n互质的数为分子组成的真分数的个数,其实就是小于或等于n的正整数中与n互质的数的数目,这正式欧拉函数(Eular‘s totient function)的定义,

2010-07-22 03:07:00 1407

原创 线性筛法求素数

线性筛法求素数,顾名思义,其时间复杂度为O(n)。我是第一次接触线性筛法求素数,其中有些难理解的地方的确花了很多时间。先放出代码:#include using namespace std; const long MAXP = 200000; long prime[MAXP] = {0},num_prime = 0; int isNotPrime[MAXP] = {1, 1}; int main() { for(long i = 2 ; i

2010-07-22 02:42:00 9795 1

转载 关于memset的一些东西

之前只是知道memset一般只用来赋初值,后来一次看cplusplus看到了关于memset的描述,发现它是将设定的值怎么转化成字符..但是当时很迷,有很偶然的机会看到了下面的文章,觉得还好,放在这里做个记录吧~读一下下段程序段,你认为f中执行下列语句后会出现什么值呢?define MAX 1000000int f[MAX];memset(f,1,sizeof(f)); 当然,首先想到的一定是1.f中的值都被赋为了1。memset(f,0,sizeof(f))能够实现对f的清0工作。但是你要是运行上

2010-07-21 22:59:00 951

原创 Sicily 1088. Cows[树状数组]

这是我第一次接触树形数组,刚开始看题的首先想法,是O(n2)的朴素算法,但是看到n是105  就放弃了...最后实在想不到什么好的方法,上网一搜发现时树形数组,之前只是听说过,连它是做什么的都不知道...然后花了一晚上去搜索属性数组的知识,发现了一片比较好理解的文章,转到了我这里,地址是http://blog.csdn.net/titikdhu/archive/2010/07/21/5751887.aspx。好了,转来说这道题吧~其实我感觉即使知道要用树形数组的话,具体的实现方法也不好想...他是先以结束位

2010-07-21 11:46:00 1106

转载 树状数组

<br /><br />树状数组是一个很有用的数据结构,数组内元素的修改和查询区间段元素合是此数据结构的两个基本操作,这里用到两个数组a[],C[]。a数组是原数组,仅用于理解,编码时不用有a数组,基本内容就是用C[]数组来对应原数组a[],通过对C[] 数组的操作来实现它的两个基本操作:1。修改a中单个元素2。区间求和,的时间复杂度均为O(logN)(根据爱的猥琐大牛的说法,这是第一模式,第二模式为区间段修改,查询单个元素值)<br />现讨论第一模式:<br />树状数组用到了二进制的知识:(如图)<b

2010-07-21 11:06:00 801

原创 Sicily 1073. Pearls[动规]

DP题,只有分想到与想不到....这里定义f[i]用来存储有i种pearl时的最小花费,则这里可以得出以种类数为状态的动规,先给出转移方程f[i]=min{f[j]+(need[k]+need[k+1]+...+need[i]+10)*price[i]}(1这里有方程可以看出,是将种类j和i之间的pearl都按照i的价格计算得出的最小值,j的取值为小于i的任意非负整数,当j=0是,即将所有pearl都按照第i中的价格出售的总值,由于不存在第0种的情况,故数量求和时,k从1开始。DP题还是多做才能掌握啊...

2010-07-19 15:48:00 642

原创 Sicily 1087. A Funny Game[博弈]

 Alice and Bob ...俩人真牛...以后干脆这类题目起个名字就叫ABP(Alice and Bob Problem)吧..当n==1 || n==2时,明显先手必胜。当n==3时,明显先手必败。由于每次只可取1或2个,而取2个时,2个必须相邻,推断有:当n>3时,若n为偶数,先手无论如何取,后手可在先手对称的位置上取同等数量,于是先手必败。若n为奇数,先手取1个时,后手可在先手对称的位置上取2个,之后无论先手如何取,后手都可在先手对称的位置上取同等数量,先手必败。 先手一开始取2个时,可如上推

2010-07-19 14:41:00 1812 2

原创 stringstream用法小记

<br />stringstream可以把一个string字符串作为一个输入流<br />while (getline(cin,s)) { str<<s; int t=1; int tmp[100]; while (str>>tmp[t]) t++; str.clear(); } <br />仅做个小小的记录,并没有什么具体的实现说明

2010-07-15 22:58:00 508

原创 Sicily 1050. Numbers & Letters

<br />这道题也没什么好说的,直接DFS就可以了,只是要注意一句话“The aim is to use some arithmetic on (some of) the five numbers to form the target number.”,注意黑体的some of。<br /> <br />代码(几乎没剪枝):<br />#include <iostream>#include <cstring>using namespace std;int q,m,dest;int a[6]

2010-07-15 14:29:00 2131

原创 Sicily 1034. Forest

看了BBS上的题目分类说要DFS,但是听了舍友的建议,发现用一位数组存貌似也比较方便,所以就用了一位数组存。这个一位数组的元素是一个结构体,包括三个元素,fa、level、in分别表示父节点下标、当前节点层数、当前节点入度数。首先要先考虑特殊情况,这一点其实样例中已经给出了,就是当m=0的时候,森林的深度为0,而其宽度为结点个数(因为都是根节点,我本来YY m=0时只会输出0 1...结果...)。读入时更新fa和in,当in>=2时用flg记录下来,表示已经出现“two edges pointing to

2010-07-14 22:54:00 910

原创 Sicily 1039. Phone Home

<br />其实这道题难度不大的,只不过图论的染色问题好久没写过了(记得上次写估计还是高一吧...),所以写的时候又查了些时间,现在写完了,就干脆记到这吧~<br /> <br />这道题要求相邻(距离不大于20)的两个塔之间的频段不相同,即可以与着色问题相联系,即相邻两个点的颜色不同,这样这道题就成了典型的着色问题。<br /> <br />直接看代码注释解释更方便:<br />#include <iostream>#include <cstring>using namespace std;i

2010-07-11 21:04:00 793

原创 Sicily 1045. Space Management[离散化]

基本思想:本题用的是离散化。1 对读入的每个矩形的左下方与右上方的横纵坐标分别保存在数组p,q中。(也要将读入的点的坐标存在rgl[]中)for (int i=1;i>sx>>sy>>w>>h; rgl[i].sx=sx; rgl[i].sy=sy; rgl[i].ex=sx+w; rgl[i].ey=sy+h; p[i*2-1]=sx; q[i*2-1

2010-07-11 17:07:00 1109

转载 什么是离散化?

<br /><br />    如果说今年这时候OIBH问得最多的问题是二分图,那么去年这时候问得最多的算是离散化了。对于“什么是离散化”,搜索帖子你会发现有各种说法,比如“排序后处理”、“对坐标的近似处理”等等。哪个是对的呢?哪个都对。关键在于,这需要一些例子和不少的讲解才能完全解释清楚。<br />    离散化是程序设计中一个非常常用的技巧,它可以有效的降低时间复杂度。其基本思想就是在众多可能的情况中“只考虑我需要用的值”。下面我将用三个例子说明,如何运用离散化改进一个低效的,甚至根本不可能实现的算法

2010-07-11 13:33:00 1178

原创 Sicily 1049. Mondriaan

直接上递推公式 f[i]=3*f[i-1]+f[i-2]-f[1-3] (i>=3)递推公式为 f[i]=2*(f[0]+f[1]+...+f[n-3])+3*f[n-2]+2*f[n-1]长度为1的区间内可能有2种情况,即两个正方形或一个长方形长度为2的区间内去掉长度为1的区间中的情况有3种情况,即上面两个正方形,下面一个长方形,上下颠倒又是一种,还有两个长方形,共三种长度大于或等于3的区间中想要不与长度为2的情况重复,只能两个长方形相互重叠一个长度,在空缺处补正方形,上下颠倒即有两种由以上可得通项公式,

2010-07-11 01:53:00 1196

原创 Sicily 1031. Campus

<br />       这道题就不贴题目了,主要问题在于对输入数据的处理,Dijkstra不会存在太多的难度。      这道题目的输入是地点名,怎么样将字符串转化成数字并作为一个查找依据,这是这道题所要解决的问题,看过别人的解体思路,发现了一个很好用的STL类,map,这个类是利用红黑树将一种数据映射为另一种数据类型,在这里我们就可以将字符串string类型映射为int型。      在Dijkstra的过程中,利用到了STL中的priority_queue,即优先队列,利用该队列以结点到树的距离为判断

2010-07-10 21:35:00 1970 3

原创 Scily 1011. Lenny's Lucky Lotto

 ProblemLenny likes to play the game of lotto. In the lotto game, he picks a list of N unique numbers in the range from 1 to M. If his list matches the list of numbers that are drawn, he wins the big prize.Lenny has a scheme that he thinks is likely to be

2010-07-10 15:32:00 1853

原创 Sicily 1022. Poor contestant Prob

 ProblemAs everybody known, “BG meeting” is very very popular in the ACM training team of ZSU. After each online contest, they will go out for “smoking”. Who will be the poor ones that have to BG the others? Of course, the half who solve less problems. The

2010-07-10 00:36:00 3822 3

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除