自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

许增强

生活就像心电图,想要一帆风顺除非你死了~

  • 博客(101)
  • 收藏
  • 关注

原创 草稿

Tyvj 1188 //矩阵连乘#include#include#include#includeusing namespace std;const int MAX=25;const int Inf=1000010;#define CLR(arr,val) memset(arr,val,sizeof(arr)) int n,a[MAX],DP[MAX][MAX],

2012-08-23 16:51:16 741

原创 java封装和包

通过DOS命令运行编译java文件:1>运行,输入cmd;2>进入DOS界面,输入cd: 文件名路径,回车3>输入所在盘,回车4>输入javac java文件名.java5>输入java java文件名如:一、封装:将客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的对象将属性和实现的细节进行隐藏。封装的作用:1>安

2013-03-05 20:55:32 2744

原创 java代码运行过程

由下面的代码引入:import java.util.Scanner;class Animal{ public void show() { System.out.println("动物!"); }}class Student{ Animal a=new Animal(); private int age; private String name; static Stri

2013-03-04 18:30:16 774

原创 java学习---类

构造函数:在创建对象的同时,给对象的赋初值。构造函数的函数名必须与类名同名.如:class CCircle{ private String color; //将颜色定义为私有类型的成员变量,表示在类的外部不能改变其值 private double pi=3.1415; private int radius; /** * 求该圆的面积

2013-01-11 19:50:52 990

原创 二分图的最佳匹配

KM算法:题1:HDU 3488(Tour),二分图匹配求最小值,求最小值的时候可以先把每条边的权值取反求出最大值后,输出取反即可得出最小值。#include#include#include#includeusing namespace std;const int MAX=210;#define Inf 100000000#define min(a,b) (a)

2012-09-25 20:16:45 637

原创 线段树三:求任意区间的最值

从做这几个题目我发现了,能调用库函数的尽量调用库函数,不然的话可能会超时。不信可以试,在题1的头文件下定义宏:#define min(a,b) (a)<(b)?(a):(b)在题2中定义宏:#define max(a,b) (a)>(b)?(a):(b)题1:Tyvj 1038(忠诚),给定区间求最小值。只需更改Query即可,由于没有修改操作,可以删除Update操作。#

2012-08-29 10:02:10 1506

原创 线段树二:修改区间的值求任意点的值

阿萨德

2012-08-29 10:01:27 1159

原创 线段树一:修改点的值求任意区间的值

强烈推荐:这篇文章------------------------(完全版)线段树。线段树的作用:解决区间计算问题。例如:记录一个区间的最值(最大或最小值)和总量,并在区间的插入、删除、修改中维护这些最值和总量。线段树是一颗二叉树。记为T(a,b),a,b表示顶点T为区间[a,b]。区间长度b-a记为L。递归定义T[a,b]:若区间长度L>=1,区间[a,(a+b)/2]为T的左孩

2012-08-28 08:53:18 2701

原创 SPFA算法

具体见:SPFA,这里面讲的很详细。它的大致算法流程:①、初始化时,把源点pos加入到队列中,并置Dist[pos]=0,其它各点到源点的距离设为Dist[V]为∞;②、每次取出队列中的一个元素,并以该点为中间点,对于该点有边相连的点V进行松弛操作,如果松弛操作成功,改进Dist[v]的值,并把v加入到队列中;③、反复进行②操作,直到队列为空,Dist[v]表示源点到其它各点的最短距离

2012-08-26 10:08:43 1961

原创 强连通分量

有向图的强连通分量:在有向图G中,如果两个顶点vi,vj间(vi!=vj)有一条从vi到vj的有向路径,同时还有一条从vj到vi的有向路径,则称两个顶点强连通。如果有向图G的每两个顶点都强连通,称G是一个强连通图。非强连通图有向图的极大强连通子图,称为强连通分量。如图所示:{1,2,3,4}为一个强连通分量,因为顶点1,2,3,4两两可达,{5},{6}也分别为两个强连通分量。Tarj

2012-08-21 16:09:55 1336

原创 多进程DP

题1:NYOJ 61(传纸条),先看一个人的情况,DP[i][j]表示纸条到达(i,j)的时候好心程度之和的最大值,那么由于只能向下或者向右走,那么到达(i,j)位置可能是由(i-1,j)下移一步或者由(i,j-1)位置,右移一步得到,所以动态转移方程为:DP[i][j]=max(DP[i-1][j],DP[i][j-1])+G[i][j]。(G[i][j]表示(i,j)这个位置的人的好心程度)。

2012-08-18 11:12:50 1194 1

原创 01背包

01背包:有N件物品和一个容器为V的背包。第i件的物品重量为w[i],价值为v[i]。那么放入哪些物品后能使得背包的总价值最大。且每种物品只有一个,要么放入,要么不放入。设DP[i][j]表示前i件物品在背包容器为j的最大装载量。①、当物品总量为0时,DP[0][j]=0,当容量为0时,DP[i][0]=0;②、若当前的体积j③、否则若j>=w[i]时,有:DP[i][j]=max

2012-08-15 10:45:52 639

原创 区间动态规划

1、矩阵连乘,tyvj 1198(最优矩阵连乘),关键是写出动态转移方程。用DP[i][j]表示矩阵Ai乘到Aj的最优解,P[]用来存储矩阵的行和列,M[i-1]表示矩阵i的行,M[i]表示矩阵i的列。当i==j时,DP[i][i]=0;当i(A3A4A5A6A7A8)A9。我们知道若A矩阵为r1*c的矩阵,A2为c*r2的矩阵,得到的将是一个r1*r2的矩阵,且连乘次数为r1*c*r2。

2012-08-14 09:19:19 6388

原创 NYOJ 动态规划

题1:NYOJ 10(滑雪),前面的博文-动态规划中有。题2:NYOJ 15(括号匹配),放在区间动态规划中。题3:NYOJ 16(矩阵嵌套),大概意思给你n个矩阵,这些矩阵相互嵌套,问能够嵌套的最大个数,直接按长度从大到小排序,长度相等则按宽度从大到小排序,由于能够嵌套满足:长1DP[i]=max(DP[i],DP[j+1])(0 #include#include#inc

2012-08-14 08:47:09 2276

原创 最小费用最大流

最大流:(1)、Ford_Fulkerson算法:在任何运输网络中,最大流的流量等于最小割切的容量。割集:在一个有权图中,源点为s,汇点为t,从s到t有很多路径可以走,每条路径都包含若干条边。这些边可能只属于一条路径,也可能同时出现在两条路径中。如果拿掉这张图中的一些边,就无法从s到达t,这些边的组合就叫做割集。最小割:割集有很多,每一个割集中元素的权值之和称为割集容量。所有割集容

2012-08-12 15:48:05 738

原创 二分图的最大匹配

二分图:图G中顶点集V可以分成互不相交的子集(X,Y),并且图中的每一条边所关联的点分别属于两个不同的顶点集,则图G叫二分图,如图所示:二分图的匹配:给定一个二分图G,在G的一个子图M中,M的边集{E}中的任意两条边都不依附于同一个顶点,则称M是一个匹配,当匹配数达到最大时为二分图的最大匹配。当然最大匹配的方案可能不能,但是最终结果都是一样。上图中最大匹配可以由(1,1),(2,2),(3

2012-08-11 09:49:21 1046

原创 Floyd算法

例题2:POJ 2570,某条道路由一些公司修建,修建道路的公司可以提供这条路上的连通,如第一个测试数据中,从1到2有a,b,c三个公司可以提供路径,现给你任意的两个地点,问有哪些公司可以提供路径。这个题的难点就是给你的字符串如何存储,我们用map[u][v]表示u到v可以由哪些公司提供路径。初始化为0,那么它的二进制的每一位都为0,用0~26的位置表示a~z是否可以提供路径,可以则设为1。如

2012-08-09 16:12:52 627

原创 并查集题目总结

有关并查集的知识可以点这里,这里知识说下题目:POJ 1611(意思是有很多人编号为0~n-1,一开始只有编号为0感染了,然后输入多组数据n,m,n是总人数,m为群体数,接着有m行,每一行最前面的一个数表示这个群体的人数,然后输入这些人的编号,在这些群体中只要有一个被感染的话这群人都会被感染,问最后有多少人被感染。)很裸的并查集,直接输出与0在同一个群体的人的个数即可,代码略。

2012-08-09 10:38:21 626

原创 牛顿迭代法

牛顿迭代法:设r是f(x) = 0的根,选取x0作为r初始近似值,过点(x0,f(x0))做曲线y = f(x)的切线L,L的方程为y = f(x0)+f'(x0)(x-x0),求出L与x轴交点的横坐标 x1 = x0-f(x0)/f'(x0),称x1为r的一次近似值。过点(x1,f(x1))做曲线y = f(x)的切线,并求该切线与x轴交点的横坐标 x2 = x1-f(x1)/f'(x1),称x

2012-08-03 15:50:24 782

原创 计算几何求公式

例题1:POJ 1380(矩阵的包含),给你两个矩阵的长和宽,问前面这个矩阵能否包含后面这个矩阵。(1)、当前面的矩阵的宽(2)、当前面矩阵的面积(3)、当前面矩阵的长,宽>后矩阵的长,宽,能够包含。(4)、特别注意前矩阵宽>后矩阵的宽,但是长 判断只需要后面这个矩阵在水平方向上的投影之和C*cos∠2+D*sin∠2,自己认真看看,具体见代码。#include

2012-08-02 11:13:36 828

原创 计算几何-线段

首先是直线相交,这个简单,就是看斜率,斜率不同则相交。重点分析线段与线段相交,给你两组坐标P1(x1,y1),P2(X2,y2),Q1(x3,y3),Q2(x4,y4),判断P1P2与Q1Q2是否相交:首先可以很快排除下面四种情况:对于第①种情况满足条件:max(Q1.x,Q2.x)if(max(P1.x,P2.x)<min(Q1.x,Q2.x)|| min(P1.x

2012-07-30 15:08:33 826

原创 计算几何之凸包

这个内容我看了半天,我还是不大清楚,主要靠模板了,更多的知识点击这里,下面是凸包的构造过程:凸包模板为(我把结构体也写了出来):struct Point { double x,y; friend istream& operator>>(istream &cin,Point &p) { cin>>p.x>>p.y; } friend

2012-07-29 11:14:34 587

原创 计算几何基础

最基本的概念就是叉积,其实说白了就是三角形的面积的2倍。但是叉积有正负,所以可以用来判定给定的三个点的顺序问题。叉积的公式为:E X C = x1*y2 - x2*y1(在原点的情况)。模板为:double multi(point p0,point p1,point p2)//计算叉积 { return (p1.x-p0.x)*(p2.y-p0.y)-(p2.x-p0.

2012-07-29 10:16:21 546

原创 取石子游戏之尼姆博弈

尼姆博弈:有三堆各若干个物品,两个人轮流从某一堆取任意多的物品,规定每次至少取一个,多者不限,最后取光者得胜。这种情况与二进制有着很大的关系,我们用(a,b,c)来表示某种局势,那么(0,0,0)必然为奇异局势,最后一个面对这个局势的必败。(0,n,n)也是种奇异局势。因为如果对手在其中一堆取m个石子(m直接说结论吧:对于任意的奇异局势(a,b,c),都有a^b^c=0。(^为异或运算

2012-07-23 08:43:26 1214

原创 取石子游戏之威佐夫博弈

下面博文中有一部分是转载自ACM and JAVA的文章。威佐夫博弈:有两堆各若干个物品,两个人轮流从某一堆或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜。我们用(ak,bk)(ak局势。如果甲面对局势(0,0),说明甲输了,我们把这种情况叫做奇异局势。现在的问题我给你一个局势(a,b),我们怎么判断它是不是奇异局势呢?判断公式为:ak=[k(1+√5)

2012-07-20 23:28:07 1163

原创 取石子游戏之巴什博弈

下面这段来自白白の屋的文章的一段:巴什博弈:只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。    显然,如果n=m+1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个,后取者都能够一次拿走剩余的物品,后者取胜。因此我们发现了如何取胜的法则:如果n=(m+1)r+s,(r为任意自然数,s≤m),那么先取者要拿走s个物品,如果

2012-07-19 16:00:06 6856

原创 STL中map和priority_queue的应用

基本的知识就不再讲了,只列下用map做的题目:题1:POJ 1002(487-3279),这个题目烦的死,TLE了n次,只是因为我用G++提交的,好啦,要注意的就是把数组开大点,和用c语言输入,最后如果没有重复的电话号码输出:No duplicates.。#include#include#include#include#include#includeusing na

2012-07-19 11:18:30 2211

转载 俄罗斯方块

这个厉害呢~~呵呵,转载的飘谊的文章俄罗斯方块,这里也推荐下这个博客:nyist_飘谊,具体代码如下:#include#include#include#include#include#include#define PLUS(x) (x == 1 ? 1 : -1)#define ZFROM_W 21//游戏框的宽#define ZFROM_H 21//游戏框

2012-07-16 15:16:46 1280 2

原创 又见高精度

具体模板我前面的博文中有:大数类模板,我一直都在用这个模板,我认为比较的好,思路较为清晰,好吧,再次复出啦。高精度加法:具体见POJ 2413(有多少个菲波数?),意思不难理解,求区间[a,b](a一般思考方法,枚举,但是题目中说了a大数类模板中的高精度相加的模板:#include#include#includeusing namespace std;const int

2012-07-16 10:56:39 987

原创 矩阵-斐波那契数列

利用矩阵来求解斐波那契数列的有关问题是ACM题中一个比较常见的题型。例:NYOJ 148(斐波那契数列2)。有关斐波那契树列的规律详见这里。(1)、对于n>1,都有f(n)与f(n-1)互质。(2)、f(n)=f(i)*f(n-i-1)+f(i+1)*f(n-i)。现在说说怎么利用矩阵来求解斐波那契数列。我们可以先保存b=f(1),a=f(0),然后每次设: b'=a+b a'

2012-06-08 13:39:19 13687 2

转载 矩阵的应用--矩阵相乘与矩阵快速幂

以下内容转自Matrix67大牛的文章。稍作修改~矩阵相乘:矩阵的乘法满足结合律--(AB)C=A(BC),及分配律-(A+B)C=AC+BC,但是不满足交换律。不要以为数学中的矩阵也是黑色屏幕上不断变化的绿色字符。在数学中,一个矩阵说穿了就是一个二维数组。一个n行m列的矩阵可以乘以一个m行p列的矩阵,得到的结果是一个n行p列的矩阵,其中的第i行第j列位置上的数等于前一个矩阵第i行上的m个

2012-06-08 08:15:50 3130

原创 NYOJ 514(整数中的1)

有篇博文写的是统计二进制中1的个数和,这篇是统计区间内十进制的1的个数和,题目链接:NYOJ 514。先讨论下1到n间的1的个数和。给你一个数如:384,求1~384的1的个数之和。那么我只需求出1~300中1的个数和+1~80中1的个数和+1~4中1的个数和。1~4的1的个数为1,1~80中1的个数为101(十位数)+8*100(个位数)----十位数有10,11,12,13....

2012-06-06 09:11:11 1133

原创 愤怒~烦心~

好烦~好烦,真的,先是电脑被偷,再是由于旷课太多助学金被扣~,这个学期怎么那么的~,心碎了,到头来还是怪自己~以后要认认真真的,还是~还是烦~

2012-05-31 22:59:16 520

原创 位运算

(1)、按位与(&),将两个操作数化为二进制后并将对应的每一位分别进行逻辑与操作。(a%(2^n)=a&(2^n-1))(2)、按位或(|),将两个操作数化为二进制后并将对应的每一位分别进行逻辑或操作。(3)、按位异或(^),和以上同,异或是指对应位相同则运算结果为0,否则为1。(4)、按位取反(~),对每一位进行取反。(求x的相反数:x=(~x+1))(5)、移位。分为左移(>)

2012-05-28 13:47:20 1755

原创 学生管理系统

乱写~~乱写,都不知道自己在写什么~标准做法是用链表,可惜我不懂~呵呵,下面只是一种是实现的方法,具体的操作可由用户自己更改~#include#include#include#include#include#include#includeusing namespace std;const int MAX=1010;#define s setw(10)#d

2012-05-27 23:35:46 2006

转载 自顶向下的语法分析–递归下降分析–表达式求值

以下内容转载自:acmol的博客。先是找到合适的正确的产生式,然后在产生式中为每个非终结符写一个递归函数即可。比如,表达式求值,可以有以下产生式:Expression->Term|Expression+Term|Expression-TermTerm->Factor|Term*Factor|Term/FactorFactor->(Expression)| number

2012-05-23 22:37:18 2174

原创 河南省第五届ACM程序设计竞赛题解

呵呵~我不是河南省的,我只是顺便做下~第一题:NYOJ 540(奇怪的排序),比较简单,但是我下sort排序时少加了一位,WA~~~#include#includeusing namespace std;const int MAX=100;struct Perm{ Perm(){A=B=0;} int A,B;};bool mysort(con

2012-05-23 08:43:01 3338

原创 c++

1、std::cin和cin的区别,好像是没有什么区别,只是std::cin是标准输入流,当你使用std::时,则表明你在告诉编译器你正在调用标准命名空间(namespace standard),其次为了避免每次都使用std::,所以用到命名空间using namespace std; 下面是输出Helo World!的两个程序。#includeint main(){ //st

2012-05-17 22:08:57 821

原创 c语言

1、scanf返回的是输入字符的个数,printf返回的是输出字符的个数,例下面的代码输入43,会输出1  4321.#include#includeusing namespace std;int main(){ int n; printf("%d\n",scanf("%d",&n)); printf("%d\n",printf("%d",printf

2012-05-16 16:07:37 444

原创 次小生成树

次小生成树一定是最小生成树换一条边形成的,最小生成树的模板点这里。同样的道理可以使用Prime算法和Kruskal算法。 惯例,使用例题作为说明,例题:NYOJ 118(修路方案)方法1:首先求出最小生成树T,然后枚举添加每条不在最小生成树上的边(u,v),由于最小生成树连接了所有的点,那么再添加一条边的话一定会形成一个环。找到环上权值第二大的一条边(即除(u,v)以外的权值最大的一条

2012-05-13 22:30:29 634

空空如也

空空如也

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

TA关注的人

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