自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

原创 poj 3802 Cubist Artwork

就是堆方块之后,给出主视图和

2014-05-25 18:13:47 676

原创 tarjan算法求割点 (poj1523为例)

之前学了tarjan算法只会用它来求强联通分量,

2014-05-20 21:05:42 517

原创 poj1236 强联通tarjan

tarjan算法之后,把一个图中所有的

2014-05-12 19:19:03 583

原创 poj 2001 Trie树 模板题

Trie树可以很方便的储存很多个

2014-05-04 16:42:32 475

原创 poj 1226 (字符串匹配,用KMP)

http://poj.org/problem?id=1226题意是,给出n个字符串,找出一个最长的

2014-04-22 16:22:23 578 2

原创 dlutoj1247 hashtable数字查询优化

http://acm.dlut.edu.cn/problem.php?id=1247就是一道看起来很简单的题!

2014-04-21 20:30:12 749 2

原创 dlutoj1251 最长公共子串 (2分+hash)

先把两个串的hash值都求出来,然后用二分答案的方法

2014-04-21 16:54:33 829 1

原创 一种字符串哈希方法 与o(n+m)字符串匹配

这种字符串哈希方法的基本想法就是把字符串转换成n进制

2014-04-20 00:03:55 652

原创 dlutoj 1219

http://acm.dlut.edu.cn/problem.php?id=1219是个二维的最短路,很新鲜啊~用配置好的sublime敲出来的第一个题,也是第一次敲spfa~好开心! #include#include#include#includeusing namespace std;const int maxn=1005;const int INF=0x3

2014-04-02 21:18:07 484

原创 链式向前星(数组模拟邻接表)

有的时候有的图可能比较稀疏而且点数较多,邻接矩阵存不下,所以就要用到邻接表。邻接表用vector数组比较方便,但是vector比较慢。所以就有了链式向前星。#include#include#includeusing namespace std;//链式向前星其实就是有n链表,每条链表存的是所有相同结点的边。const int maxn=1100;//点数

2014-03-29 20:25:20 3964 1

原创 poj 2253 floyd最短路!!!

http://poj.org/problem?id=2253上网查的题解基本都是最小生成树做的,把我的思路影响了。最后自己仔细的思考了一下,用floyd过掉。所以做题之前千万不要看别人的题解。。。题意:有两只青蛙想要见面,一共有n(2考虑到200的数据很小,而且任意两点都可以互相到达,是个超级超级稠密的图!!!很适合floyd!!!由于是求最长的一条边的最小值,所以更新数组值的方法

2014-03-29 19:17:40 695

原创 dlutoj 1205 字母排列

Description 现在wanghang有一个字符串,这个字符串全部由大写字母组成,wanghang想知道由这个字符串的组成所有字母生成的由字典序从小到大的全排列是什么?比如字符串是BCA,那么全排列为:ABC,ACB,BAC,BCA,CAB,CBA又比如字符串是ABB,那么全排列为:ABB,BAB,BBAjfs看到了这个问题,说:哈!太简单了!然后一下

2014-03-17 19:42:23 568

原创 dlutoj 1081 巧斗雷震子

Description因为下雨的关系,小朋友被困在综一了,W先生知道后,立即前往营救,一个N个点的图,一共M条边,边是双向的,但是因为下雨和打雷的关系,每个端点上都有雷震子镇守,想通过该点,必须被雷震子雷劈,每个雷震子都有一个雷劈伤害值,W先生很幸运,他有F张IP(挨劈)卡,一张IP卡可以抵消一次雷劈伤害,但是有个要求,不能在X和Y点都使用IP卡,也就是在X,Y两点中的最多使用一张IP

2014-03-13 18:46:06 699

原创 13-14寒假作业15

poj 3624完完全全就是一个01背包问题!!!具体01背包网上到处讲解,不再赘述。由于01背包在计算过程中只需要用到两行,当前计算行和上一行,所以dp数组可以这么开:dp[2][maxn]。还有就是用cin〉〉会超时。 #include#includeint a[13000],N,M,w[3500],d[3500],dp[2][13000];int max(in

2014-03-04 19:31:21 539

原创 13-14寒假作业14

hdu 1166 敌兵布阵中文题,不发题意。以前对于一个数组,求某一区间的和,可以用前缀和很快的解决。但是如果这个数组的元素是随时变化的,那么前缀和就不能用了。我们可以用线段树来解决。线段树是一颗二叉树,每个节点都是一个线段或者说一个区间。根节点是最大的那个线段,每个节点的左右儿子都是自己这条线段的左右两半,直到不能再分,就是叶子结点。每当我们改变一个点的值,我们从根节点开始向下找

2014-03-04 19:18:28 509

原创 13-14寒假作业13

poj 2352一道线段树的题。。。刚刚弄懂线段树就做了这个题,真心有点捉急。。。好在最后还是想明白了~题目大意就是输入星星的位置坐标,这颗星星左下角有多少颗星星他就是等级几的星星,最后输出所有等级的星星个数。因为输入的时候是按照从左到右从上到下的顺序,所以先输入的星星一定在后输入的星星下边或者左边。我们可以维护一颗根节点[0,N]的线段树,每次不需要理会该星星的纵坐标,只需要从根

2014-03-04 18:52:49 504

原创 13-14寒假作业12

poj 1949题目描述:有一些任务需要完成。每个任务的完成需要一些时间,并且有的任务必须要其他一些任务完成后才能去做。求完成所有任务的最短时间。其实两个任务是可以一起做的,不然把所有任务时间加起来不就好了吗。。。而且输入的时候按从前到后的顺序输入,所以输入的时候就可以进行dp。当前任务完成时的最短时间等于它的前提任务中最晚完成的那个加完成他本身所需要的时间。最后找出其中最大的时间

