自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Anxdada -- 我等风来也等你

此博客不会维护了

  • 博客(82)
  • 收藏
  • 关注

原创 HDU 4751 Divide Groups 【判定二分图】

传送门 // 题意: 给定n个人之间的单方面认识关系, 要求把这n个人分到两个集合中, 要求同一集合中的人必须相互认识, 问是否可以做到.// 思路: 很明显的, 这就是判定二分图, 先建图, 只要两个人之间相互认识, 他们之间就没有边, 否则就有边, 然后判定这个图是不是二分图就行啦. 判定二分图就是用染色法, 左边染1, 右边染2. 遇到要染的颜色和该点的颜色不同时就不是二分图了,

2018-01-31 20:32:58 331

原创 POJ 2377 Bad Cowtractors 【最大生成树】

传送门 // 题意: 给定一幅无向图, 求最大生成树.// 思路: 事实证明prim和kruskal算法求小的反过来求大的即可!这里用的kruskal, 从大到小排序. AC Codeconst int maxn = 1e3 + 5;const int maxm = 1e5 +5;int cas=1;struct node { int u, v, w; bool opera

2018-01-31 19:41:36 271

原创 NYOJ 237 游戏高手的烦恼 【经典的二分图最大匹配】

传送门 这道题是二分图中很经典的问题了. 做了很多遍了, 。 // 题意: n*n的矩阵上有k个敌人, 一颗子弹可以打掉一行或一列的敌人, 问消灭所有敌人最少需要多少颗子弹。// 直接建图, 如果(i, j)上有一个敌人, 那么连一条i -> j的边即可. 然后求该图的最大匹配就行.注: 感觉这道题卡vector, 950ms飘过, 可能换邻接表会快一点.AC Codecons

2018-01-31 18:31:05 322

原创 NYOJ 203 三国志 【最短路 + 01背包】

传送门 // 题意: 这道题和HDU 3339很类似, 就是每一个城市有一个价值, 每一个城市必须排一个人去才能获得该价值的珠宝, 这个人一个单位距离要消耗一个(石)粮食, 现在他手里有s(石)粮食, 问最多获得多少的珠宝. 所有人都从0号城市出发.// 思路: 很明显要走最短路, 其次是对于一个城市我们可以选择去或者不去, 那么就是经典的01背包问题了, 我们首先求出0到其他所有城市的最短...

2018-01-31 18:00:11 334

原创 HDU 2833 WuKong 【floyd最短路 + dp】

传送门 // 题意: 给定一幅无向图(n, m), 给定两对起点和终点, 问这两对起终点的最短路上最多可以重合多少个点. (也就是最多可以经过多少个相同的点), // 很明显的经过的相同点必是连续的, 我们设dp[i][j] 表示 i 到 j的最短路径上的点数, 然后我们怎么更新这个值了, 那就是我们在做floyd的时候, 当一条边可以被松弛的时候, dp[i][j] = dp[i][k] +

2018-01-31 17:13:37 315

原创 HDU 3631 Shortest Path 【floyd的深层理解】

传送门 // 题意: 给定一幅有向图, 有两种操作, 0 代表标记某点, 1 代表求两点的最短距离, 但是求的最短距离有一定的限制, 就是这两点的最短距离经过的点必须是被标记过的. 若不行, 则这两点就是不能到达.// 思路 : 很明显的是, 每次标记一个新的点时我们需要更新之前被标记过的点任意两点之间的最短距离, 那么folyd就是最好的办法, 我们想floyd的运行机制, 每次用一个点去判断是

2018-01-31 16:55:50 255

原创 HDU 4460 Friend Chains 【最短路(bfs优化)】

传送门 // 题意: 给定n个人的名字以及他们的m个关系, 任意两个人的距离为他们人数最少的关系链中-1, 然后问这幅图中最长的距离是多少.// 思路: 很明显是求任意两点之间的最短路最长是多少., 但是floyd(O(^3))会T. 跑n次优化的dij(O(n^2logn))也会T, 然后我们可以发现他们的边长都为1, 所以我们用bfs来跑最短路, 这样的复杂度只有O(n^2), 因为bfs跑最

