自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 为以后做准备[ACM比赛技巧]

1. 比赛中评测会有些慢,偶尔还会碰到隔10分钟以上才返回结果的情况,这段时间不能等结果,必须开工其他题,如果WA,两道题同时做。交完每道题都要先打印。  2. 比赛时发的饭不是让你当时就吃的,那是给你赛后吃的。基本上比赛中前几名的队都没人吃,除非领先很多。  3. 很多选手,尤其是第一次参加比赛的,到一个新环境,全当旅游了,参观的参观,找同学的找同学,玩玩乐乐就把正事抛到脑后了,结果比赛

2015-11-26 09:39:14 2329

转载 Floyd、Dijkstra、Bellman-Ford、SPFA的比较

原创:http://www.cnblogs.com/hibernate6/archive/2011/02/12/2522331.html几个最短路径算法的比较:Floyd       求多源、无负权边的最短路。用矩阵记录图。时效性较差,时间复杂度O(V^3)。        Floyd-Warshall算法(Floyd-Warshall algorithm)是解决任意两点间

2015-11-25 23:21:18 365

原创 hdu4126树形dp + 错误分析

先贴第一次写的代码#include #include #include #include using namespace std;//结构体//常量const int N_MAX = 3005;const int M_MAX = 9000005;const int INF = 1000000000;//变量int N, M, Q; //N个村庄M条路vecto

2015-11-25 22:17:46 438

转载 Java中普通代码块,构造代码块,静态代码块区别及代码示例

转自:http://www.cnblogs.com/sophine/p/3531282.html//执行顺序:(优先级从高到低。)静态代码块>mian方法>构造代码块>构造方法。其中静态代码块只执行一次。构造代码块在每次创建对象是都会执行。1 普通代码块 1 //普通代码块:在方法或语句中出现的{}就称为普通代码块。普通代码块和一般的语句执行顺序由他们在代码中出现的次序

2015-11-24 09:47:01 355

原创 poj3255次短距离 dijkstra

虽然是水题, 但是一次照样写不对。虽然是次短距离,但是是比最短距离短的距离,而不是小于等于最短距离的距离。为什么这个dijkstra没用used标记,因为题目中说了,所有路可以走无限次具体还是看代码吧#include #include #include #include using namespace std;//结构体typedef str

2015-11-23 20:40:01 341

原创 hdu2196经典树形dp

借鉴于:http://blog.csdn.net/shuangde800/article/details/9732825做了一题就可以把很多此类类型题给弄懂了,该题的意思大概就是给你N个点M条边,求出每个点距离其他点的最远距离。思路是把该无向图转换成有向图如下图定义f[i][0] 为i这棵子树上,距离i的最大距离f[i][0]定义为,除了这课

2015-11-23 19:19:58 380

原创 POJ2342 简单树形dp

因为在做HDU4126的时候需要使用树形dp,然而我对树形dp一点也不了解,所以做一下树形dp的题来加深其了解,题目不说了dp方程是 :  dp[i][0] += max(dp[j][0],dp[j][1]) //i是j的父亲dp[i][1] += dp[j][0] 其中dp[i][0] 表示该人没来dp[i][1]表示该人来了贴代码#i

2015-11-22 17:56:07 467

原创 hdu4081 最小生成树的变形,通过此题理解了什么时候不能用优先队列实现prim算法

问题大概思路,摘选自网络:我就不说题意了,为了使A/B最大,就应该是B越小,故可以先求出n个点的最小生成树。因此,可以枚举每一条边,假设最小生成树的值是B, 而枚举的那条边长度是edge[i][j],  如果这一条边已经是属于最小生成树上的,那么最终式子的值是A/(B-edge[i][j])。如果这一条不属于最小生成树上的, 那么添加上这条边,就会有n条边,那么就会使得有了一个环,为了使得它还

2015-11-22 11:09:21 894

原创 浅谈为什么最短路径中的路径还原只能用prev前驱节点来记录

在做题过程中,想过,既然前驱节点可以记录路径,那么后继能不能呢。那么对于我这种逻辑感不强烈的人,只能动手做了。在用后继的方式后,将每个点的后继一一的输出后发现了问题,是这样的,因为在图中,可能一个点所连接的两条边都可能符合条件,比如 1->2, 1->3,2->3这样简单的一个图,如果1->2,1->3的路径都是最短的,那么在更新过程中,1的后继先是2,后来又会

