自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 资源 (1)
  • 问答 (3)
  • 收藏
  • 关注

原创 1688 Sightseeing(最短路+次短路+计数)

题意:找出从S到F两个点之间的最短路和比最短路长1的次短路的条数之和。分析:最短路很好求,关键是次短路,郁闷呀不过,如果对最短路的更新距离的过程有更深的认识的话,就好办很多了。用一个二维数组记录每一个节点距离起始点的最短距离和次短距离,再开一个二维数组记录路径数更新状态时: 1)新值小于最短路径长:更新最短路径长,计数;次短路径长,计数2)新值等于最短路径长:更新最短路径计

2015-08-27 15:49:06 594

原创 HDU 1596 find the safest road(最短路变形)

把到起点的距离初始化为0,起点到起点的初始化为1.把dijstra里的加号改成乘号就OK了。最后再加一句,水题。#include#include#includeusing namespace std;const int maxn=1005,inf=1<<29;int n,m,s,e;int vis[maxn];double d[maxn];double Map[maxn][

2015-08-27 15:30:16 352

原创 HDU 1595 find the longest of the shortest (最短路+记录路径+枚举删边)

本题大意是这样,假设图中某条路径被堵死,它的最坏情况下的最短路径是多少?基本算法就是先求出最短路径,然后假设最短路径中的某一条边被堵死,再求最短路,取这些最短路的最大值即可。算法证明很简单,略。。。需要注意的是,当求最大值时,很有可能会WA,因为求最短法中,dis[N]可能=INF,代表不连通,如果去掉某一条边导致1和N不连通,应不予考虑。样例2提示了我这一点。。。不过最后因为一个小失误还是WA了

2015-08-27 15:24:46 336

原创 HDU 1572 下沙小面的(2) (DFS)

然后这道题可以用DFS暴力#includeusing namespace std;const int maxn=35;int vis[maxn],n,k,Map[maxn][maxn],num[maxn],mark[maxn],cnt;int ans;void dfs(int d,int now,int dist){ if(d==cnt) { ans

2015-08-27 15:20:32 440

原创 HDU 1548 A strange lift (简单最短路或BFS)

题意:电梯每层有一个不同的数字,例如第n层有个数字k,那么这一层只能上k层或下k层,但是不能低于一层或高于n层,给定起点与终点,要求出最少要按几次键思路:一开始的想法是搜索,而且搜索也是可行的,不过既然这道题出在了最短路的专题里面,自然也要尝试下最短路的做法,要注意的是,这道题是单向边,我们只要让map里面的值全部为1就可以统计次数了 首先是最短路的Dijkstra#include#

2015-08-27 15:17:04 407

原创 HDU 1535 Invitation Cards (最短路 建正反图)

题意:从起点1出发,每个车站安排一个人,然后所有人要从终点回来,问最小花费,是有向图。思路就是建正图和反图但是值得一提的是用G++交会MLE。C++交才会AC,你懂得,杭电时常会来大姨妈。。。用Dijstra和SPFA各种姿势都能AC大家喜欢的Dijstra+堆优化算法来啦#include#include#include#include#define LL long

2015-08-27 15:12:25 294

原创 HDU 1248 漫步校园 (优先队列+BFS求最短路+记忆化搜索)

这题咋一看跟A Walk Through the Forest,这道题差不多。然后就开始想求最短路,到底是用dijstra算法还是spfa算法呢。想破了脑袋都想不出,主要是建图的问题,算法倒不是问题,后面灵光一闪,这种问题我不是可以用BFS+优先队列求最短路的么。。。这才是正解,果断立马AC#include#include#include#define LL long longus

2015-08-27 15:03:49 401

原创 HDU 1385 Minimum Transport Cost(folyd+记录路径)

题意:先给你一张你n * n的图,代表城市间的距离,然后,给出n个tax的费用,然后很多询问,问你a到b的最少费用。。。。并且打印路径(字典序)。。。注意tax的费用起点和终点不算。。。。。开始是算吧起点和终点的费用都算上,最后减掉,这样是不能得到最少费用的。。。。后来想到在三重for里+上tax的费用。。。。就觉得这题完全是为了深刻理解Floyd而出的然后到打印路径,用path[i]

2015-08-27 14:57:48 293

原创 HDU 1217 Arbitrage(folyd算法)

