自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 HDU 5732 Subway(树同构)

题意: 给你两个树,让你判断是否同构。分析: 这个题目还是挺好的,主要考验了Hash的技术,如何能够把两颗树Hash出来是难点之一,题解给出了一个办法,就是把每个子树的Hash值乘以一个小质数累乘然后模一个大质数,但是只要是这种hash肯定会出现重复的情况,所以我们需要对重复的hash值进行多次检验,另外,要把这个树变成有根树,可以选择中心或者是重心,这二者是不同的,但是都是可以做的。具体

2017-02-02 21:48:16 663

原创 HDU 5412 CRB and Queries(整体二分 | CDQ分治)

题意: 给定一个数列,有两种操作,单点修改和区间第k大值。分析: 整体二分的裸题吧算是,整体二分和CDQ分治还是有点不同的,主要是他还把答案二分出来了,每次判定的时候都会把答案往他应该去的地方放,到了最后就是要查询的答案了,讲的话太复杂,还是看代码理解吧代码://// Created by CQU_CST_WuErli// Copyright (c) 2016 CQU_CST_

2017-02-02 21:47:25 622

原创 HDU 5313 Bipartite Graph(bitset + DP)

题意: 给你一个二分图,问你最多可以添加多少条边,让这个图变成完全二分图。分析: 可以知道的是,完全二分图的边数就是两边的点数相乘,为了让这个值能够最大,我们要让两边的点数尽量相等,所以先预先处理处每一个小二分图的两边的个数,然后dp一下就好了,但是n^2的dp肯定是过不了的,所以我们用bitset来优化一下就好了。bitset的每一位存的是前i个二分图,最多可以让两边的点往n/2靠近的值

2017-02-02 21:46:34 423

原创 HDU 5036 Explosion (bitset + DP)

题意: 给你一张图,每个图都可以到达另一个节点,当然你也可以选择炸开者结点来进入这个图,问你炸开节点的期望次数是多少。分析: 因为每个点是独立的,我们考虑每一个点的单独的期望,到这个点要炸的次数其实就是到这个点的节点数的倒数,所以我们需要把可以到达每个点的点数处理出来,直接求的话,用floyd来求闭包,复杂度不够,所以用bitset来优化。代码://// Created by CQ

2017-02-02 21:46:02 602

原创 Codeforces 701C They Are Everywhere (滑动窗口)

题意: 给定一个字符串,存在一个子串,使得里面含有所有种类的字符。分析: 典型的滑动窗口,注意细节。代码://// Created by CQU_CST_WuErli// Copyright (c) 2016 CQU_CST_WuErli. All rights reserved.////#pragma comment(linker, "/STACK:102400000,1

2017-02-02 21:45:18 400

原创 Codeforces 700B Connecting Universities(树的中心)

题意: 给你树上的一些点,问你如何把他们两两分组,是的每组的距离总和最大。分析: 很显然的就是,如果能够让这些点都经过最远的点,甚至是根的话,那么答案肯定是足够大的,仔细想想之后可以联想到树的重心,但是这个重心不是整个的重心,而是根据那选定的点的重心,找到之后一次dfs就好了。代码://// Created by CQU_CST_WuErli// Copyright (c) 2

2017-02-02 21:44:44 476

原创 Codeforces 700A As Fast As Possible(机智)

题意: 题意就不说了,其实是小学的题目,推公式就好了。分析: 首先可以知道最短的时间就死每个人在车上的时间一样的,那么我们可以设这个为x。假设一共要运k次,那么前(k-1)次车把人往前运,然后回头接其他人,最后一次直接到终点,推导下公式就好代码://// Created by CQU_CST_WuErli// Copyright (c) 2016 CQU_CST_WuErli.

2017-02-02 21:43:35 423

原创 Codeforces 698B Fix a tree (模拟)

题意: 给你一个在某一个特定根下,书中每一个节点的父亲,问你如何修改,能够使得形成一棵树。分析: 主要还是怎么机智的实现这些东西,因为是在某一个根的情况下,所以对于所有的p[i] == i的点,都可以算是不符合要求的点(出了根节点),随意我们标记出所有的这种点,然后选择其中一个为根,其他的全部链接过来即可。比赛的时候没想到这个,写的太复杂,还没过样例。。。结果集训队大神几十行就搞定了(ra

2017-02-02 21:43:00 369

原创 Codeforces 698A Vacations(线性DP)

题意: 每一天都有各种活动,也可以选择休息,问你如何安排才能够在前后两天惊醒的活动不一样的情况下,是的休息的天数最少。分析: 直接暴力进行dp就可以了,注意前后活动不一样是的转移状态的不同。// Created by CQU_CST_WuErli// Copyright (c) 2016 CQU_CST_WuErli. All rights reserved.////#pra

2017-02-02 21:41:57 453

原创 Codeforces 696C PLEASE(数论)

题意: 给你三个杯子,一开始中间的杯子里有钥匙,每一次把中间的杯子和左右两边中的一个杯子交换,每次选择是等概率的,问你n次操作之后,钥匙在中间杯子的概率是多少,并且用分数形式表示出来。解法: 这题有两个需要处理的,一个就是因为n会很大,所以给的n的各个因子,不过这个没啥困难的,价格矩阵快速幂就能算,另外dp的方程很好推,就是dp[i] = (1 - dp[i - 1]) * 0.5。然后他

2017-02-02 21:41:16 527

原创 Codeforces 696B Puzzles(期望+树形dp)

题意: 对树做dfs的时候,每一个点都有一个时间戳,问你如果每次选择子节点都是等概率的情况下,每个点的期望时间戳是多少。解法: 一看就是典型的树形dp求期望的题目,我们考虑的是其他的点对某一个点的贡献度,最后的出的转移方程就是dp[v] = dp[u] + 1 + (sz[u] - sz[v] - 1]) * 0.5。 得到这个方程有两个方法,第一种很好理解,首先子节点最起码比父节点