2014-03-04 17:27:42 505

原创 13-14寒假作业11

poj 2349有一些点,要求互相之间都能联系。有一定数目的卫星,每个卫星可以连接两个点,其余的点连接起来的消耗与连个点之间的距离有关。求最长的距离是多少。其实也就是最小生成树,用kruskal算法,判断出前S(卫星数目)条可用最大边,表示这些边都用卫星来连接,剩下的最大的那个边权值就是我们求得值。直接发代码吧~#include#include#include#incl

2014-03-04 17:20:17 546

原创 13-14寒假作业10

poj 1251一道简单的最小生成树。kruskal算法过掉。#include#include#include#include#includeusing namespace std;int n;int a[30][30];int f[30];struct xx{    int a,b,n;};int find(int x){

2014-03-04 17:14:36 450

原创 13-14寒假作业9

poj2524 并查集水题输入点的总数,在输入几对点,表示这两个点在同一组里,问总共有多少组。并查集是很快判断这种题的一个办法,用到了一些树的思想。首先设一个数组f[i],表示第i个点的祖宗是谁,开始的时候每个人的祖宗都是自己。一个祖宗和它的后代们就是在同一个集合里的所有点。每输入两个个数字,我们都找到他们的祖宗是谁,如果是同一个祖宗,说明他们是同一个集合的,否则令一个数的祖宗是另一个

2014-03-03 21:22:42 496

原创 13-14寒假作业8

poj 1308  是不是一颗树?输入几对数a,b,表示a点指向b点的一条边。判断这些边是否可以组成一颗树。输入两个零表示一组数据结束,输入两个-1表示程序结束。首先如果是一个树,边数一定是节点数减一,所以首先判断这一点。但是这样还还不够,我们得保证这些边不成环。于是这里可应用到并查集。然后每输入一条边,都用并查集判断这两个点是否在同一个集合里。如果他们在同一个集合里,就说明出现了环,

2014-03-03 21:09:01 482

转载 13-14寒假作业6

这个题真的不太会啊= =是看了别人的代码。。。感说得还比较好。。。我自己是dfs过了。转载出处:http://blog.csdn.net/lyy289065406/article/details/6661449下面是我的代码:#include#includeint a[6],sum,i,ans,OK;void dfs(int step){ /*   prin

2014-03-03 20:55:35 466

原创 13-14寒假作业7

poj 2479 也是一道dp的题,需要绕点弯子的最大字串和。输入一串数字,从其中任选两个不相交的字串,要求他们的和最大,输出这个最大值。先进行一次普通的求最长字串,不同的是dp不仅仅更新当前的值,还要更新这个值的起点终点。于是就需要一个结构体数组来记录(三个普通数组也可以的)。这个过程输入的时候就可以完成。记录下最大字串的值,和起点终点分别为m1      l1    r1。然后

2014-03-03 20:50:51 502

原创 13-14寒假作业5

poj 1836  简单的dp一些军人排队,给了你一个数组,告诉你他们的身高,问最少踢出多少个人,可以保证整个队伍每个人都能至少看到他一边人?也就是中间的一个人最高,两边的人逐渐变矮就可以了。具体做法就是从头到尾一个个枚举,假设当前的点就是最高点。在分别对两边进行dp求最大升序子序列并加起来,最大的那个值就是了。注意中间可能有两个一样高的人都是最高的,特判一下就好了~#include

2014-03-03 20:26:14 477

原创 13-14寒假作业4

poj 1163 数字三角形经典的简单dp!话说我的第一个dp就是这个,小白书上貌似用这个题举例子了。题目大意:输入一个数字的三角形,第一行一个数,第二行两个数,以此类推。。。问从第一行往下走到最下边所经过的路径和最大是多少,每次只能走左下一个或右下一个。具体的做法就是从上到下,一行一行的遍历,如果对于一个点上边只有一个点可以走到它,那么就把它的值加上上面点的值,如过有两个点可以走

2014-03-03 20:16:47 533

原创 13-14寒假作业3

poj 1050  输入一个矩阵,求出这个矩阵中数字之和最大的小矩阵的和是多少。开始没有注意到数据量比较小,还以为是什么神算法。后来看到100*100的数据,于是暴力做过掉。枚举小矩阵的宽度,对长度进行dp求最子字串就可以了。区间和用前缀和来记录,代码敲起来还有点讨厌- - #include#includeint a[110][110],sum[110][110];

2014-03-03 20:05:10 474

原创 13-14寒假作业2

poj 1088 滑雪简单的dp题,据说有人dfs过的,我没有尝试。中文题,不发题意了。dp的思路就是低到高进行一次递推,开始的每个高度都只需要一步就可以走到最下面。用一个结构体数组,存每一个点的坐标和高度。把这个数组按照高度从小到大排序。从最小的开始,看看上下左右的点中比他大的点当前走几步可以走到最下边,如果当前点的步数+1比这个值大,就把这个值更新为当前点的步数+1。

2014-03-03 19:57:24 586

原创 13-14寒假作业1

手敲快排之后懒惰了,没有手敲归并,假期的第一题就是手动实现了一下,ac了一个快排的题。poj 2623 http://poj.org/problem?id=2623题目大意就是输入一些数,输出他们的中位数。排序之后去中位数就可以了。归并排序的思想网上挺容易找到的,不再赘述,直接发代码。#include#include#includeusing namespace std

2014-03-03 19:40:14 555 1

空空如也

空空如也

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

TA关注的人

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