2018-01-31 16:48:18 498

原创 HDU 4571 Travel in time 【最短路 + dfs记忆化||dp】好题!!!

传送门 // 题意: 给定一幅无向图(n, m), 每个点有个时间花和价值, 任意点之间也有路径花费, 你经过的每一个点你可以选择访问它, 消耗该点的时间花费, 然后得到它的价值. 给定起点和终点(必须经过但是可以不访问), 问可以得到的最大的价值是多少.// 思路: 很明显的每一个点我们可以选择访问或者不访问, 那么就是01背包问题, 也就是dp, 我用的dfs来实现的该dp过程. 但是一定要记

2018-01-30 23:10:03 303

原创 HDU 2807 The Shortest Path 【最短路 + 快速判断矩阵是否相等】

传送门 // 题意: 给定n个m*m的矩阵, 如果A*B == C矩阵, 那么A -> C 有一条长度为1 的边. 最后给出q次询问, 每次询问两个矩阵的最短距离.// 思路: 很明显我们首先需要先把矩阵先存下来, 然后n^3方建图, 然后我们知道矩阵相乘是n^3的,然后判断两个矩阵是否相等是n^2的, 一共就是n^5的,完全会爆炸. 所以这样肯定不行. 所以我们首先要对矩阵进行hash降维判断.

2018-01-29 17:15:43 319

原创 HDU 2145 zz's Mysterious Present 【多源单汇 + 反向建图最短路转换】

传送门 这道题和hdu2680几乎一样. // 题意: 就是给定一幅有向图(n, k), 有m个人, 给出终点ed. 给出那m个人所在的城市编号和他们行驶速度, 问最小到ed的是哪个编号, 如果时间相等取距离终点远的那个点, 再相等取编号大的那个人.// 思路: 很明显的反向建图, 以终点做起点跑最短路, 然后扫一遍比较他们的时间和距离就行啦~注意: 题中说for each case , 所以是

2018-01-29 16:47:57 332

原创 HDU 1598 find the most comfortable road 【暴力枚举 + 并查集】

传送门 // 题意: 给定一个无向图(n, m),每条路上面有边权, 每次询问一个起点和终点, 问从起点到终点所有路径中该条路径中边权最大的和最小的差值最小是多少.// 思路: 比较明显的是求最小和最大并且st - ed 联通. 那么首先有并查集, 其次就是我们选择的这两条边还必须是在同一条路径上的, 然而我们按边升序排序后并不能很好的保证该点, 但是我们我们可以知道如果我们枚举的这两条边不是在

2018-01-29 13:48:08 288

原创 HDU 2363 Cycling 【暴力枚举 + 最短路】

传送门 // 题意:给定一个无向图(n, m)然后每个点有一个海拔高度, 问从1 - n中”起伏高度最小的”最短路径是多少. 起伏高度最小表示我们选择的这条路径中海拔高度最高的和最低的差值要最小.// 思路: 很明显的一个思路就是二分该差值, 然后跑最短路验证, 但是有一个问题就是我们无法确定该条路上的选择了那些点, 从而在跑最短路时无法排除一些不符合条件的点. 所以就不行. 那么由于数据较小,

2018-01-29 13:39:16 363

原创 HDU 2680 【多源单汇 + 反向建图最短路转化】

传送门 // 题意: 给定一个有向图(n, m), 和一个终点, 再给定一些起点, 问从这些起点的某一个到这个终点的最短路径是多少. // 思路: 很明显的就是多源单汇, 那么我们直接反向建图, 以终点为起点跑, 然后就又变成了单源多汇了, 从中选一个最小的即可.AC Codeconst int maxn = 1e3+5;int cas=1;int cnt, head[max

2018-01-29 13:31:15 254

原创 HDU 1839 Delay Constrained Maximum Capacity Path 【二分 + 最短路】

传送门 // 题意: 一个无向图(n, m),然后除了边权时间还有一个容量, 问从1 - n在不超过给定的一个时间内最多能运多少的矿物.// 思路: 我在上一篇博客中说过, 像这种求某边上的某个关键字最小最大问题一定是二分, 所以我们直接二分该ans, 然后跑最短路验证即可.AC Codeconst int maxn = 1e4+5;int cas=1;int cnt, head[maxn];