2017-02-02 21:40:29 458

原创 Codeforces 696A Lorenzo Von Matterhorn(LCA)

题意: 给你一棵树,其实就是按照线段树的方法建的树,有两种操作,将u到v的路径上的边权全部加w,然后询问从u到v的路径上的边权和。解法: 因为节点的编号很大,所以不能直接建树,但是可以知道,这棵树的最大深度也就是62层,所以我们可以用map来保存边权,或者把边权放在点权上,就像树链剖分那样,每次操作时就可以暴力的向上更新,因为最多1000次操作,哪怕每次都是最深的节点,也最多向上63次,总

2017-02-02 21:39:14 419

原创 Codeforces 687D Dividing Kingdom II (图论+并查集)

题意: 给你一张图,其中边按照序号排好,每次给你一个 l和r,让你用给定区间范围内的边生成一张图,然后把这个图中的点分成两边,在所有使用的边中,使得两边端点在同一个部分的边的最大值最小。解法: 我们可以很快的看出,如果是二分图的话,那么所有的边的两个端点都不会再同一个部分,那么也就是说如果生成的图不是二分图,那么才会存在这样的边,于是问题就转变成了如何找到所有的奇环的最小边的最大值。这里可

2017-02-02 21:38:21 542

原创 Codeforces 685E Travelling Through the Snow Queen's Kingdom(DP)

题意: 给你一张图,每一条边都有一个编号i,经过每条边的时间为1,如果当你到达这条边的时间小于i的话,就必须等到i才能走出这条边,如果大于i,就走不出去了,也就是不通了。然后给你一些询问l, r, s, t,问你是否可以从s出发,时间为l,在r时间之前到达s。解法: 我们假设动态规划的状态为dp[s][t]表示从s到t要花费的最少时间,我们考虑倒叙添加边,这样的话每当新添加一条边(u,v)

2017-02-02 21:37:19 615

原创 Codeforces 685D Kay and Eternity (扫描线)

题意: 给你nn个点,再给你正方形边长,问你在整个无限大的网格中,包含有1,2,3..n1,2,3..n个点的正方形有多少个解法: 因为整个网格是无限大的,而且点的坐标范围也很大,所以需要离散化,既然用到了离散化,而且又是这种覆盖的问题,就可以考虑扫面线,我们用cnt[y]来辨识y这个坐标被覆盖了多少次,因为确定一个正方形只需要确定左下的点就好了,所以只需要统计左下被覆盖多少次。我们把每一

2017-02-02 21:35:57 756

原创 Codeforces 685B Kay and Snowflake(树的重心)

题意: 给你一棵树,问你每一颗子树的重心是哪一个节点。解法: 树的重心有一个性质,当把两棵树合并时,新的树的重心肯定在两颗树重心之间的路径上,所以我们只需要看当前节点到他重儿子重心之间的路径中是否有满足条件的点就可以了,(重儿子请去看树链剖分)因为重儿子是最大的,不在这个路径上找,会让重儿子单独出来,肯定不满足条件。//// Created by CQU_CST_WuErli//

2017-02-02 21:33:43 597

原创 Codeforces 679C Bear and Square Grid(滑动窗口)

题意: 给定一个网格图,其中有的有的是可以走的点,有的是障碍,定义连通块和无向图中连通块是一样的。如果把一个k*k大小的区域内的点都变成联通块,那么这个网格图中最大的连通块是多大解法: 这个如果用暴力枚举的话,是O(N4)O(N^4)的,但是我们可以用滑动窗口来优化,我们首先把每一个连通块的大小求出来,然后枚举y,先把窗口内的点全部变为联通,并且从他所在的连通块分离出去,那么我们只需要检测

2017-02-02 21:32:19 415

SpringMVC两种配置的Demo

SpringMVC两种配置的Demo

2017-03-02

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

TA关注的人

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