2015-11-21 11:34:08 549

转载 优先队列priority_queue用法详解

优先队列是队列的一种,不过它可以按照自定义的一种方式(数据的优先级)来对队列中的数据进行动态的排序每次的push和pop操作,队列都会动态的调整,以达到我们预期的方式来存储。例如:我们常用的操作就是对数据排序,优先队列默认的是数据大的优先级高所以我们无论按照什么顺序push一堆数,最终在队列里总是top出最大的元素。用法:示例:将元素5,3,2,4,6依次push到优先队列中,

2015-11-21 10:57:34 533

原创 hdu1233 采用kruskal的最小生成树

kruskal和prim算法都有额外的东西要写,prim需要写队列容器,kruskal需要写并查集,不过kruskal易于理解,并且kruskal的对象是边,本次采用kruskal算法解决该题题目是给N个村庄和每个村庄间的距离,求其中的最小生活树注意要处理好村庄和边的数目之间的关系#include #include #include #include #include

2015-11-21 09:57:05 364

原创 hdu1102 最小生成树 特殊处理

该题是最小生成树的变形,因为给出的是任何两个点之间的距离,且其中某些路已经修理,问额外修理的路的总长是多少如果按最小生成树的算法来算,比如 ,我用的是prim算法,刚开始使用的时候,我的想法是这样,用used[]数组来储存某点是否已经用过,如果a和b点已经修过了路,则used[a]和used[b]都赋值为1,然后把两点间的距离设置为0,再把两点push到优先队列中。而这种想法是错的,因为即

2015-11-20 22:34:47 451

原创 借鉴dijstra写的prim算法

在挑战程序设计竞赛那本书上看prim代码,总感觉别扭,而我又不喜欢那种代码方式,比较喜欢dijstra采用优先队列的顺序,所以就自己写了一个用优先队列的prim算法,用于日后使用。贴代码:#include #include #include #include #include #include #include using namespace std;i

2015-11-20 21:07:46 462

原创 hdu1217 floyd

1217 floyd算法 不过算的是相乘的最大值写完后一直在纠结对不对,因为如果出现ex[i][k] ex[k][j]均为-1时,相乘即为1这样就乱套,但是交了之后过了,  说明测试数据中,并没有给出孤立的国家如果国家间利率没有联系,则赋为-1贴上代码:#include #include #include #include #include using namespa

2015-11-20 00:45:43 336

原创 hdu1142 dijstra + 记忆化搜索

