自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

丿聪丶

每发一篇文章,就意味着我向成功更近了一步!

  • 博客(53)
  • 资源 (1)
  • 收藏
  • 关注

原创 poj 1988 并查集 搬箱子的问题

题意:输入N,代表了有N个箱子,没个箱子可以看作是一个“栈”,M后面的a  b 操作是把a箱子所在的栈中的箱子,整体放到b箱子所在的栈的顶部,画画图就懂了。C后面的数字是判断这个箱子的下面还有几个箱子思路:并查集。#includeusing namespace std;struct node{ int parent;//父亲节点 int count;//元素下的个数

2012-02-29 22:26:06 550

原创 poj 2236 并查集 计算机网络

题意:给出N,d代表有N个计算机,还有可以建立连接的限制距离d。O 后面的数字代表了维修好的计算机,S 后面的两个数字用来判断,这两个计算机是否建立的连接。思路:并查集,每修好一个计算机,进行标记,同时枚举所有计算机,在维修好的计算机中,找出可以建立连接的计算机,进行合并。#include#includeusing namespace std;struct point{ int

2012-02-29 22:16:25 410

原创 poj 2492 并查集 a bug's life

题意:给出一些不同种类的昆虫,然后判断给出的关系中是否有矛盾的关系。思路:带关系类型的并查集,不同种类的昆虫进行合并,同时更新关系。#includeusing namespace std;struct node{ int parent; int relation;}p[2010];int N;void make_set(){ for(int i=1;i<=N;i+

2012-02-29 22:09:37 437

原创 poj 1703 并查集

题意:输入A的时候 判断后面两个数的关系,输入D的时候后面两个数代表不在一个团伙。。。这题,按着食物链那个题瞎弄的,神奇的AC了,太爽了。。。思路:并查集,给出D的时候就合并,但同时要更新关系。relation  0 1 代表 在同一伙和不在同一伙#includeusing namespace std;struct node{ int parent; int relation

2012-02-29 10:34:52 304

原创 poj 1308 并查集判断“树”

题意:判断“带方向的树”,这道题,基本是参考了网上的代码。。。思路:并查集#includeusing namespace std;int pre[500];bool vis[500];void make_set()//初始化{ for(int i=0;i<499;i++) pre[i]=i,vis[i]=0;}int find_set(int x){ retur

2012-02-28 22:33:23 396

原创 poj 1511 spfa

题意:不好理解,看的网上的意思。大体意思就是,在有向图中,求1点到其它点最短路,和其他点到1点最短路的和。思路:正向和反向建图,分别SPFA(1),最后求d[i]的和即可要注意 inf要足够大,同时累加和的时候int型的数据可能会越界,要用__int64.#include#include#define inf 0x7fffffffusing namespace std;struct

2012-02-28 22:23:33 337

原创 poj 2159 字母映射

题意:原来字母变换不一定只是加一,排列也不一定是按照案例来的。。。被虐了。。。思路:只要统计出两个字符串中字符的个数,然后用一次排序,来看是否满足映射关系就可以。例如统计个数的数组a,b应该是0,11,00,00,22,0...这样就是如果右边的原始字符数组是加一变换的话,坐标的数组统计的个数就会相应的下移一格。。。加二,加三依次类推,所以用一次快排,然后比较即

2012-02-27 12:43:10 392

原创 poj 2251 三维BFS

题意:在三维的图里从S走到E,'.'可以走,'#'不能走,求最小步数。思路:水BFS。#includeusing namespace std;struct point{ int x,y,z; int step;}P[30000];int dx[6]={-1,1,0,0,0,0};int dy[6]={0,0,1,-1,0,0};int dz[6]={0,0,0,0,1

2012-02-26 23:32:12 344

转载 poj 1010 邮票问题 DFS

原文地址:http://hi.baidu.com/you289065406/blog/item/8c4395033c085d0b738b6502.html大致题意:题意比较难懂。大致如下:第一行数字是邮票的面值,每一个数字就是一个不同的种类,哪怕面值相同。以0结束。第二行数字是顾客所需要的邮票总面值。每个数字就是一个顾客的需求,以0结束。每两行是一组case。以EOF结束输

2012-02-19 21:03:49 570

原创 poj 2502 floyd 家-地铁站-学校

