自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

blanKey的博客

起风了,仍要努力生存!

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

原创 POJ1840 Eqr (哈希)

题目点我点我点我题目大意:给出一个5元3次方程,输入其5个系数,求它的解的个数。思路:直观去暴力肯定会超时。换个思路,-(a1*x1^3+a2*x1^3)=(a3*x3^3+a4*x4^3+a5*x^3)。先用hash数组记录左边式子相同值的次数,这里要注意的是a1=a2时,x1=m、x2=n和x1=n、x2=m值相同,但是是两个解,然后暴力枚举右边式子。 另外,hash数组的上界就取决于a1 a

2015-11-29 14:22:45 383

原创 严蔚敏 数据结构习题6.62

对以孩子-兄弟链表表示的树编写计算深度的算法。#include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <math.h>#include <malloc.h>using namespace std;typedef struct tnode{ int data;

2015-11-25 13:05:16 754

原创 严蔚敏 数据结构习题 6.52

一个二叉树的繁茂度定义为各层节点数的最大值与树的高度的乘积。是写个算法,求二叉树的繁茂度。其实就是找出结点数最多的那一层,然后结点数乘以树的高度#include <iostream>#include <cstdio>#include <cstdlib>#include <cmath>#include <string.h>#include <algorithm>#include <queu

2015-11-25 13:02:22 1046

原创 严蔚敏 数据结构习题 6.49

编写算法判定给定的二叉树是否为完全二叉树#include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <math.h>#include <malloc.h>#include <queue>using namespace std;typedef struct tnode{

2015-11-25 12:53:46 799

原创 严蔚敏 数据结构习题6.47

编写按层次顺序(同一层自左至右)遍历二叉树的算法#include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <math.h>#include <malloc.h>#include <queue>using namespace std;typedef struct tnode{

2015-11-25 12:44:16 772

原创 严蔚敏 数据结构习题 6.41

编写递归算法,在二叉树中求位于先序序列中第k个位置的结点的值。#include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <math.h>#include <malloc.h>using namespace std;typedef struct tnode{ int da

2015-11-25 12:38:35 607

原创 hdu5547 Sudoku (暴力DFS)

题目点我点我点我 CCPC的H题,当时现场赛是连DFS都不会啊,唉o(︶︿︶)o 题目大意:数独 思路:直接暴力DFS,row[i][k]第i行数字为k的,col[i][k]第i列数字为k的。2*2的方块也必须是1234。#include <stdio.h>#include <string.h>#include <iostream>#include <algorithm>#inclu

2015-11-24 23:35:46 702

原创 hdu1042 N! (高精度\大数阶乘)

这里写链接内容这题非常容易超时,以前好多代码都不行了,目测数据改过,自己写了个还算比较巧妙的,后来发现2000多MS,然后rankNO.1的46MS,orz,哪位看官知道代码的请务必告诉我……#include<iostream>#define MAX 50000using namespace std;int main(){ int n,a[MAX]; int i,j,k,co

2015-11-24 23:25:38 466

原创 hdu3811 Permutation (状态压缩DP)