2018-01-29 13:26:22 249

原创 HDU 2962 Trucking 【二分 + 最短路】

传送门 // 题意: 给定(n, m)无向图, 每条路上面除了边权还有一个高度, 如果高度为-1那么说明这个无限高. 然后给定一个起点和终点和一个限制高度, 问从起点到终点不超过限制高度的最高高度是多少, 并输出在此高度下的最短路径是多少, 如果不能到达就输出”不能到达”. // 思路: 很明显的, 每条路上面除了一个边权值还有一个关键字是高度, 那么像这种要求每条边上的某个关键字最大或最小或多少

2018-01-29 13:21:11 273

原创 HDu 3339 In Action 【最短路 + 背包】好题!!!

传送门 // 题意: 每个点有一个电量值, 任意两点之间有一个距离, 每次从0出发到其他点的消耗的油量为到该点的距离, 到了该点后就可以摧毁该点, 注意是每到一个点都要重新从0号点出发, 问至少摧毁总电量的一般至少花费多少的油量. // 思路: 注意是每新到一个点都是重新从0号点出发的, 所以在一条路上的点不存在依赖关系, 所以这个问题就比较明显了, 首先最少, 肯定是到这个点的最短路, 可以先预

2018-01-29 13:12:19 296

原创 HDU 2377 Bus Pass 【bfs找最最短路】

传送门 // 题意: 给定一些城市之间的相邻关系, 然后给定一些必经城市, 让你选择一个中心点使得它到所有的必经城市的最远的距离最小. 输出这个距离和城市编号. 如果有多解请输出编号最小的那个.// 思路: 我们大致算一下点和边的个数, 发现我们可以直接对每一个必经城市进行bfs, 然后每访问到一个点就更新它的距离, 取max, 最后从小遍历下每一个点, 从中取最小的那个出来就行啦~AC Code

2018-01-29 13:00:55 340

原创 HDU 1385 Minimum Transport Cost 【最短路 + 最小字典序路径输出】

传送门 // 题意: 给定一个矩阵表示点与边的关系, 有向边, 并且每个点有税收, 起点和终点不收税. 然后给出一系列的询问, st 到 ed的最短路是多少, 并且要输出该路径, 特别注意就是如果有同样的答案的最短路, 输出字典序最小的那条. // 思路: 首先还是最短路, 那么注意几个问题, 一是在结构体中加string name, 不能单纯的以前面那个点来排, 因为有可能小的在前面, 所以我们

2018-01-26 16:42:32 343

原创 HDU 3191 How Many Paths Are There 【次短路计数】

传送门 // 题意: 求次短路径的条数. // 思路: 几乎和HDU1688一模一样所以解题步骤我就不说了, 愿意看的请看我上一篇博客, 就只有一个莫名的坑点就是结构体排序中如果值相等那么应该序号小的在前面. 这个我也不知道为什么呀, 我也是看的网上博客说的这个坑点, 求路过的大神给我指点一二……..AC Codeconst int maxn = 50 + 5;int cas = 1;stru

2018-01-26 15:29:14 343

原创 ZOJ 3175 Number of Containers 【数学图像性质(一个常见算式的经典计算)】

传送门 // 按照题意出发我们可以很容易的推导出最后求 (n/1 + n/2 + …. + n/n) - n. // 可以记一下这个算式的特征, 因为这个还是比较经典的, 后面可能会遇到的. 那么如何求了,暴力肯定不行, 又是一个调和级数无通项, 所以只有从函数图像入手, y = n / x , 可以发现这幅图是关于x = y 对称的, 所以我们只需要算一遍√n的ans, 然...

2018-01-26 10:30:17 395

原创 POJ 2271 HTML 【模拟题】

传送门 // 按照题意模拟就是了.说几个坑点. 1: 每一行的末尾不能有空格 2: hr之前的换行要特别注意什么情况, 比如开头就是hr 不换行等. 3: 每次输出word时注意长度大于80了, 算长度是注意加上空格的长度. 4: 最后还要出一个空行.像这类模拟题, 用string是最方便的, 即读一个输出一个. 记住了!!!AC Codestring hr = "-----------