题意:给几个国家,然后给这些国家之间的汇率。判断能否通过这些汇率差进行套利交易。Floyd的算法可以求出任意两点间的最短路径,最后比较本国与本国的汇率差,如果大于1,则可以。否则不可以。最短路径,Floyd的算法原理:Floyd-Warshall算法的原理是动态规划。设D(i,j,k)为从i到j的只以集合中的k节点为中间节点的最短路径的长度。若最短路径经过点k,则;D(i,j,

2015-08-27 14:43:50 663

原创 HDU 1142 欢迎参加——每周六晚的BestCoder(有米!) A Walk Through the Forest

题目链接:HDU 1142题目大意:寻找一共有多少条符合题意的路。能够从点A走到点B的要求是:点A到终点的最短路 > 点B到终点的最短路。 也就是说:从终点出发,求每一个点的最短路,然后那些最短路的值记录起来,作为能否通过的判断条件。最后用记忆化搜索来搜索出一共多少条符合要求的路。普通的dfs是超时的,bfs是超内存的。最短路的话用dijstra或SPFA算法随便搞。用dijstra速

2015-08-27 14:33:30 327

原创 最小生成树模板

邻接矩阵建图+prim朴素算法 代码通过HDU1102#includeusing namespace std;const int maxn=105,inf=1<<30;int Map[maxn][maxn],vis[maxn],d[maxn];int n,q,ans;int prim(){ fill(vis,vis+maxn,0);//初始化每个点都未被加入到答案集合中

2015-08-26 15:11:03 953 1

原创 HDU 4081(次小生成树)

次小生成树模板题#include #include #include #include #define maxn 1002#define maxm (maxn * maxn) >> 1using namespace std;struct Node{ int u, v; double dist;} E[maxm]; //存储边struct Node2{ int x

2015-08-25 16:10:23 354

原创 HDU 2489 Minimal Ratio Tree(枚举组合+最小生成树)

2008年北京现场赛真题没什么好说的,套两个板,一个枚举组合的板,一个最小生成树的板。就OK了#include#include#include#include#include#include#include#include#include#define INF 99999999using namespace std;const int MAX=15+5;int e

2015-08-25 16:05:34 290

原创 HDU 1863 畅通工程(最小生成树模板题)

kruskal,prim随便搞#include#includeconst int L=100005;struct node{int s,y,w;}edge[L];int Fa[L],n,m;void init()//初始化并查集{ for(int i=0;i<=n;i++) Fa[i]=i;}int Find(int x)//查询属于哪个集合,并直接拜“祖宗”为师{

2015-08-25 16:01:51 829

原创 HDU 1598(并查集 kruskal思想)

kurskal的思想#include#includeusing namespace std;const int maxn=100005;struct node { int from,to,len;}a[maxn];int fa[maxn];int Find(int x){ if(x==fa[x]) return x; return fa[x]=Find(fa[x]

2015-08-25 15:57:03 445

原创 HDU 2473 ( Junk-Mail Filter ) (并查集删除操作)

原本并查集是不支持删除操作的。但是我们可以开动脑筋实现这个功能,就是用一个辅助数组,因为fa数组万万是不能动它的。对着代码好好体会一下吧。#includeconst int maxn=2000005;int fa[maxn],t[maxn],n,m,cnt,Hash[maxn];int Find(int x){ if(x==fa[x]) return x; return

2015-08-25 15:26:50 319

原创 HDU 1856 More is better (并查集模板题)

统计各个集合元素个数,水、、、#include#include#includeusing namespace std;const int maxn=10000005;int Fa[maxn],n,ans[maxn];void init(){ for(int i=0;i<maxn;i++) Fa[i]=i,ans[i]=1;}int Find(int x){

2015-08-25 15:23:31 289

原创 HDU 1325 Is It A Tree?(并查集简单题)

题目链接并查集简单题,利用并查集来判断无向图的环#includeusing namespace std;const int maxn=1005;int fa[maxn],in[maxn],out[maxn],vis[maxn];int Find(int x){ if(fa[x]==x) return x; return fa[x]=Find(fa[x]);}v

2015-08-25 15:20:59 294

原创 HDU 2665 Kth number(区间第K大)

题目链接归并树模板#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#define LL long long#define lson l,m,rt<<1#define

2015-08-14 15:33:58 466

原创 HDU 1305 Immediate Decodability(与1671类似)

题意:在多个字符串里寻找,若他们至少有一个串是另一个串的前缀,则按题目要求输出思路:建立字典树,因为只有0 1两数,数组开2大就行,判断是前缀的方法:每次插入一个字符串,在字典树中查询,若当到达已经存在了的字符串,即cur->cnt==1 ,也就是插入字符串的前缀,或者在字典树中能够找到插入的字符串#include#include#include#include#include#

2015-08-14 10:37:43 298

原创 HDU 4099 Revenge of Fibonacci(大数加法+字典树)

题意:给出斐波那契数列的前k位,k不超过40,找出最小的正整数n,满足F(n)的前k位与给定数的前k位相同,斐波那契数列的项数不超过100000。 解析:本题可以分为两步:第一步就是预处理出100000项斐波那契数列的前40位,插入到字典树中。第二步就是查询匹配求最小的n。对于第一步,我们可以把斐波那契数列精确到50多位,然后只存40位即可,这样就防止进位的误差。在斐波那契数列

2015-08-14 10:35:59 324

原创 HDU 4287 Intelligent IME (map水题或字典树+DFS)

题目大意:手机键盘中与数字2相对应的字母有a,b,c;3相对应的字母有d,e,f。给出一些数字串如34,和一些小写字母串。求小写字母对应的数字串出现的次数。字符串abc对应的数字串是111,dh对应的数字串是34。则小写字符串中111出现一次,34出现一次。程序中也用到简单的hash映射。#include#include#include#include#define LL

2015-08-14 10:30:18 594

原创 HDU 1671 Phone List(字典树寻找前缀)

题目意思很清楚:就是判断输入的电话号码中是否有号码是其他号码的前缀,很显然要用到字典树。根据分析可知:  如果字符串Xn=X1X2....Xn是字符串Ym=Y1Y2....Ym的前缀,有在插入的时候有两种情况:Xn在Yn之前插入,Xn在Yn之后插入。  1)如果Xn在Yn之前插入,那么在插入Yn的时候必然经过Xn的路径,此时可以根据判断在这条路径上是否已经有结点被标记已经构成完成的字符串序

