自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 poj 1062 昂贵的聘礼

题目大意是说有N个物品,每个物品都有自己的价格,但同时某些物品也可以由其他的(可能不止一个)替代品,这些替代品的价格比较“优惠”,问怎么样选取可以让你的花费最少来购买到物品1思路: 每个点都有一个权值,之后让你怎样经过一系列操作让第一个物品的权值最小,我们可以设一个0号节点,来存0-i这条路的权值,表示从0号物品到第i号物品的价值是v,之后i号物品可以交换的物品p的价值就是存p-i的这条路的权

2018-01-30 21:25:53 243

原创 Navigation Nightmare POJ - 1984

题意:给你n个点和m操作,每次操作都有a b d op ,表示a点在b点的op方向(有东南西北)距离为d,那么之后会有K次操作,a b c ,表示在第c次操作之前a和b之间的距离。思路:首先他说的是第c次操作之前,也就是我们没有办法直接把并查集全部的建立好,所以首先我们要把操作存起来,之后就是如何运用并查集了,首先有四个方向,东南西北,我们可以建立两个并查集一个是东西方向一个是南北方向,之后就

2018-01-20 16:47:05 449

原创 O - D-City HDU - 4496

题意:给你n个点m条边组成的图,按照顺序拆一条边,问你每次拆完还剩下多少个联通块儿。联通块儿的定义是,在联通块儿里的每一个点都能直接或者间接的相互到达。思路: 我们都知道并查集建立容易,但是拆除很难,因为在路径压缩之后只有根节点而没有父亲节点了,那我们如何拆除并查集呢?     当删除前K条边时图所剩的连通分量数 就是 N个点孤立时只添加后M-K条边时,所具有的连通分量数。看图:

2018-01-17 12:59:24 248

原创 L - Connections in Galaxy War ZOJ - 3261

题意:给你n个星球(每个星球都有一个权值)和m条路以及k条操作,其中q a 是查询,和q连接在一起的最大并且要比a的权值大的星球如果没有就输出-1,de a b 是拆掉原来a和b的联系.思路:在做这道题之前我默认你会了那到D-city的题,那么就很简单了,你只要将根节点成为当前最大值就好了,之后判断一下最大值权值是否别当前的权值大就好了,上代码吧:#include #include

2018-01-17 12:38:28 274

原创 kuangbin并查集题解分析

先分析一下这套题吧,其中A,B,C,G,L,M,N,(ps,刚刚看到szt大佬说了做题顺序,那么就按照他说的来就好了)是简单题都是并查集的简单应用,大家可以先写这几道题,其中L,G都挺有意思的 ,大家,大家要多想一下,接下来在我看来都是难题了,剩下的题还牵扯到带权的并查集的应用,这个东西需要用到向量的思想,szt大佬会给大家讲,他这个很强,剩下的题目的做题顺序我推荐的是:D,J,H,E,K,F。简

2018-01-16 12:13:15 502

原创 N - Is It A Tree? POJ - 1308

题意:给你一个图问你是不是一棵树,输入很叽歪。。。思路:如何判断一个图是不是树,那就是只有一个根节点,而且没有环对吧,这道题其实就是并查集的一个更加深层次的运用了,我们想一下原来我们怎样判断一个图里有没有环?我们只能深搜,从一个点枚举他可以到达的所有点,看他之后能不能又回到他本身对吧,这种时间复杂度简直爆炸。。而并查集就可以超级超级完美的解决这个问题了,想想如果a和b本身就在一棵树上了,那么在

2018-01-16 11:53:27 300

原创 Rochambeau POJ - 2912

题意:给你n个人m次操作,他们玩石头剪刀布,他们每次出的都是一样的,要是出剪刀就永远出剪刀,要是出布就永远出布,但其中有一个人不一样,他可以随便出问你能不能找出这样一个人思路:做过食物链的在做这道题会比较简单了,都是三个关系,怎么合并怎么查找都是一样的,问题就在于如果找到这个人?也很简单,我们枚举每个人a,在这些关系中把和a有关的全部都删掉的,而其他关系没有矛盾,那么这个a就是我们要找的人。其

2018-01-16 11:44:51 389

原创 A Bug's Life POJ - 2492

题意:给你一个T表示T组数据,之后一个n,m表示n个人,m组关系,m组关系式这样的 a b 表示 a和b可以xxoo(没错就是你们想的那个xxoo),之后问你有没有发现性取向不正常的那种人(捂脸。。。)思路:带权并查集。。代码:#include #include #include const int maxn = 2200;using namespace std;int p[ma

2018-01-16 11:39:21 202

原创 Parity game POJ - 1733

题意:给你一个n,表示有一串长为n的由0和1组成的串,之后给你m次操作 a b op ,其中op表示是even 表示a到b的和是偶数,o表示的是奇数,现在问你在第几次操作的时候你发现他和之前矛盾。前置技能:讲道理知道题的所有做法和公式都和之前的带权并查集一样,手推出如何压缩路径,如何合并,如何查找矛盾这题就可解了,唯一不同的是,这道题的区间有1到1000000000,需要离散化,我在这里讲一下

