自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ZXLS-ZMR的专栏

足迹, 学路漫漫,吾将上下而求索。

  • 博客(26)
  • 资源 (2)
  • 收藏
  • 关注

原创 poj1328-DP

没想到这是道水题,我先把意思搞错了,认为雷达是建立在小岛中,个岛相互联系,我就有点摸不着思路,无赖之下,到网上一搜,我才知道,自己想错了。这完全是数学分析题,先不说是不是DP,我们先要对问题进行模型化,即数学建模,既然是建在海岸线边,问题就简化了许多。简化为区间覆。,要使一个岛屿被圆覆盖,最极端的情况,就是刚好在圆周边上,这是一个处理问题的一个关键点,想想看,要减少雷达的个数,我们就必定把

2013-04-30 22:19:07 725

原创 列队-小型计算器

题意:对简单的‘+’,‘-’,‘*’,‘/';进行运算,运算的结果保证在长整型范围内。对除以0的输出"impossible".输入的运算操作均合法。输入的字符串长度小于50,数值没有小数出现。本题的意图很明显,就是依靠列队来或堆栈来实现。规定了一些条件,从而大大地降低了难度。分析也很容易。比如算:2+3*5-2;对于合法的运算操作,我们可以知道,操作数比操作符多一个,并且是相互交替,奇

2013-04-30 15:56:34 798

原创 2013ACM多校联合(4)_NUN-ZZ love Cookies

这道题,先是没弄清题意。后来才明白,这又是道水题啊。代码如下:#includeint main(){ int i,n; int a[1005]; while(~scanf("%d",&n)) { int Q=0,sum=0; for(i=0;i<n;i++) { scanf("%d",&a[i]); sum+=a[i]; } i

2013-04-28 16:24:00 740

原创 2013ACM多校联合(4)_NUN -ZZ买衣服

题意:衣服的品牌是有字符串表示,ZZ买衣服不喜欢买相同的品牌。(字符串的长度小于20,N,M小于100000)输入N,M,第一个表示她已经有了N种品牌的衣服,M代表她将要买的品牌衣服。如果以前没有这种品牌的衣服就输出YES,否则就输出NO。这题真坑了我,我没注意,M输入的品牌要加入她已经买过的品牌,先没注意到这点,直接就想到了二分查找。交上去WA几次了。后来问学长。才知道这回事。二分查找就行不通了

2013-04-28 13:47:52 992

原创 poj-1258 Agri-Net

这类题目做多了,简直就是水题。很直接的一个prim算法。不必多解释。#include#includeconst int Max=0xffffff;int main(){ int i,j,n,k; int a[100][100],w[100]; while(~scanf("%d",&n)) { memset(a,0x3fff,sizeof(a));

2013-04-26 19:07:21 643

原创 poj1287-Kruskal和prim算法。

学了这两种算法,总觉得还没完全体会,体会两种方法的不同,我个人喜爱用Kruskal算法,因为它不像prim算法那样还要初始化,for语句也要小一些,看起来比prim算法更整洁。下面以poj1287为列:DescriptionYou are assigned to design network connections between certain points in a w

2013-04-26 14:21:37 1094

原创 poj1251-Kruskal算法

The Head Elder of the tropical island of Lagrishan has a problem. A burst of foreign aid money was spent on extra roads between villages some years ago. But the jungle overtakes roads relentlessly,

2013-04-25 18:32:08 618

原创 集合A-B--二分查找

集合A-B的意思是,元素在A且不在B中。这道题显然不是什么难题。个人水平有限,我喜欢分析这样的水题,这对我个人来讲,有助于培养思维能力,再难的题也是有简单的题复合在一起组成的。这题有两种方法,一是直接枚举,而是二分查找。显然枚举只对小数有可以,时间复杂度为(n^2)而二分查找先要排序,后查找,时间复杂度为2nlogn,显然我们会采用第二中方法。输入n,m代表集合A,B元素的个数,接下来

2013-04-24 19:10:38 1399

原创 poj1861最小生成树(并查集)-kruskal算法

Kruskal算法是一种按网中边的权值递增的顺序构造最小生成树的方法。其基本思想是:设无向连通网为G(V,E),令G的最小生成树为T,其初态为T=(V,{}),即开始时,最小生成树T由图G中的n个点构成,顶点之间没有一边,这样T个边顶点各自构成一个连通分量。然后,按照边的权值由小到大的顺序,考察G的边值E中个条边。若被考察的边的两个顶点属于T的两个不同连通分量,则将此边作为最小生成树的边加入T