2018-01-26 10:25:50 309

原创 Gym-100935G Board Game 【dfs】

// 题意: 一个4*4的格子上少了9个数字, 要用功1-16中在原先格子上没有出现的数字进行添, 要求每一行以及每一列相加是一个定值, 最后输出字典序小的那个方案.// 思路: 定值肯定就是34了, 然后这种题一看就是dfs出所有解取最优的那个, 因为字典序要最小, 首先我们要从小到大枚举, 其次是每一个要添的数字我们要判断是否满足34这个条件, 然后dfs出结果就行啦.AC Codeint an

2018-01-26 10:21:28 306

原创 HDU 3768 Shopping 【最短路好题!!! + 离散化跑最短路 + 暴力枚举】

传送门 // 题题: 给定一个无向图(n, m) , 和 s 个必经点, 问从起点1出发必经给s个点后再回到1的路径之和最小是多少.// 思路: 这道题和我之前做的一道题很像, 所以我做这道题的时候几乎是秒做吧……xixi 我们首先有一个想法就是一定是这s个点先相互到达, 然后在从中选择两个到1最短距离加上就行啦. 然后可以注意到s只有10, 那么我们直接跑10次dij(优化的), 统计出该1

2018-01-26 10:15:15 368

原创 POJ 2240 or HDU 1217 Arbitrage 【spfa判环】

传送门 // 题意: 给定一些货币的汇率, 然后问是否有可能同一种货币在转换后有赚的. (如题目所说.)// 思路: 很明显首先要有一个环, 注意是有向图, 然后我们可以发现对于环上一个点设置为1然后乘以该环上的边最后如果大于1那么就有赚的, 也就是我们需要找环并且算出每一个起点乘以边后是否大于1, 我用的spfa判环(floyd也是可以过这道题的.) 每次用一个起点去更新最短路, 只是不在

2018-01-26 10:04:47 237

原创 HDU 2433 Travel 【最短路径树思想】

传送门 // 题意: 给定一个无向图(n, m) , 边长为1, 一次删掉每一条边, 问每次删掉一条边后的任意两点之间的最短路之和是多少, 不联通了输出INF.// 思路: 最明显的做法就是暴力 , 每次删掉一条边, 然后暴力每一个点跑一遍BFS, 复杂度为O(n*m*m), 明显会T, 所以不行. 我们引进一个叫做最短路径树的思想, 我们可以发现有一些边删去后并不会影响第一次计算的答案. 所以我

2018-01-26 09:57:59 222

原创 ZOJ 1610 Count the Colors 【线段树区间更新 + 节点为区间】

传送门 // 题意: 定义一种新的数字加humble数字, 它的素因子只有2,3,5,7. 问你n个humble数字是多少.// 思路: 这道题和寻找丑数很像. 就只是多了一个因子7. 但是套路还是不变的. 因为后面的每一个数都是前面的某个数*2, *3, *5, *7得出的. 还是预处理出所有的humble数字, 用一个优先值为小的优先队列来预处理, 有一个问题就是有重复值, 那么每次取出来的

2018-01-26 09:07:05 291

原创 POj 2249 Binomial Showdown 【组合数学】

传送门 // 题意: 就是求C(n, k).// 思路: 当然就无脑的方法就是直接暴力求阶层, 但是这个控制不好边界. 所以我们要换一种思路. 首先用组合数的特点C(n, m) = C(n, n - m). 把较小的后面那个求出来, 然后边乘边除这样既不会越界速度也很快. (具体原理我也不是太懂, 我试了几个发现都可以整除, 然后就A了……)AC Codevoid solve(){ l

2018-01-25 15:39:48 273

原创 POJ 1797 Heavy Transportation and POJ - 2253 Frogger【边权最大问题】

POJ1797 传送门 // 题意: 求1 到 n 的可能路径中边权最大的那个边权值. // 思路: 这道题像是poj2263的加强版, 点由1000, 这次跑floyd肯定是不行的. 所以我们用并查集的方法. 并查集这个方法就很好啦~. 我们把边的信息按从大到小的排个序, 然后从大到小的选边并把他们并起来, 如果在某次并的过程中, 我们可以发现1 和 n 已经并在一起了, 那么此时的边

