2011年11月8日

poj1696 Space Ant

摘要: 题目让找出一条最长的非右拐的路径。每次找到一个基准点p0,最开始的时候是最左下角的点,然后我们再从未访问的点中找到相对于p0最小极角的那个点,比较极角用叉积来计算,所以我们总是每次迭代总是用此次循环中找到的最小极角来代替p0,然后再以这个新的p0,找到剩下的点中的最小极角,这样我们找到的就是一条最大的不右转的路径了。代码:#include <iostream>#include <stdio.h>using namespace std;const int N=50;const int INF=10000;struct node{ int id,x,y; node oper 阅读全文

posted @ 2011-11-08 16:38 buptLizer 阅读(554) 评论(0) 推荐(0) 编辑

凸包

摘要: 凸包模板:struct Point{ int x,y; Point operator =(const Point & p) { x=p.x; y=p.y; return *this; }};Point m[N+2],s[N+2];int cro(Point p0,Point p1,Point p2){ return (p1.x-p0.x)*(p2.y-p0.y)-(p1.y-p0.y)*(p2.x-p0.x);}double dis(Point p1,Point p2){ return sqrt(double((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p 阅读全文

posted @ 2011-11-08 16:35 buptLizer 阅读(191) 评论(0) 推荐(0) 编辑

2011年11月3日

poj1338 寻找丑数

摘要: poj 1338,2247,2545,2591这几个都是类似的题目,就是将满足要求的数列出来,给出一个n,问你第n个数是多少?以1338为例:对于每一个质数2 3 5,我们都要找到对应的之前已经计算出的最小的丑数使之乘以这个质数后大于当前的丑数,然后再从这三个里取最小的那个,我们记录三个数a2,a3,a5,分别保存对应的质数计算到哪个下标了,然后更新所有质数对应的下标,使之乘积大于当前的丑数。#include <iostream>using namespace std;const int M=1501;int ans[M];int getMin(int a,int b,int c) 阅读全文

posted @ 2011-11-03 09:45 buptLizer 阅读(1694) 评论(0) 推荐(0) 编辑

2011年10月26日

数论三(母函数)

摘要: 首先简要介绍下母函数是什么,然后说下它的应用场景,及相关题目。1母函数对于序列a0,a1,a2...构造一个函数G(x)=a0+a1x+a2x^2+...,我们成G(x)是序列a0,a1,a2,...的母函数。例如:(1+x)n是序列C(n,0),C(n,1),...,C(n,n)的母函数。如若已知序列a0,a1,a2,…则对应的母函数G(x)便可根据定义给出。反之,如若已经求得序列的母函数G(x),则该序列也随之确定。序列a0,a1,a2,…可记为{an} 。2应用场景a 邮票或者硬币的组合问题eg:若有1克、2克、3克、4克的砝码各一枚,能称出哪几种重量?各有几种可能方案?考虑构造母函数。 阅读全文

posted @ 2011-10-26 09:58 buptLizer 阅读(631) 评论(0) 推荐(0) 编辑

2011年10月23日

数论二(hdoj 卡特兰数)

摘要: 卡特兰数:1 通项公式:h(n)=C(n,2n)/(n+1)=(2n)!/((n!)*(n+1)!)2递推公式:h(n)=((4*n-2)/(n+1))*h(n-1); h(n)=h(0)*h(n-1)+h(1)*h(n-2)+...+h(n-1)*h(0).3前几项为:h(0)=1,h(1)=1,h(2)=2,h(3)=5,h(4)=14,h(5)=42,......4应用场景:a.括号化问题。 矩阵链乘:P=a1×a2×a3×……×an,依据乘法结合律,不改变其顺序,只用括号表示成对的乘积,试问有几种括号化的方案?(h(n)种)b.出栈次序问题。 一 阅读全文

posted @ 2011-10-23 20:53 buptLizer 阅读(4858) 评论(0) 推荐(2) 编辑

数论一(hdoj 简单数学题、推理题)

摘要: 100811081061题目让求N^N的最低位,N的最低位只与它最低位的N次方有关系,所以我们对一个数求它的N次方的时候,只考虑最后一位的连乘。一个数连乘是有规律的,比如2,循环节就是2,4,8,6。数组result[]保存得就是我们的循环节。源码如下:#include <iostream>using namespace std;const int N=10;bool used[N];int result[N];int main(){ int t,n,i; cin>>t; while(t-->0) { cin>>n; int dig=n%10; int 阅读全文

posted @ 2011-10-23 18:42 buptLizer 阅读(1201) 评论(0) 推荐(0) 编辑

2011年10月16日

poj2411 Mondriaan's Dream 棋盘覆盖

摘要: 问题描述:给出一个n*m的棋盘,及一个小的矩形1*2,问用这个小的矩形将这个大的棋盘覆盖有多少种方法。由于我们放置小矩形的时候可以横着放也可以竖着放,那么就会产生不同的方法,但是必须满足不产生空的未覆盖的空格子。首先我们用二进制1 0表示在某一个问题放置或者不放置,那么有m列的棋盘,每一行有2*m个状态了,我们现在就找出每行之间的规律。对于一个矩形有3种方法:横放,竖放,不放。由于第i行只跟第i-1行的放置有关系,因为我们必须保证第i-1行使放满的,现在用dp[i][state]表示第i行状态为state的方法,那么dp[i][curstate]=sum{dp[i-1][prestate]}. 阅读全文

posted @ 2011-10-16 18:00 buptLizer 阅读(1729) 评论(0) 推荐(0) 编辑

2011年10月15日

背包问题

摘要: 1 01背包问题有N件物品和一个容量为V的背包。(每种物品均只有一件)第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。解法:我们用dp[i][j]表示前i件物品重量不超过j的最大价值,则dp方程为j>w[i]时,dp[i][j]=max{dp[i-1][j],dp[i-1][j-w[i]]+c[i]}j<=w[i]时,dp[i][j]=dp[i-1][j].其中dp[i-1][j]表示第i件物品无法放在背包里的价值,dp[i-1][j-w[i]]+c[i]表示第i件物品放入背包里的最大价值,我们选择其中的较大的。优化:采用一维数组来优化dp[v] 阅读全文

posted @ 2011-10-15 21:39 buptLizer 阅读(322) 评论(0) 推荐(0) 编辑

2011年10月8日

linux下安装mysql小记

摘要: 系统ubuntu10.04mysql mysql-5.1.51.tar.gz步骤:1将压缩包解压tar -zxvf mysql-5.1.51.tar.gz2 进入安装目录cd mysql-5.1.513.检查是否安装g++或者gcc,build-essential,否则会提示错误.可以用新立得查看,也可以用命令dpkg -l |grep g++4 配置环境,生成makefile./configure --prefix=/usr/local/mysql也可以天剑更多配置项,但是添加的越多错误越多,最后还是选择最少的这个了,将安装目录放在/usr/local/mysql下。5 编译连接make6安 阅读全文

posted @ 2011-10-08 15:56 buptLizer 阅读(197) 评论(0) 推荐(0) 编辑

2011年10月6日

linux下hadoop安装笔记

摘要: hadoop安装笔记大致是一下几个步骤第一步:配置hosts文件第二步:安装ssh,实现无密码登录远程第三步:安装jdk第四步:安装hadoop下面详细介绍我的安装过程,我给出了我安装过程中出现的错误及解决方法我的集群环境为:3台电脑namenode-m,datanode1,datanode2,系统ubuntu10.041.配置/etc/hosts127.0.0.1 localhost192.168.195.135 namenode-m192.168.195.136 datanode1192.168.195.137 datanode22.建立用户jsjsudo useradd jsj3.修改j 阅读全文

posted @ 2011-10-06 13:32 buptLizer 阅读(9915) 评论(0) 推荐(0) 编辑

导航