题目点我点我点我 题目大意:题目给出m对 a b,表示a位置放b,问你满足其中至少一对关系的总排列数。思路:表面上看似容斥定理,至于行不行我也没试过,用状态压缩DP就奇快,dp[i]记录的是第i种状态不符合a位置放b的情况的数目,dp[(1<#include <stdio.h>#include <string.h>#include <iostream>#include <algorithm

2015-11-23 23:48:09 478

原创 POJ 1001 Exponentiation (高精度/大数乘法)

题目点我点我点我 思路:首先处理输入的输入数中的小数点,先把小数点去掉,把原来的数存储在整型数组中,记录小数点的位置,然后再开一个整型数组存储中间结果。接下来比较简单,设数组a和数组b一开始存储输入的数,数组rec是中间数组,每次由数组rec来保存数组a和数组b的相乘结果,然后把数组rec复制到数组a,要注意每次都要对rec清零。 得出结果后就是计算小数点的位置,这个由原来的位置先倒序(因为数组

2015-11-22 23:54:59 753

原创 ZOJ Most Powerful (状态压缩DP)

题目点我点我点我题目大意:有n种原子,两种原子相碰撞的话就会产生能量,其中的一种原子会消失。问这n种原子能产生的能量最大是多少。思路:简单的状态压缩DP,我是用1代表灭,0代表存活。 状态 :dp[state], 状态为state时的最大能量转移 :dp[state | (1 << j)] = max(dp[state | (1 << j)], dp[state] + a[i][j]) 表示的是

2015-11-22 21:39:21 444

原创 POJ1185 炮兵阵地 (状态压缩DP)

题目点我点我点我 题目大意:简单不多说思路:先全列出所有可行的状态,放炮兵就为1,不放就为0,这时先不考虑地形,把可行状态列出来后,再与地形匹配,山地H为1,平原p为0,这样两者以二进制匹配得数为0则匹配成功。 然后第i行(i>2)只由第i-1行的状态和第i-2行的状态决定,dp[i][j][k]代表第i行的状态为j,第i-1行状态为k,所以有状态转移方程 dp[i][j][k]=max(dp[

2015-11-18 22:42:52 363

原创 POJ3254 Corn Fields (状态压缩DP)

题目点我点我点我题意:给出一个n行m列的草地,1表示肥沃,0表示贫瘠,现在要把一些牛放在肥沃的草地上,但是要求所有牛不能相邻,问你有多少种放法。思路:利用一个state数组记录所有可行状态的情况,将输入的每一行数取二进制的相反数,与state的可行状态相匹配,每一种匹配的状况再与前一行状况匹配,dp[i][j]代表第i行的第j种状态,记录第i行的第j种状态的方案数,利用层层递推,最后将最后一行所有状

2015-11-17 21:36:15 366

原创 POJ2411 Mondriaan's Dream(状态压缩DP)

人生第一道状态压缩DP,我这个弱渣想了N天终于弄懂了◑﹏◐题目大意:求1*2的地板填满n*m的砖块有多少种不同的方法思路:位运算+DFS+状态压缩。 当高度和宽度都为奇数时答案为0。 对于每一个位置,我们有三种放置方法: 1. 竖直放置 2. 水平放置 3. 不放置 d为当前列号 ,初始化d, now, pre都为0;对应以上三种放置方法,now, pre的调整为: 1. d = d

2015-11-16 22:14:16 517

原创 hdu 2087 剪花布条(KMP)

题目点我点我点我裸KMP,没啥好讲的。#include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <math.h>#include <algorithm>#include <malloc.h>#include <queue>#include <stack>using name

2015-11-14 17:31:02 334

转载 女生应该找一个玩ACM的男生

1、强烈的事业心 将来,他也一定会有自己热爱的事业。而且,男人最性感的时刻之一,就是他专心致志做事的时候。所以,找一个机会在他全神贯注玩ACM的时候,从侧面好好观察他,你就会发现我说的话没错。     2、永不放弃的精神 在比赛刚开始,神牛队就飘崎岖。玩ACM的男生不会退缩,而是毅然决定一个人继续AC下去,靠着自己对胜利的渴望,拿下一个气球、两个气球、三个气球……N个气球!即使WA了10+次

2015-11-13 20:40:18 434

原创 POJ2392 Space Elevator (多重背包)

题目点我点我点我题意:有一群奶牛向上太空,然后要用一块块塔搭上去,给出K种类型的塔,每种类型单块高度为h,在a高度一下都可以搭建,有c块。思路:多重背包问题,在进行多重背包之前要进行一次排序,将最大高度小的放在前面,只有这样才能得到最优解,如果将大的放在前面,后面有的小的就不能取到,排序之后就可以进行完全背包了。 注意这题只有花费,没有价值,利用dp记录能搭建的所有高度的情况,能搭

2015-11-13 16:46:56 448

原创 poj1276 Cash Machine(多重背包)

题目点我点我点我题意:给你一个cash,然后有N种价值为D,数量为n的钱币,要求凑出最接近cash的价值。 多重背包。#include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <math.h>#include <algorithm>using namespace std;

2015-11-12 23:49:40 373

原创 hdu2191 题目太长不打了orz(多重背包)

第一次见这么长的题目…… 多重背包,可以说背包九讲的模版题。#include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <math.h>#include <algorithm>using namespace std;int v;int dp[105],p[105],h[105

2015-11-12 22:42:05 501

原创 hdu1059 Dividing (多重背包)

链接点我点我点我 简单多重背包#include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <math.h>#include <algorithm>using namespace std;int dp[120100],a[7];int v,k; //v为体积void Zero

2015-11-12 22:12:44 361

原创 POJ2287 Tian Ji -- The Horse Racing(田忌赛马/贪心)

贪心策略: 1,如果田忌的最快马快于齐王的最快马,则两者比。 (因为若是田忌的别的马很可能就赢不了了,所以两者比) 2,如果田忌的最快马慢于齐王的最快马,则用田忌的最慢马和齐王的最快马比。 (由于所有的马都赢不了齐王的最快马,所以用损失最小的,拿最慢的和他比) 3,若相等,则比较田忌的最慢马和齐王的最慢马 3.1,若田忌最慢马快于齐王最慢马,两者比。 (田忌的最慢马既然能赢一个就赢,不

2015-11-11 22:11:07 445

原创 数据结构 文学研究助手(AC自动机)

最近两天都在做AC自动机,刚好数据结构实验可以用,比KMP算法好的地方是文章只要扫描一遍,大大节省了时间,但同时占的内存变大了,简单地说就是,空间换时间。#include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <math.h>#include <algorithm>#inclu

2015-11-09 20:48:13 2900 1

原创 hdu3065 病毒侵袭持续中(AC自动机)

题目点我点我点我题意:给你一些字符串,再给你一个长字符串,问之前的那些字符串分别出现过几次,按输入的顺序输出字符串和其出现次数。 跟上题有一点点变化,主要是主串有可能有不是字母,查询时注意一下就可以了。 另开一个数组作为记录每个模式串的次数。#include <iostream>#include <stdio.h>#include <stdlib.h>#include <s

2015-11-09 18:39:45 549

原创 hdu2896 病毒侵袭 (AC自动机)

只在每个模式串最后记录模式串的顺序号,中间全设为0即可,然后AC自动机跑一遍。#include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <math.h>#include <algorithm>#include <queue>#include <malloc.h>using n

2015-11-08 18:12:06 360

原创 hdu2222 Keywords Search (AC自动机)

AC自动机入门标准题。 主要总结建立fail指针过程:设这个节点上的字母为a,沿着他父亲的fail指针走,直到走到一个节点,他的儿子中也有字母为a的节点。然后把当前节点的失fail指针指向那个字母也为a的儿子。如果一直走到了root都没找到,那就把失败指针指向root。  使用广度优先搜索BFS,层次遍历节点来处理,每一个节点的失败路径。  #include <iostream>#include

2015-11-08 11:06:08 326

原创 hdu1251 统计难题(字典树)

题目点我点我点我模版式的字典树,没啥好说的,只是hdu有个巨坑,用G++提交会boom内存,改用C++提交就AC……一开始改了N遍,快抓狂的时候点了一下讨论区,发现都这样or2……还是不懂为神马#include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <math.h>#includ

2015-11-07 14:46:13 384

原创 hdu1671 Phone List (字典树)

题目点我点我点我题目意思:判断输入的电话号码中是否有号码是其他号码的前缀,很显然要用到字典树。 要注意每过一个样例就删除数,释放内存,不然内存会boom#include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <math.h>#include <algorithm>using

2015-11-07 12:30:14 405

原创 uva10635 Prince and Princess(LCS转LIS)

明面好似是用LCS做,但是开一个(250*250)^2数组明显爆了,规模太大,而且时间复杂度肯定会超时的。看了一下其他解题报告才懂,好巧妙地转化为LIS。 思路:首先将王子的序列(也就是第一个序列)看作一个相对于公主的序列(第二个数列)是一个标准衡量的序列,就是将第一个序列按照输入的顺序定义为1,2,3,……,n,只不过值的定义不同了,就如: 第一个数列为:1,7,5,4,8,3,9 我们按这

2015-11-07 01:05:49 643

转载 最长递增子序列详解(longest increasing subsequence)

发现一篇非常好的博文,分享一下。感谢joylnwang。原文点我点我点我对于动态规划问题,往往存在递推解决方法,这个问题也不例外。要求长度为i的序列的Ai{a1,a2,……,ai}最长递增子序列,需要先求出序列Ai-1{a1,a2,……,ai-1}中以各元素(a1,a2,……,ai-1)作为最大元素的最长递增序列,然后把所有这些递增序列与ai比较,如果某个长度为m序列的

2015-11-06 22:04:35 477

原创 2Char (Codeforces Round #329 (Div. 2) A)

暴利水题,然而比赛时一直没搞懂题意,跪了,赛后看了别人的代码才知道,直想吐槽一句:百度翻译,你坑我!!!! 题目是说给出一堆串,每个串最多有两个字母,求出含某两个(或者一个,如a,aa,aaa,就是6)的所有串在全部串中最长……(自己反复细细理解吧,我语文是体育老师教的) 最后,再说句:英语学不好,老死在天朝!#include <iostream>#include <stdio.h>#inc

2015-11-05 13:15:32 361

原创 hdu1087 Super Jumping! Jumping! Jumping!(LIS)

简单LIS#include <iostream>#include <stdio.h>#include <stdlib.h>#include <math.h>#include <string.h>#include <algorithm>using namespace std;#define inf 0x3f3f3f3f#define maxn 1005int dp[maxn],a[m

2015-11-04 23:23:29 380

原创 PawnChess (Codeforces Round #328 (Div. 2) )

A. PawnChess time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard output Galois is one of the strongest chess players of Byteforces. He has e

2015-11-04 16:55:18 414

原创 hdu1003 Max Sum(LIS)

最长递增子序列类型的,求最长连续和最大的序列#include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <math.h>#include <algorithm>using namespace std;int main(){ int cas=1,t,n,sum,a;

2015-11-03 23:09:24 416

原创 hdu1159 Common Subsequence(LCS)

LCS的无敌大水题#include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <math.h>#include <algorithm>using namespace std;#define maxn 500int dp[maxn][maxn];char str1[maxn],

2015-11-03 22:01:45 359

原创 hdu1503 Advanced Fruits (简单LCS)

典型最长公共子序列。#include <iostream>#include <stdio.h>#include <string.h>#include <math.h>#include <stdlib.h>#include <algorithm>using namespace std;#define maxn 105int dp[maxn][maxn];char str1[maxn]

2015-11-03 21:16:32 598

原创 hihoCoder挑战赛16 王胖浩与三角形

题目1 : 王胖浩与三角形 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 王胖浩有一个三角形,三边长为a,b,c。他有特殊的能力,能增加三条边的边长,增加的总长度不能超过l。他想通过合理地使用他的特殊能力,使得三角形的面积最大。输入 第一行一个整数T,表示测试数据个数。以下T行,每行一个四个整数a,b,c,l。数据范围:1<=T<=10

2015-11-01 23:25:01 657

原创 ZOJ3623 Battle Ships

题意: 对方有L滴血,我们有n种船可以选择,每种船建造时间为t,建好后每秒对敌方造成l点伤害,问最少多少时间能干掉对方。 思路:以时间为容量,对对方造成的伤害为价值,完全背包,可以理解成先攻击再造船,因为这两者并没有冲突,状态转移方程:dp[j+time[i]]=max(dp[j]+j*time[i]);dp[j]表示在j这个时间,所造成的最大伤害。这样就可以枚举时间,在每个特定的时间内,枚举船

2015-11-01 14:08:27 427

哈夫曼编码译码器

一个完整的系统应具有以下功能: (1)I:初始化:从键盘读入字符集大小N,以及N个字符和N个权值,建立哈夫曼树,并将它保存在文件HFMTREE中。 (2)E:编码:利用已建好的哈夫曼树(如不在内存,则从文件HFMTREE中读入),对文件TOBETRAN中的正文进行编码,然后将结果存入文件CODEFILE中。 (3)D:译码:利用已建好的哈夫曼树将文件CODEFILE中的代码进行译码,结果存入文件TEXTFILE中。 (4)P:印代码文件:将文件CODEFILE显示在显示器上,每行50的代码。同时将此字符形式的编码文件写入文件CODEPRIN中。 (5)懒人模式,一键自动生成权值信息、哈夫曼编码

2015-12-03

文学研究助手(AC自动机版本)

文学研究助手,AC自动机版本,数据结构 利用AC自动机只对文件进行一次扫描,统计要查询的单词在文档出现的次数及所在行

2015-11-22

空空如也

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

TA关注的人

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