2018-01-25 15:32:53 231

原创 POJ 2263 Heavy Cargo 【最小瓶颈路相关】

传送门 // 题意: 给定一个无向图(n, m),在给定一个起点和终点, 问地点和终点中可能路径中的最大的那条边的权值是多少.// 思路: 这个问题还是比较经典, 很多题都要这个问题, 那么我们看这个数据范围, 200,可以跑floyd, 得出任意两点之间的距离的最大的边, 就是对floyd进行一些小的膜改. 首先初始化矩阵是我们应该同一点初始化为inf, 不同点初始化为0, 然后0代表不能到达,

2018-01-25 15:24:20 300

原创 为什么我看不到我的分界线了~~~

喵喵喵~~~

2018-01-25 13:18:45 786

原创 为什么我看不到我的分界线了~~~

喵喵喵~~·~

2018-01-25 13:18:25 284

原创 为什么我看不到我的分界线了~~~

喵喵喵~~~

2018-01-25 13:18:00 1150

原创 为什么我看不到我的分界线了~~~

喵喵喵~~~

2018-01-25 13:17:34 291

原创 为什么我看不到我的分界线了~~~

喵喵喵~~~

2018-01-25 13:17:15 236

原创 为什么我看不到我的分界线了~~~

喵喵喵~~~

2018-01-25 13:16:50 284

原创 为什么我看不见我的分界线了~~~

喵喵喵~~~

2018-01-25 13:15:58 383

原创 HDU 3863 No Gambling 【简单博弈】

传送门 // 题意: 给定一个大小为n的如题目的图, 蓝色点的目的是为了从左边连到右边, 红色点的目的是为了从上边连到下边, 问先手赢还是输?// 思路: 其实随便写几个玩一玩就知道一定是先手赢. 解释的后就是这个图是完全对称的, 后手无论是先完成目的还是堵先手, 都更慢一步, 所以直接输出先手赢即可..AC Codevoid solve() { int n ; while(cin

2018-01-23 20:47:12 309

原创 玲珑杯 Round 24 C 题 【思维好题!!! + bitset标记状态】

传送门 // 题意: 给你一个无向图,每次查询的时候给一堆二元组(xi,yi) 求图中有多少个点u与至少一个这次询问给出的二元组(xi,yi)满足dist(u,xi)<=yi,dist表示这两个点在图中的距离 如果不连通dist = inf// 思路: 我们考虑用压位进行优化, f[i][j] 表示的是这幅图中到达i点的距离 <= j 的所有点构成的bitset集合, 然后查询的时候就是把一堆

2018-01-23 19:53:12 347

原创 UVa 12493 Stars 【容斥 or 欧拉函数】

传送门 // 给定圆上n个点, 每m个点连一条线, 如果最后可以把所有的点都联通, 那么这就是一种合法状态, 如果两个m1 != m2, 但是最后连接出来的图形是一样的, 则方法算一种.// 思路: 我们可以暴力出10以内的答案, 可以发现与n的性质有关, 实际上就是只有m和n互质的情况下才有可能走完所有的n个点, 否则一定走不完, 可以自己在图上画一画. (其实就是一个倍数关系)画的过程中我们还

2018-01-23 16:48:51 261

原创 “玲珑杯”线上赛 Round #24 E 题 【思维 + 树状数组】

传送门 // 题意: 给定一个长度为n的序列, 问它的2^n个子序列的逆序对之和是多少.这道题和牛客上面一道题很相似, 牛客上面是求它的n(n+1)/2个子区间的逆序对之和. 明显这个问题依旧考虑贡献问题, 所以想一想就知道每一个逆序对的贡献就是2^(n-2)次方, 因为去除掉逆序对的那两个数, 剩下的数的任意一个子序列再加上这两个数就行啦. 所以ans 就是逆序对数 * 2^(n - 2)次方.

2018-01-23 00:14:20 318

空空如也

空空如也

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

TA关注的人

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