03 2015 档案
摘要:1、显示列表的创建例如:glNewList(listID,listMode); glutSolidCube(2.0); ......glEndlist();可以创建一个listID显示列表,listID是一个不为零的正整数索引值,listMode指定显示列表的模式,其取值可以使GL_COMPIL...
阅读全文
摘要:helloServlet com.demo.HelloServlet helloServlet /hello helloUserServlet com.demo.HelloUserServlet helloUserServlet /hellouser
阅读全文
摘要:简单的opengl程序入门:#include"gl/glut.h"void initial(void){ glClearColor(1.0f,1.0f,1.0f,1.0f); glMatrixMode(GL_PROJECTION); gluOrtho2D(0.0,200.0,0.0...
阅读全文
摘要:利用glut创建一个菜单主要包括创建菜单,创建菜单项,制定选择菜单项的鼠标按键等步骤1、菜单注册函数:glutCreateMenu(ProcessMenu);用于创建一个弹出式菜单,它指定ProcessMenu作为菜单回调函数,void ProcessMenu(int value);value确定用...
阅读全文
摘要:opengl采用一种比较复杂的方式来实现拾取操作,即选择模式。选择模式是一种绘制模式,它的基本思想是在一次拾取操作时,系统会根据拾取操作的参数(如鼠标位置)生成一个特定视景体,然后又系统重新绘制场景中的所有图元,但这些图元并不会绘制到颜色缓存中,系统跟踪有哪些图元绘制到了这个特定的视景体中,并将这些...
阅读全文
摘要:键盘输入注册函数:glutKeyboardFunc(Key);它指定了程序在运行状态时,按下键盘上的任意一个键都会调用Ker函数:void Key(unsigned char key,int x,int ,y);参数key的取值是一个字符值或对应的ASCLL编码,而(x,y)则是按下键盘时窗口中当前...
阅读全文
摘要:这道题是道规律极强的题。。。真佩服在赛场上快速找到规律的人。 d[i]a[i]res[i] 0 1.000000Case1:0.5000002.0000001.000000Case2:0.3750002.7500001.500000Case3:0.3125003....
阅读全文
摘要:这道题是道简单的栈模拟题,只要按照真实情况用栈进行模拟即可:#include #include #include using namespace std; int main() { int n, i, j, k, flag[50]; char s1[15], s2[15...
阅读全文
摘要:这道题因为某些位置要重复走,所以不能用标记的方法,但是为了提高效率,可以采用time[]数组和step[]数组来剪枝,很容易想到,当你从一条路劲走到(x,y)处的时间和步骤比从另一条路劲走到(x,y)处的时间和步骤小时,那么time[]数组和step[]数组将这个最小的时间和步骤记录下来,即time...
阅读全文
摘要:安装过程:第一步:选择一个编译环境现在Windows系统的主流编译环境有Visual Studio,Broland C++ Builder,Dev-C++等,它们都是支持OpenGL的。但这里我们选择VC++ 6.0作为学习OpenGL的环境。第二步:安装GLUT工具包GLUT不是OpenGL所必须...
阅读全文
摘要:其中很多函数返回的都是首地址,程序中只是将该地址后的内容全部输出来了。。。并没有作特殊处理输出地址。。。还有几个函数有点小bug。#include"iostream"#include"stdio.h"#include"string.h"#define mx 100using namespace st...
阅读全文
摘要:这题需要分类讨论:第一种情况:n为奇数m为偶数的情况无解,因为m为偶数,每次翻转将把从正面翻到反面的个数x减去从反面翻到正面的个数y,得到的数必定为偶数。因为x+y为偶数,x-y也为偶数。而总个数为奇数,所以无解。第二种情况:n能整除m显然直接输出n/m。第三种情况:n,m同奇偶,且3*m>n的时候...
阅读全文
摘要:这道题是道算是一道很简单的贪心题了,但是要注意排序的依据,这道题是按照dps/hp的从大到小排序的,然后计算总的sumhp即可。#include"iostream"#include"stdio.h"#include"cmath"#include"string.h"#include"algorithm...
阅读全文
摘要:这题是暴力加贪心,算是一道水题吧!只要把l和w从小到大排个序就行了。。。#include"iostream"#include"stdio.h"#include"string.h"#include"cmath"#include"algorithm"#include"queue"#define mx 1...
阅读全文
摘要:这道题题目表示看不懂,如果哪位明白题意的,还望在评论里留个言指导一下!
阅读全文
摘要:这道题算是一道很经典的题,很好的诠释了贪心和动态规划的不同功能。求最少钱的数量用贪心就够了,但是求最多钱的数量要用到动态规划的思想,每步都尽量保留最大数量。具体看程序注解:#include"iostream"#include"stdio.h"#include"algorithm"#include"s...
阅读全文
摘要:这个安装过程很清晰,转载一下:http://jingyan.baidu.com/article/8065f87fcc0f182330249841.html
阅读全文
摘要:在不知道长度的前提下查找链表的中间节点:#include"iostream"#include"stdio.h"#include"algorithm"#include"string.h"#include"cmath"#define maxsize 100using namespace std;type...
阅读全文
摘要:实现两个集合的差:#include"iostream"#include"stdio.h"#include"algorithm"#include"string.h"#include"cmath"#define maxsize 100using namespace std;typedef int dat...
阅读全文
摘要:这道题是道简单的贪心题,题目中要的是最少要扣去的分数,那么我们要尽量得到最多的分数。首先将数据按照分数从大到小的顺序排序(如果相同就要deadline的从小到大排),然后每次取最大分数的将其安排在截至期限的最后一天,如果此天已安排,则一直向前一天安排,直到不能安排,则加入sum。#include"i...
阅读全文
摘要:线段树专题顾琪坤1、简介: 打acm的时候,经常会碰到一类问题,比方给你n个数的序列,然后动态的更改某些数的值,然后又动态地询问某个区间的值的和或者其它乱七八糟的东西,对于单个更改或者询问,也许很轻松的就能写出O(n)的算法,但可能n比较大,可能有10的5次方的数量级,并且更改和询问的操作总次数q很...
阅读全文
摘要:这道题是到贪心的题目,首先用ans记录下所有的0的个数,然后尽量去掉更多的0,剩下的0的个数就是最少的字数。首先想到最后一行的0的个数可以减掉,然后就是m行开头的两个0可以减掉。然后思考最多还可以减掉多少个0?当然是考虑每段的结尾处0的个数,因为还有m-1行的结尾可以减,所以就进行排序,减掉最大的m...
阅读全文
摘要:http://www.cnblogs.com/chinazhangjie/archive/2010/11/23/1885330.html大神总结的很好,特此记录一下。
阅读全文
摘要:被这道题坑到了,如果单纯的模拟题目所给的步骤,就会出现同一个位置要走两次的情况。。。所以对于bfs来说会很头痛。第一个代码是wa掉的代码,经过调试才知道这个wa的有点惨,因为前面的操作有可能会阻止后面的正确操作:#include"iostream"#include"stdio.h"#include"...
阅读全文
摘要:这道题实到bfs的题目,很简单,不过搜索的方向变成8个而已,对于不会下象棋的会有点晕。#include #include #include #include using namespace std;int c[9][9];int dir[8][2] = {{-2,-1},{-2,1},{-1,2},...
阅读全文
摘要:有起点和终点,有方向,有最少次数,所以这道题很明显是一道bfs的题目,这题要利用vist数组来标记已走过的楼层,因为这题里面已走过的楼层是不可能在走第二遍的。第二次走和第一次走的选择没有任何的区别。#include"iostream"#include"stdio.h"#include"string....
阅读全文
摘要:因为要求的是最少的时间,很明显的是一个利用优先队列的bfs的题目,题目很一般。#include"iostream"#include"algorithm"#include"stdio.h"#include"string.h"#include"cmath"#include"queue"#define m...
阅读全文
摘要:因为这道题中给的数据比较小,所以可以直接用枚举的方式进行dfs搜索,每出现一个‘@’,就进行一次dfs的搜索,将所有相邻的‘@’全部变成‘*’。#include"iostream"#include"stdio.h"#include"algorithm"#include"string.h"#inclu...
阅读全文
摘要:参考大神博客:chuanbindeng的素数判断算法关于素数的算法是信息学竞赛和程序设计竞赛中常考的数论知识,在这里我跟大家讲一下寻找一定范围内素数的几个算法。看了以后相信对大家一定有帮助。正如大家都知道的那样,一个数n如果是合数,那么它的所有的因子不超过sqrt(n)--n的开方,那么我们可以用这...
阅读全文
摘要:此思想借助2.2.1来帮助理解:先看对数的性质,loga(b^c)=c*loga(b),loga(b*c)=loga(b)+loga(c);假设给出一个数10234432,那么log10(10234432)=log10(1.0234432*10^7)=log10(1.0234432)+7;log10...
阅读全文
摘要:矩阵快速幂专题:(参考各位大神的博客学习一下)一: 据说,矩阵快速幂在递推式优化上相当神奇,而且效率很高。。。 两矩阵相乘,朴素算法的复杂度是O(N^3)。如果求一次矩阵的M次幂,按朴素的写法就是O(N^3*M)。既然是求幂,不免想到快速幂取模的算法,这里有快速幂取模的介绍,a^b %m 的复杂度...
阅读全文
摘要:众所周知,有限小数是十进分数的另一种表现形式,因此,任何一个有限小数都可以直接写成十分之几、百分之几、千分之几……的数。那么无限小数能否化成分数?首先我们要明确,无限小数可按照小数部分是否循环分成两类:无限循环小数和无限不循环小数。无限不循环小数不能化分数,这在中学将会得到详尽的解释;无限循环小数是...
阅读全文
摘要:网上找的大神的总结。中间很多图片省略掉了。。。以后补上。Catalan数 中文:卡特兰数 原理: 令h(1)=1,h(0)=1,catalan数满足递归式: h(n)= h(1)*h(n-1) + h(2)*h(n-2) + ... + h(n-1)h(1) (其中n>=2) 另类递归式:...
阅读全文
摘要:这个是我在网上找到的背包九讲,写的非常好:背包问题(Knapsack problem)是一种组合优化的NP完全问题。问题可以描述为:给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,我们如何选择,才能使得物品的总价格最高。问题的名称来源于如何选择最合适的物品放置于给定背包中。相似问题经常...
阅读全文
摘要:这道题是一道bfs的题目,因为题目中给的数据很小,所以可以采用优先队列的方式来简化处理。这道题在搜索的过程中要注意map1的不同层次的转换,即对'#'的理解。之前wa了两次是因为我考虑了如果上下两层对应位置都是'#'时输出'NO’,但是这是错误的,可以不考虑这个问题,也可以当上下两层都是‘#’时将它...
阅读全文
摘要:这道题是一道3分搜索的题。其实这种题很多时候都出现在高中的解析几何上,思路很简单,从图中可以看到,肯定在AB线段和CD线段上各存在一点x和y使得所花时间最少因为AB和CD上的时间与x和y点的坐标都存在一个凸函数的关系,所以可以想到利用3分搜索的方式进行求解。当然这里要用到两个三分搜索的嵌套,锁定x后...
阅读全文
摘要:这题的意思是找到最大的n使得m次之内的猜测可以猜到1~n之间的任何值。这里是二分思想的逆过程,1~h个数最多猜测log2(n+1)次(n为奇数),故n=2^m-1;#include"iostream"#include"stdio.h"#include"string.h"#include"cmath"...
阅读全文
摘要:这题是道三分的题,首先要分析满足条件的情况,这个就是平面几何的功夫了。要想车子能够转弯成功,最上面那个点到水平线的距离要小于等于y。这里h和s的公式就是利用平面几何的知识求出来的:s=l*cos(a)+w*sin(a)-x;s=l*cos(a)+w*sin(a)-x;其中s为最右边的那个点到拐角处的...
阅读全文
摘要:这题是道水题,用数学方法做比较简单。因为在做二分法的专题,所以这里采用二分的方式做,很简单,但是还是要用到数学的知识,比如三角形相似,圆台的体积公式等。#include"iostream"#include"stdio.h"#include"algorithm"#include"string.h"#i...
阅读全文
摘要:这道题也是道二分的题,主要有几个注意点:1、两个数组的合并的问题,可以将a数组和b数组合并,这样可以降低时间复杂度。2、二分查找的left和right的变化问题。之前这里一直wa。。。一定要是left=mid+1,right=mid-1;可以测试一下x=3和x=9以及x=10这个特殊的值。剩下的就是...
阅读全文
摘要:这道题是一道二分搜索的题,首先计算出最大的平均体积:mx=V总/f;然后去left=0,right=mx,mid=(left+right)/2进行二分搜索,当所有pi分割出的mid的个数是大于等于f时,说明这个mid是满足条件的,一直搜索知道找到最大的mid;这题的核心还是精度的问题。不得不说这题对...
阅读全文
摘要:本题是一道二分题,但是要利用导数来求最小值。对原函数进行求导,得到的导函数为f(x)=42*pow(x,6)+48*pow(x,5)+21*pow(x,2)+10*x-y;因为046802200时,f(x)恒小于0,故F(x)单调递减。当y>t; while(t--){ double y...
阅读全文
摘要:本题是一道二分的题,核心就是mi的大小,即精度的取值。因为原函数是一个单调递增的函数,所以可以确定y的取值范围,并且在范围内的每一个y的值,一定至少存在一个x与其对应。刚开始我将取二分这个环节用一个函数来表示的,但是返回值始终是一个随机值,实在是搞不懂,无奈之下只能将那个步骤直接写在主函数内。。。#...
阅读全文
摘要:本题也是一个背包的问题,我觉得这道题的核心就是根据精确度将浮点型转化为整型然后利用动态规划进行求解,注意对题意的理解,有3种支票是不能够报销的。我开始照着这个思路进行思考,但是敲出来的第一个代码居然超时了,想了一下没想出来就看了一下别人的代码,感觉上没什么才差别,但是别人的却a掉了。。。希望有哪位朋...
阅读全文
摘要:此题是一个背包的题目,刚开始我并没有作任何的排序工作,所以出来的结果总是错的,仔细想想也确实是不对的,因为q[i]会限制dp[i]的值的变化。虽然我知道要按照某个量进行排序,对原数据进行处理,但是实在是想不到到底要处理那个数据。于是看了一下大神的博客,原来是要对q-p进行从小到大的排序。对于原因我也...
阅读全文
摘要:这道题是道很基本的0/1背包的问题,为了使解题很简单一点,可以将题目中要求的最大概率转换成不能录取的最小概率,这样1-dp[n]即为至少有一个offer的最大概率。状态方程为:dp[j]=min{dp[j],dp[j-price[i]]*chance[i]}; 1 #include"iostream...
阅读全文
摘要:这道题是二维背包的问题,因为这道题里面有时间l和可选数量m两个约束条件。只要0/1背包的基础上再加上一重循环即可,这题需要注意的是初始化的问题,初始化时只有m=0时dp数组为0,其它置为负数。再一个就是程序第三重循环中的那一个判断,此判断的目的是dp[j][k]的最优子结构是否存在。本题的状态转移方...
阅读全文
摘要:本题的思路是:首先如果m5,则先拿出5元钱买最贵的东西,这样背包容量就变成了m-5,商品数量为n-1的0/1背包问题。此题的状态转移方程为:dp[j]=max{dp[j],dp[j-price[i]]+price[i]},dp[j]表示买前i件商品,预算为j时的最大花销。 1 #include"io...
阅读全文