2018-01-16 11:33:43 288

原创 Supermarket POJ - 1456

题意:你现在有n个产品,每个产品有他的利润和他的保质期,在保质期以内将东西卖出就能够得到产品的利润,问你最大利润是多少(卖一个产品需要一天时间)思路:看题就知道是贪心,我们按照利润大小的排序,之后先拿利润大的,如果当前天已经被占用,那么我们就一直往前推,直到遇到一个没有用过的天数把当前最大的卖掉就好了,先上贪心代码之后再讲这种东西怎么和并查集搞到一起了。#include #include

2018-01-16 11:19:46 241

原创 食物链 POJ - 1182

题意:中文题意开心。前置技能点:在你写这道题之前我已经默认你已经会写简单的带权并查集了,并且也已经完美ac上一道D题了。已经比较理解Rank数组的更新和合并了。思路:首先分析这道题,我们会得到三种关系,同类,被吃,和吃,他们的关系式这样的:a 吃 b ,b 吃 c ,c 吃 a,那么我们怎样把他转化成Rank数组上对应的值呢?要讲的话废话太多还是上图吧我们可以看

2018-01-16 11:02:51 417

原创 How Many Answers Are Wrong HDU - 3038

题意:给出区间[1,n],下面有m组数据,l r v区间[l,r]之和为v,每输入一组数据,判断此组条件是否与前面冲突 ,最后输出与前面冲突的数据的个数.比如 [1 5]区间和为100 然后后面给出区间[1,2]的和为 200 那肯定就是有问题的了。思路:这是一道带权并查集的模板题,你如果想要ac这道题你需要点的前置技能点是:最基本的向量加减,还有就是看我之后写的一篇讲解博客就好了

2018-01-16 10:42:08 242

原创 The Suspects POJ - 1611

题意:不想编故事了。。题意就是问你和0在同一个集合里的数有多少个,算了,就是题意就是,某地爆发病毒,现在有n个人,m个团体,每个团体有k个人,其中0号是感染者,和感染者在一个团体的人都会被感染,之后被感染者出现在其他团体之后也会感染其他团体的人,问你现在又多少人被感染。思路:就是合并之后查找0这个集合里有多少人吗,比较有新意的是输入方式,在合并团体的时候,你需要先输入一个数之后和k-1个数合并

2018-01-16 10:33:56 190

原创 Wireless Network POJ - 2236

题意:给你n台电脑的坐标,一个距离d,这个d的意思是如果两台电脑的距离小于等于d,那么他们可以连接在一起,其中a连b,b连c,那么c可以连a,起初这几台电脑都是坏的,之后给你一组操作,O a,表示修复a这台电脑(它可以和其他好的且距离小于d的电脑连接),S a b 是询问a和b这两台电脑是不是连接在一起,如果是输出成功,如果不是输出失败思路:分析一下这道题,那就是我们现在有一堆电脑,在修复电脑a的

2018-01-16 10:24:59 233

原创 Phalanx HDU - 2859

题意:给你一个矩阵,只由小写或大写字母构成。求出它的最大对称子矩阵的边长。其中对称矩阵是一个k*k的矩阵,它的元素关于从左下角到右上角的对角线对称。 例如下面这个3* 3的矩阵是对称矩阵: cbx cpb zcc思路:dp[i][j] 表明的是你在第i行第j列的时候的最大对称矩阵,那么dp[i][j]可以在满足条件的情况下转移到dp[i-1][j+1]的状态上来

2018-01-05 15:57:56 288

原创 Milking Time POJ - 3616 (简单dp)

题意:现在总共有n小时,有m个时间段,之后每个时间段有开始时间和结束时间以及这一段时间内的价值,在完成一个时间段之后,你必须休息r分钟,而且时间段不能从中间开始(???),现在让你求出最大的价值思路:就是按照开始时间排序,之后最长上升子序列。。。#include #include #include const int maxn = 1000+10;using namespace s

2018-01-03 15:32:46 288

原创 FatMouse and Cheese HDU - 1078 (记忆化搜索)

题意: 一个老鼠每次只能走k步,每次走到的格子必须比他的上一个格子大,之后每次可以获得这个格子的权值,问你可以获得的权值的最大值思路:记忆化搜索就好了。。。#include #include #include using namespace std;int dir[4][2] = {1,0,-1,0,0,-1,0,1};int vis[111][111],a[111][111];

2018-01-03 10:43:21 106

原创 Treats for the Cows POJ - 3186 (区间dp)

题意:  给你一组序列,你每次只能取序列的头或者尾,你取序列所得到的权值的定义是:a[i]*j,其中j表明的是你是第几次取得这个值,现在让你将这个序列取完之后得到得权值最大。思路:这是我所写的第一道区间dp得题,dp[i][j]表明的是 ,我是第i次取队首,第j次取队尾所得到的最大值,那么 dp[i][j] = max(dp[i-1][j]+a[i]*(i+j),dp[i][j-1]+a[n-

2018-01-03 10:06:26 136

空空如也

空空如也

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

TA关注的人

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