题目难以理解,不过最后百度后才理解的大意,其中有一个关键的意思是,如果A到B直接相连,且从A到终点的最短路径大于从B到终点的最短路径,则该人可以从A走向B,问这样走下去,合法路径一共有多少。直接贴代码,该题让我练习了一下dijkstra和记忆化搜索,说实话,记忆化搜索对于我来说,还真是硬伤。还得没事多练习下。/*His office is numbered 1,and

2015-11-19 20:13:03 283

原创 浅谈JAVA二维数组

JAVA中二维数组的声明样式比较多,由于为初学者,所以对二维数组的理解很模糊,所以来总结下二维数组的几种声明方式(均用int来举例)1.int[][] arr = new int[3][2];这种声明方式是在栈中存储arr在堆中直接为该数组分配6个int型的存储空间,而如果输出 arr.length,则这个长度值并不是arr数组的总长度,而是ar

2015-11-19 09:17:36 419

原创 图中 构建边的方式总结(待补充)

建立边的方式不同,其所解决的问题也不同,1.      第一种建边方式为邻接矩阵,最简单的一种,这里就不说明了。2.      邻接表。该建边方式比较重要,其用法是通过一个装有MAX个vector容器的数组来实现的,比如:vector V[MAX];则V的下标即表示第几个点,比如第一个点,为V[1](也可以是V[0],这个根据自己写代码习惯决定),该容器中push_back进去

2015-11-17 23:24:46 641

原创 hdu1232 并查集

虽然是很水很水很水很水的题,但是我的目标就是把A过的题都贴在博客上,所以如果有大神看见了小人的博客,还忘轻喷。#include #include using namespace std;const int MAX_N = 1005;int par[MAX_N]; //从1开始计算int height[MAX_N];int visited[MAX_N];int

2015-11-17 22:06:05 342

原创 并查集

本文章仅供作者复习代码,不提供教程(要说教程,小的真的不会啊),所以有小伙伴勿入请火速离开,以免寻砖砍死作者造成不必要的麻烦。并查集的实现:int par[MAX_N]; //父亲int height[MAX_N];//树的高度//初始化n个元素void init(int n){ for(int i=0; i<n; i++){ par[i

2015-11-17 20:50:09 242

转载 AVL树

AVL(Adelson-Velskii and Landis)树是带有平衡条件(balance condition)的二叉查找树。这个平衡条件必须容易保持,而且必须保证树的深度是O(logN)。AVL树规定其每个结点的左子树和右子树的高度最多差1。如下图,左边的树是AVL树,右边的则不是。AVL树的每个结点(在其结点结构中)保留高度信息。可以证明,一般情况下,一棵AVL树的高度最多为1.4

2015-11-17 18:53:53 1133

转载 红黑树

转自:http://blog.csdn.net/eric491179912/article/details/6179908介绍另一种平衡二叉树:红黑树(Red Black Tree),红黑树由Rudolf Bayer于1972年发明,当时被称为平衡二叉B树(symmetric binary B-trees),1978年被Leonidas J. Guibas 和Robert Sedgew

2015-11-17 15:58:47 280

转载 priority_queue 优先队列使用方法

priority_queue调用 STL里面的 make_heap(), pop_heap(), push_heap() 算法实现,也算是堆的另外一种形式。先写一个用 STL 里面堆算法实现的与真正的STL里面的 priority_queue用法相似的priority_queue, 以加深对 priority_queue 的理解#include iostream>#in

2015-11-17 15:51:45 426

转载 c++ list, vector, map, set 区别与用法比较

List封装了链表,Vector封装了数组, list和vector得最主要的区别在于vector使用连续内存存储的,他支持[]运算符,而list是以链表形式实现的,不支持[]。Vector对于随机访问的速度很快,但是对于插入尤其是在头部插入元素速度很慢,在尾部插入速度很快。List对于随机访问速度慢得多,因为可能要遍历整个链表才能做到,但是对于插入就快的多了,不需要拷贝和移动数据,只需要

2015-11-17 15:48:38 402

原创 多重集组合数

问题描述: 有n种物品,第i种物品有ai个。从这些物品中取m个,有多少种取法,求出方案数 模上M的余数。Sample input:n = 3;m=3;a = {1,2,3};M = 10000;Sample output:6 (0+0+3,0+1+2,0+2+1,1+0+2,1+1+1,1+2+0)该题采用动态规划。 其中有一个思想让我感触很深:dp[i+1][j] := 前i种物品中取出

2015-11-17 15:35:46 475

原创 划分数

看了挑战程序设计竞赛的DP部分中的划分数问题,刚开始真是云里雾里,有些字母的写法太过于高端,以至于不能理解,经过了半小时之多的认真思考与研究,终于给搞明白了。原题大概是这样的: 有N个无区别的物品,将他们划分成不超过M组,求出划分方法数模Mod的余数1≤M≤N≤10002≤Mod≤10000 sample input: N = 4,M=3, Mod = 10000; sam

2015-11-17 15:12:32 627

原创 hdu1025 超经典最长上升子序问题

/* 2015.11.16 1025.最长上升自序问题 n(1 ≤ n ≤ 500,000) Sample Input21 22 131 22 33 1Sample OutputCase 1:My king, at most 1 road can be built.Case 2:My king, at most 2 roads ca

2015-11-16 21:01:27 323

转载 HDU分类

Hdu题目分类1001       这个就不用说了吧1002      简单的大数1003      DP经典问题,最大连续子段和1004      简单题1005      找规律(循环点)1006      感觉有点BT的题,我到现在还没过1007      经典问题,最近点对问题,用分治1008      简单题1009      贪心1010    

2015-11-16 19:12:12 636

空空如也

空空如也

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

TA关注的人

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