题意:给出家和学校的坐标,从家出发,沿途经过地铁站,一些地铁站是一条线上的,可以如果到地铁站的话,可以随便上车,步行和地铁的速度也给出,求家到学校的最短时间。注意:地铁线不一定是直的,所以只要在一条地铁线并且是相邻的两站那么就建乘地铁的边,否则就步行。思路:建图+floyd#include#include#define INF 0x7ffffffusing namespace

2012-02-19 17:45:30 702

原创 poj 1020 拼蛋糕

题意:给出正方形蛋糕的边长,然后给出一些小蛋糕的边长(正方形),看这些小的正方形能不能拼成这个大的蛋糕.思路:感觉就是个二维的 1011..但是写起来还是悲剧啊...最后还是看了解题报告...  这种搜索的技巧,还真难掌握...  具体注释,看代码#includeusing namespace std;//从上到下从左到右 搜索 int cnt[20],len[50];//cn

2012-02-19 12:22:04 506

原创 poj 1862 priority_queue

题意:给出N个数m1,m2,m3...任意两个相撞会形成一个新的m,m=2*sqrt(mi*mj),求最好剩下的最小的m思路:如果要想m最小,则要求mi,mj分别最小,递归的想下去,则应该每次保证最大的两个最开始相撞,所以用到了优先队列。#include#include#include#includeusing namespace std;int main(){ int N

2012-02-17 22:57:18 597

转载 STL--map

转载于: http://www.cppblog.com/MiYu/archive/2010/08/25/124656.html由于STL是一个统一的整体,map的很多用法都和STL中其它的东 西结合在一起;map中由于它内部有序,由红黑树保证,因此很多函数执行的时间复杂度都是log2N的,如果用map函数可以实现的功能,而STL Algorithm也可以完成该功能,建议用map自带函数,效率高

2012-02-17 15:58:29 342

原创 poj 2418 统计字符串出现的百分比

这道题本来想练习下trie的,但是DFS遍历的查找单词怎么想,也没有实现...后来看可以用STL的map 搞,顺便学了下这个映射的容器.感觉如果时间卡的不是很严的话,STL还是很强大的.#include#include#includeusing namespace std;int main(){ map mp; map::iterator iter;

2012-02-17 15:56:44 449

原创 poj 2001 trie 树

题意:求给出的字符串的最小前缀,此前缀满足是这些字符串中唯一的前缀,也就是这个前缀除了这个字符串以外不能再是其它字符串的前缀了.思路:trie这道题让我明晰了  strncpy()这个函数,它是把第二个字符串的前n个字符附给第一个字符串,但是我输出的时候却错了,可能第n个字符没有被覆盖,后来在第一个字符串的n这个位置改成'\0'...果断水过.#include#includeu

2012-02-17 12:34:54 332

原创 poj 1789 根据字符串中字符的差异来确定距离的最小生成树(水)

题意:输入N,然后N行,每行输入一个长度是7的字符串,比较每个字符串上相同位置的字符,如果不同的话这两个点的距离加一思路:prime求最小生成树,1/Q就是最大的值。#includeusing namespace std;int N;int map[2100][2100];char s[2100][10];int dis(char *str1,char *str2){ in

2012-02-15 20:44:53 374

原创 hdu 2899 二分

题意:利用函数的单调性求出极值点(二分求),然后输出极值 #include#includeusing namespace std;double y;double get_ans(double x){ return 42*pow(x,6.0)+48*pow(x,5.0)+21*x*x+10*x-y;}int main(){ int N; sc

2012-02-15 16:29:59 310

原创 hdu 2289 二分求水的高度

题意:给出杯子的参数,和水的体积,求水的高度,....这二分?难道水不一定是从杯子底下开始的?#include#include#define Pi 3.14159265using namespace std;double r,R,H,V,a,b,mid;double get_V(double h){ double tr; tr=(h/H)*(R-r)+r;

2012-02-15 16:06:09 394

原创 链表

#includeusing namespace std;struct node{ int num; node *next;}*head,*p,*r,h;int main(){ node h; int N; head=(node*)malloc(sizeof(node));//或者改成head=&h; //head->num=1; p=head; for(

2012-02-14 21:47:41 320

原创 hdu 2199 二分解方程