2013-04-23 21:28:34 940

原创 poj1061-扩展欧几里得算法

首先声明:本题分析来自他人,不属本人创作。题目分析:     根据题意可知,题目要求的是求(x+k*m)modl=(y+k*n)mod l这个模方程的k的最小整数解;跟据模的性质对这个方程变形得:k*(m-n)+t*l=y-x(t为引进的一整数);令a=(m-n);b=y-x;得:    k*a+t*l=b; 0)看到这个式子是不是感觉很眼熟,对,它就是扩展欧几里得法能解的

2013-04-22 18:44:52 736

原创 二分查找

二分查找的思路:对一个有序的数列,给我一个数k,我都可以把这个序列分成二分,即在这两边存在一个大于该数k,一个小于该数。这就相当于猜数字,你出一个数字,让我猜,对于我给的答案,你只要告诉我比该数大,还是小,或相等。我就可以一次判定该数的范围,最终找到答案,这个类似以优选法,但那并不是猜中间的,而是根据黄金比例猜的,也叫0.618法,这个数很神奇,斐波拉契数列的通式也有一这样的数(√ 5 -1)/2

2013-04-21 16:23:47 694

原创 威佐夫博弈-取石子

其实我也不太了解这个这个威佐夫博弈,定理的证明也没去过多的了解,只知道,它是一个数列,表示在这两个数一组的一种情况,如,(1,2),(3,5),(4,7).....中表示了先取的败局,可以用一个黄金分割点来刻画。具体要认懂,去看别人的分析吧,对于学习编程的人,没必要去个个弄懂,这么多理论,要弄懂,并非易事,我们只要知道有这么一回事就行了,怎么用代码去实现它,就ok了。#include

2013-04-20 19:20:19 877

原创 判断两个double的值

判断两个double型是否相等,不能用判断int型的方法去比较,这也是对初学者容易出现的错误,刚开始我在做POJ1730那个题目时候,就犯了这样的毛病。做出来的答案总是错的。因为我用double a,double b,if(a==b)...这样就是错的,后来在网上看了别人的代码才知道,比较两个double型:fabs(a-b)对POJ1730的题目,是要我们求a^b=c;求满足该等式下,b

2013-04-19 19:48:29 1005

原创 简单的gcd函数

这道题是小菜一碟。利用辗转相除法和递归就能得出来了。学会用递归,它的优点就是代码特简略。#includeint gcd(int x,int y){ return x%y?gcd(y,x%y):y; }int main(){ int a,b; while(scanf("%d%d",&a,&b)!=-1) { if(a>b) printf("%d

2013-04-17 20:58:06 2649

原创 服务员-dp

题意:服务员要服务每个顾客,顾客在订蛋糕后,要求服务员把蛋糕分成一份。对于蛋糕总体积(n),每次分成开成两个部分,要花费n*(n-1),而后面又有顾客来订蛋糕,时间可能发生了冲突,为了服务更多的顾客,可以放弃花费时间多的顾客,以确保服务顾客数量最多。第一组k,表示顾客的总人数。接下来是k组数据,每组两个,第一个是顾客到的时间,第二个是订的蛋糕体积。输出最多服务顾客的总数。分析:

2013-04-17 19:45:51 851

原创 求区间没被覆盖的点