2015-08-14 10:28:30 319

原创 HDU 1800 Flying to the Mars(字典树水题)

题意:士兵要学骑扫帚。每个士兵有一个level,level高的能在同一把扫帚上教level低的怎么骑。一个人最多有一个老师,一个学生。也可以没有。给n个士兵的level值,问最少需要多少扫帚。mark:显然就是找出现次数最多的数字的次数。但因为数字长度多达30个字符,因此long long都存不下,用字符串。wa了一次,忘记处理前导0。AC代码:#include#incl

2015-08-14 10:26:08 315

原创 HDU 1075 What Are You Talking About(字典树模板题)

题目链接问题:输入一段英文,对照给的单词的映射,输出映射后的字符串思路:这是字典树水题,只要对插入字典书中的单词标号,然后再根据标号的单词去找相对应的单词就好..............最需要注意的是,hello插入字典树后,如果查找hell应该是返回0的。这里需要对单词末尾进行标记................AC代码如下:#include#include#in

2015-08-14 10:23:08 348

原创 HDU 2846 Repository(字典树变形题)

题目链接大意:给定你一些商品的信息save(字符串),然后输入需要查询的字符串str,如果存在一个字符串save使得str是save的子串。 思路:字典树的变形,如存在"abcd",则"bcd", "cd", "d",都需要插入字典树中。如果存在"abab"的话,有可能"ab"会重复计数,所以需要一个特定的序列号来区分是否是同一序列中的子串。我们可以定义一个value,若val

2015-08-14 10:20:13 440

原创 HDU 1247 Hat’s Words(字典树简单应用)

题目链接题意很清楚:就是给出若干个单词,找出其中能够由其它两个单词连接组合而成的单词。比如上面sample中的"ahat"能够由"a"和"hat"拼凑而成,"hatword"="hat"+"word".只要将这些字符串插入到字典树中去,并设置结束标记,并用字符串数组保存起来。然后再依次把每个字符串放到字典树中查询即可。AC代码如下:#include#includeusing n

2015-08-14 10:17:55 402

原创 HDU 5349 MZL's simple problem(平衡树 树堆)

HDU 5349#include#include#include#include#include#include#includeusing namespace std;struct Node{ Node* son[2]; int rank; int size; int key; bool operator<(const Node &

2015-08-13 11:13:28 279

原创 HDU 4585 Shaolin(treap模板题)

题目链接此题可以用map水过当然也可以用平衡树,平衡树首选treapAC代码如下#include#include#include#include#include#includeusing namespace std;struct Node{ Node* son[2]; int rank; int size; int key;

2015-08-12 16:02:34 376

原创 HDU 5249 KPI(treap 树堆 )

2015年百度之星程序设计大赛 - 初赛(1)验treap模板的题AC代码如下:#include#include#include#include#include#include#includeusing namespace std;struct Node{ Node* son[2]; int rank; int size; int

2015-08-12 15:55:17 597

原创 1003 图片

2015-08-10 14:21:44 311

原创 HDU 3308 LCIS(线段树区间合并 单点更新)

#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#define LL long long#define lson l,m,rt<<1#define rson m+1,r,rt

2015-08-10 10:04:29 459

原创 九度OJ 题目1496:数列区间 (线段树 区间合并 +成段更新)

题目链接线段树 区间合并 成段更新题,什么鬼,模拟它,不断地成段更新,最后好不容易调试出来了,发现TLE,而且只超了80ms,什么鬼!!!然后小小地优化了一下,如果前面的一些区间被最后的一个区间完全覆盖的话,就没必要更新它。小小的优化了一下,就过了,是飘过。。。。前前后后搞了3个小时吧。#include #include #include #include usin

2015-08-09 21:22:55 366

原创 HDU 1540 Tunnel Warfare(线段树 区间合并 +单点更新)

/*题意:先给定一段区间,都是可用的,然后给出一些操作,有恢复的,有毁坏的,有查询的,查询包含那个点的最长区间题目分类 线段树 单点更新 区间合并*/#include#include#include#include#include#include#include#include#include#include#include#include#include#in

2015-08-09 10:43:40 360

杭州电子科技大学ACM模板库

杭州电子科技大学ACM模板库

2014-03-23

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

TA关注的人

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