题意:给出Y的值,求x的值思路:x 是浮点型,枚举?不会。。用的是二分查找。#includeusing namespace std;double ans(double x){return 8*x*x*x*x+7*x*x*x+2*x*x+3*x+6;}int main(){ double Y,b,c,mid; int N; scanf("%d",&N); whi

2012-02-14 13:13:40 403

转载 ctype.h包含的相关函数的用法

ctype.h里的函数  原文链接:http://blog.csdn.net/young0325/article/details/6625302           重点记忆:atof(),atoi(),字符串的数字,转化成float 和int 的数字。isalpha()和isalnum()...可以简化代码用。    1 字符测试函数  1> 函数原型均为in

2012-02-13 21:52:33 1094

原创 poj 2256 P U I 字符串

题意:看输入输出应该很明了,开始理解错了,以为输入的三句话是固定的呢,原来是任意的文本信息,然后没个字符串中,会出现P,U,I数值中的其中两个,然后根据P=UI,输出另外一个变量的数值。这道题是在heu的练习上做的,没A,后来发现是北大的原题,弄了半天终于A了,真是考验耐心的好题啊!!懒得简化代码了~ #include#includeusing namespace std;int m

2012-02-13 20:50:09 620

转载 STL资料汇总

原文链接:http://blog.csdn.net/lmyclever/article/details/6750041向量(vector) 连续存储的元素Vectorc;c.back()    传回最后一个数据,不检查这个数据是否存在。c.clear()     移除容器中所有数据。c.empty()   判断容器是否为空。c.front()

2012-02-13 06:58:49 360

原创 poj 3481 set 容器 银行 K P

题意:输入1的时候 输入 K  P,输入2的时候找出最大的P对应的K,并删除这个P。输入3的时候找出最小的P对应的K,并删除P。输入2,3的时候如果没有P了,那么输出0.思路:利用set 和 priority_queue#include#includeusing namespace std;typedef struct { int k,p;}settype;bool ope

2012-02-12 23:26:09 601

原创 poj 1028 stack模拟网页

题意:实现网页访问,前进,后退的功能思路:开两个stack进行模拟栈操作  画两个栈,写写就知道怎么回事了#include#include#includeusing namespace std;int main(){ stack F; stack B; string a,b; B.push("http://www.acm.org/"); while(cin>>

2012-02-12 13:45:56 412

原创 poj 2002 HASH判断正方形

题意:给出一些直角坐标系的点,求这些点可以组成多少个正方形。思路:hash 正方形一条边的两个点的和,然后求另外两个点,如果可以找到构成这个正方形的点的话,个数加一#include#include#define M 1031using namespace std;struct point{ int x,y;};point P[1024];int cmp(const vo

2012-02-12 09:09:32 626

原创 hdu 1800 字符串的hash(BKDRHash 模版)大牛推荐的函数

题意:看LCY的课件,脱去题的马甲,意思就是求最有多少个重复的数字,数字要去掉前导零。思路:hash#include#define maxn 249997using namespace std;int hash[maxn],coun[maxn];int ans;unsigned int BKDRHash(char*str) { unsigned int seed=13

2012-02-10 22:10:43 3302 4

原创 hdu 1496 hash 方程解的情况

题意:根据题中所给的方程,输出a,b,c,d,输出满足方程的解的方案的个数思路:hash x1,x2  和 x3,x4  如果两个状态存储的位置相同那么方案数加一,最后求出的方案乘以2^4,因为四个未知数是平方项,正负对其没有影响。#includeusing namespace std;int hash[2000005];int main(){ int pin[105],i

2012-02-10 21:59:47 576

原创 hdu 1425 简单的数的hash

题意:求出给出的数中从大到下的m个数。思路:hash#include#define MAX 1000001#define N 500000//根据数的范围来看,保证数组不越界using namespace std;int main(){ bool hash[MAX]; int n,m,h,num,t; while(scanf("%d%d",&n,&m)!=

2012-02-10 21:51:19 403

转载 ELFhash函数

算法:1.把字符串的每个字符依次相加,每次将加的结果向左移动4位。2.如果加的结果大于28位,对结果向右移动24位与原值取异或出处:http://www.bigwind.me/archives/260.html/ ELF Hash Functionunsigned int ELFHash(char *str){ unsigned int hash =