题意:有N个顶点,每个顶点有一个权值,初始值皆为0。接下来有M次操作,操作内容为 [a,b) or [b,a),将区间内顶点i 权值置为1,求最后顶点权值为0的数量。多组测试数据。第一行为两个整数n, m,n(1接下来包含m行,每行包含两个正整数 a,b属于区间[1,n] ,意义如上所述。每组测试输出一行,包含一个整数,表示顶点值为0的数量。输入 3 1 1

2013-04-14 20:38:21 969

原创 贪心算法-求区间至少连续k的最大和

题意:对于一个整数n,表示该区间整数的个数,求至少有k个连续的数是该区间中一段的最大和。n的范围在1~10^6。k(-1000~1000);分析:这道题看似有点像树状数组,但要想求出区间至少有k个连续的数的和是最大,恐怕是有点难度,顶多是求某一区间的和。不过可以沿着这个思路想,sum(n)-sum(i)?。如果这样想,我们就要判断n-i>=k;那换种思路:在第i的前面寻找最小值,在

2013-04-14 16:59:53 2057

原创 平面划分。

一条直线能够将平面分成2部分,两条直线能够将平面分成4部分,而对于一条“V”型线而言,平面被分成2部分,两条“V”型线最多能够将平面分成7部分。对于椭圆封闭曲线对平面的划分又将不一样,任意两个椭圆至多有两个交点。现在给定一个N,你能够计算出三种不同情况下,空间最多被划分出多少个部分吗?若干组测试数据,每组测试数据占一行,每行一个正整数N(1每组数据输出一行,每行3个整数,之间用

2013-04-14 13:13:08 1143

原创 分组背包-ACboy needs your help

DescriptionACboy has N courses this term, and he plans to spend at most M days on study.Of course,the profit he will gain from different course depending on the days he spend on it.How to arrang

2013-04-10 21:44:53 645

原创 完全背包- Piggy-Bank

Description Before ACM can do anything, a budget must be prepared and the necessary financial support obtained. The main income for this action comes from Irreversibly Bound Money (IBM). The idea

2013-04-09 20:37:44 620

原创 背包问题-Bone Collector II

这是一道求背包问题第k次大解。思路稍有点变法,就是在递归的过程中,分别用两个数组记录两种状态(选择或不选择),并且只要记录前k次。在这两个数组中都是前k次可能的最优解。所以我们只要把这两个数组做比较,一直排到k就行了,另外,对于递归问题,我们只要抓住某个状态的前后关系,把复杂问题简单化,不必去纠结全过程的状态,应为程序在运行时,递归过程是用堆栈实现的,其变化复杂,没必要每步弄懂。重点在于抓住前后规

2013-04-08 21:52:53 669

原创 背包问题-Bone Collector

这道题是典型的简单背包问题,其他就不必多说。代码很简单。#include#include#include //调用max函数。 using namespace std;int f[1005];int Wi[1005],Di[1005];int main() { int n,m,i,v,t; cin>>t; while(

2013-04-08 18:48:41 674

原创 Goldbach's Conjecture

歌德巴赫猜想:任何一个偶数都可以等于两个素数之和。不过,现在还没人证明他是否正确。我认为是正确的。现在,我们不必管这么多,不如自己来编写一个这样的程序测试一下。如果你输入的数据有一个是“Goldbach's conjecture is wrong”,你就算推翻他的猜想啦!那你就出名啦!。呵呵,别高兴的太早,首先,你要保证你的程序对不对,我猜出了这种结果,95.5%是程序错啦!这是道

2013-04-07 20:34:22 745

原创 c语言课程设计—学生成绩管理系统

学生成绩管理系统是比较适合初学者的。它涵盖了c语言几乎知识。对于学了c语言的人,把这个课程设计搞好(当然自己能设计出来是要有很好的基础)。不管自己能不能够完成,最重要的是能弄懂。参考其他资料,试着自己编写是不错的选择。这个课程设计也是我参照资料,自己编写的。自己适当地增加了一些功能。不过,编的不够那么专业吧。#include#include#include#define size

2013-04-02 14:01:53 5658

转载 matrix

这个题是对区域的更新,对单个点的求值,与常规的一位树状数组不一样(常规:对区域的求和,单个点的更改),这个题的数据过大,如果用一个二维数组,检测直接就是TLE,所以,最好用二维树状数组,不过,对于刚学的人,这个二维树状数组实在是头痛,它是怎么更新的,内部存在什么关系呢?下面的分析可能让你有所了解。一、回顾一维树状数组 假设一维数组为A[i](i=1,2,...n),则与它对应的树状数组

2013-04-01 19:00:29 813

原创 堆栈的应用-进制的转换

学了堆栈,我们都会了解,它的一个显著的特点:先进后出,就像把东西放在桶子里面,先放的在下面,要拿就要从上面开始拿出来。了解这个原理,就好了。来一个实用的吧,就是进制的转换。二,八,十,十六进制的相互转换。(本程序对十六进制,含有字母的没做处理,但由其他进制的可以转成十六进制)就是有一点点瑕疵。不过,这个问题不大,把输入的字母转化为数字就行了。其他的都可实现啦。#include#i

2013-04-01 13:06:52 972

学生成绩管理系统

该学生成绩管理系统,功能比较齐全,对于初学者,是涵盖c语言的所有知识。

2013-03-08

插入排序.cpp

是关于插入排序的c语言源代码。代码简单,易懂。非常适合刚学的读者。

2013-03-08

空空如也

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

TA关注的人

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