2012-02-10 20:20:30 524

原创 poj 2109 注意double 范围

题意:求满足k^n=p的  整数K,double 数据范围10^300 直接用double水过#include#includeusing namespace std;int main(){ double n,p,k; while(scanf("%lf%lf",&n,&p)!=EOF) //cout<<pow(p,1/n)<<endl; printf("%.lf\n"

2012-02-10 17:42:52 396

原创 poj 3630 tire树 phonelist 静态数组版

题意:判断给出的号码是否有是其它号码前缀的情况,有的话输出NO,没有输出YES。思路:tire树,指针版会超时,所以改用数组模拟。#includeusing namespace std;struct node{ int end; int count; int next[10];//子节点 void init()//初始化 { end=0; coun

2012-02-10 11:23:34 423

原创 poj 2945 Find the clones (tire树)

题意:输入一些人的DNA序列,输出的意思是,第一行代表没有被克隆的人数,第二行是被克隆一次的人数。。。依此类推。思路:字典树,建树的时候保留DNA最后一个字母的count信息,存在ans[]数组里,这里有个技巧,一、没克隆的++。二、克隆过的++,同时上一个克隆的次数--;代码比较搓,5000MS限制,4000MS+水过,同时内存超了,释放了下内存,AC了。#includeusi

2012-02-09 23:08:37 603

原创 hdu 1251 统计难题(tire 树 模版题)

题意:统计以某个字符串为前缀的单词的数量。思路:字典树,建树的同时统计,节点字符的个数#include#define max 26using namespace std;struct node{ int count;//记录此节点字串的个数 node *next[max];//子节点 node()//构造函数 new node()时候自动执行 {

2012-02-09 17:08:19 675 1

原创 poj 1056 判断前缀

题意:输入一些二进制编码,判断是否有是其它编码前缀的编码,如果有则输出...not...。没有则可编码。每组输入数据以9为结束标志。#includeusing namespace std;int main(){ char str[15][15]; int i=0,h=1,j,k,len1,len2,flag=0; while(scanf("%s",str[i++])!=E

2012-02-09 15:21:05 1256

原创 poj 1552

题意:统计给出的数中有多少个数能够整除其它的某个数字,并且商是2#includeusing namespace std;int main(){ int a[20],t,len,sum,i,j; scanf("%d",&a[0]); while(a[0]!=-1) { for(i=1;a[i-1]!=0;i++) scanf("%d",&a[i]);

2012-02-09 14:17:56 519

原创 基数排序

#includeusing namespace std;int main(){ int data[10]={73,22,93,43,55,14,28,65,39,81}; int temp[10][10]={0};int order[10]={0}; //temp[i][j]代表当前尾数,可能是个位,十位...order[i]这个尾数所在的temp位置中的位置 //例如根据各位数

2012-02-09 14:09:18 383

原创 poj 3427 模拟

题意:输入N(N棵树),L(只能伐长度是L的数目),然后输入N棵树的高度。枚举等待的年数,0到L-1  到L和0应该是一样的,然后把每年剩下的浪费的树的长度加起来,最后求出浪费最少的树木的等待年数。#includeusing namespace std;int main(){ int a[30010],b[30010],L,N,i,j; while(scanf("%d%d",

2012-02-08 21:52:06 492

原创 处理字符串用到的函数

(1)函数名称:     strdup 函数原型:     char *strdup(const char *s) //函数参数是带const 的,貌似用数组定义的字符数组传不进来函数功能:     字符串拷贝,目的空间由该函数分配  函数返回:     指向拷贝后的字符串指针 参数说明:     s是待拷贝的源字符串 所属文件:      //#include#in

2012-02-07 21:20:28 359

原创 poj 1573

题意:看图就能明白。一种情况是走出迷宫,一中情况是死循环,分别输出走出去用的步数,还有多少步开始出现环,还有走一个环需要的步数。思路:第一感觉就是DFS,但是自己写了个代码,各种案例都可以通过,依然WA,最后无奈只有参考了网上的代码。http://hi.baidu.com/niren_cn/blog/item/cd76cca6d23733b6caefd0c0.html#includ

2012-02-07 13:12:16 342

空空如也

空空如也

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

TA关注的人

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