自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 hdu 5606(并查集)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5606解题思路:这题实际上是要找一些连通的节点,使得边上的权值都为0。很明显,首先把权值为0的边都拿出来,然后利用并查集找到该点所在的连通块,并记录每个连通块的个数。#include#include#include#includeusing namespace std;con

2016-07-31 17:56:32 230

原创 hdu 5587(数学规律)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5587解题思路:首先可以预处理第i天有多少个数以及前i天的数之和。接下来就可以先二分找到最大的天数t,使其得到的数小于m,接下来就是如何求出多余的一截了。这个地方卡了好久。。。一直没想到怎么处理好,其实可以用dfs去搜出来的。因为这里的数列是循环的,所以可以把它递归到最早的数列中。#

2016-07-31 13:04:09 350

原创 BestCoder Round #85

第一题:http://acm.hdu.edu.cn/showproblem.php?pid=5776解题思路:维护前缀和,然后枚举m的倍数,在利用哈希去找即可。#include#include#include#includeusing namespace std;const int maxn = 100005;int n,m,sum[maxn],a[maxn];map

2016-07-31 10:56:35 226

原创 hdu 3416(最短路+最大流)

题意: 有 n 个城市,知道了起点和终点,有 m 条有向边,问从起点到终点的最短路一共有多少条。解题思路:这题的关键就是找到哪些边可以构成最短路,其实之前做最短路的题目接触过很多,反向建一个图,求两边最短路,即从src到任一点的最短路dis1[]和从des到任一点的最短路dis2[],那么假设这条边是(u,v,w),如果dis1[u] + w + dis2[v] = dis1[des],说

2016-07-30 10:33:58 1029

原创 poj 3189 Steady Cow Assignment(二分+最大流)

题意:N头牛(1000),B个农场(20),每个农场可以容纳一定数量的牛。每头牛对每个农场都有一个排名(排名从1~B)。每头牛都会在B个农场中的某一个,这头牛的高兴程度是它对这个农场的排名。为了使每头牛都尽量同等高兴,希望所有牛中最高兴的和最不高兴的程度差值最小,求这个差值。构图:二分最小差,对每一个最小差,枚举起点、终点。最大流判可行性。#include#include

2016-07-29 16:01:51 231

原创 poj 2455 Secret Milking Machine(二分枚举+最大流)

题意:题意:FJ有N块地,这些地之间有P条双向路,每条路的都有固定的长度l。现在要你找出从第1块地到第n块地的T条不同路径,每条路径上的路不能与先前的路径重复,问这些路径中的最长路的最小是多少。 思路:二分答案+网络流判定。二分枚举最大边权,重新建图,只保存权不超过最大边权的边。即如果边的长度小于等于我们规定的最大边权 则添加这条边 权值为1, 否则标记为0  

2016-07-29 15:07:48 285

原创 poj 2112 Optimal Milking(二分+Floyd+最大流)

题意:K个产奶机,C头奶牛,每个产奶机最多可供M头奶牛使用;并告诉了产奶机、奶牛之间的两两距离Dij(0问题:如何安排使得在任何一头奶牛都有自己产奶机的条件下,奶牛到产奶机的最远距离最短?最短是多少?解题思路:首先用Floyd把两两之间的最小距离算出来,接下来二分枚举最短距离limit,只要i,j两点之间距离小于limit,连一条容量为1的边,源点到产奶机的边为M,限制了每个产奶机

2016-07-29 10:51:20 312

原创 hdu 3729(二分图最大匹配+最大字典序)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3729解题思路:节点i对Xi~Yi之间的每一个点都连一条边,这样问题就转化成二分图的最大匹配了。字典序最大,这里可以根据匈牙利算法的特点,从n枚举到1即可。#include#include#includeusing namespace std;const int maxn = 1000

2016-07-28 09:44:20 1219

原创 hdu 1498(二分图最小顶点覆盖)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1498解题思路:这题看上去很和二分图的最小顶点覆盖很相似,但关键怎么处理多个不同颜色的气球。其实就是每次只考虑一个气球,利用一个气球的颜色建立二分图,看它的最小顶点覆盖是否小于k,如果是则说明符合要求。。好吧,至少我没想到。。#include#include#include#inc

2016-07-27 22:58:14 526

原创 hdu 1669(二分图多重匹配+二分枚举)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1669题意:在通讯录中有N个人,每个人能可能属于多个group,现要将这些人分组m组,设各组中的最大人数为max,求出该最小的最大值解题思路:解决这道题之前,首先要搞清楚二分图的多重匹配问题。在二分图最大匹配中,每个点最多只能够和一条匹配边相关联,然而我们经常会遇到这样的问题,即二分图匹配中

2016-07-27 21:09:57 747

原创 hdu 1281(二分图匹配+增广路)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1281解题思路:把棋盘的行x看成二分图左边的点,列y看成二分图右边的点,那么就把可以放车的位置看成是一条边,而二分图的最大匹配中x互不相同,y互不相同,所以每个匹配都是不同行不同列,所以最大匹配就是最多可以放的车的数量。接下来就是关键边的查找了,这里实际可以每次删一条边,然后做二分匹配,

2016-07-27 12:07:08 602

原创 hdu 1068(二分图最大独立集)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1068解题思路:这题大概意思就是说找出一个最大的集合使得该集合的任意两个人木有关系。根据最大独立集 =顶点数 - 最大匹配数由于题目没有给出哪些是男的哪些是女的,也就是说没有明显的二分图,所以将一个人拆成两个人进行最大匹配。由于一个拆成两个,所以最大匹配数应该是求出来的数

2016-07-27 10:12:41 283

原创 hdu 5586(最大连续子序列和)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5586官方题解:令A i =f(A i )−A i  ,然后求一遍最大连续子序列和就能知道最多能增加的值。  PS:感觉这题好巧妙啊。。很难想到去利用最大连续子序列和求增量。。#include #include #include using namespace std;

2016-07-25 20:39:36 346

原创 hdu 5570(数学期望)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5570【分析】用A[i][j]表示第i个球为颜色j的概率用c[j]表示颜色为j的球的个数用E[x]表示式子x的期望,显然有E[X[i][j]]=A[i][j]*1+(1-A[i][j])*0=A[i][j]用P[x]表示事件x发生的概率题目所要求的是E[c[1]^2 +c[2

2016-07-25 16:29:53 497

原创 hdu 5569(二维dp,水题)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5569解题思路:dp[i][j]表示到达(i,j)位置时的最小值。由于目标式的特点,我们一次需要走两格,自然而然转移方程也是两次走:dp[i][j]->dp[i+2][j],dp[i][j]->dp[i][j+2],dp[i][j]->dp[i+1][j+1]。属于简单的dp问题#i

2016-07-25 15:05:24 290

原创 hdu 5568(dp+大数模拟)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5568官方题解:#include #include #include using namespace std;const int maxn = 105;struct Bign { int n, s[maxn<<1]; Bign (int t = 0) { i

2016-07-25 11:18:33 310

原创 poj 3352 Road Construction(边-双连通分量)

题意:给定一个连通的无向图G,至少要添加几条边,才能使其变为双连通图。解题思路:显然,当图G存在桥(割边)的时候,它必定不是双连通的。桥的两个端点必定分别属于图G的两个【边双连通分量】(注意不是点双连通分量),一旦删除了桥,这两个【边双连通分量】必定断开,图G就不连通了。但是如果在两个【边双连通分量】之间再添加一条边,桥就不再是桥了,这两个【边双连通分量】之间也就是双连通了。

2016-07-24 15:28:35 289

原创 BestCoder Round #84

AaronsonAccepts: 607Submissions: 1869Time Limit: 4000/2000 MS (Java/Others)Memory Limit: 131072/131072 K (Java/Others)问题描述给出一个不定方程x0+2x1+4x2+...+2mxm=nx_{0}+2x_{1}+4x_{2}+...+2^{m}

2016-07-24 09:35:14 390

原创 hdu 5504(枚举+找规律)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5504官方题解:注意先特判0 的情况:如果读入的数据有0 ,那么去掉所有的0 且最后答案和0 取一个max。剩下的正数显然全部乘起来比较优。对于负数的话,如果个数是奇数个我们就去掉绝对值最小的那一个,然后全部乘起来即可。  这题坑很多,要讨论的情况很多。。#include#in

2016-07-23 16:52:10 363

原创 poj 1932(spfa判断环)

题目链接:http://poj.org/problem?id=1932题意:根据给出的关系图,判断是否存在一条从1到n的路径,且最终的cost值为正值,初始值为100。中间各个room的值有正有负。但在求路径的时候,任何一点的value都不能小于或者等于零,否则这条路就不能通。当然,如果有正环,并且可以从1到n是连通的,那么就一定winnable。解题思路:如果图中出现正环,并且通过这

2016-07-23 11:13:38 382 1

原创 hdu 5501(贪心+01背包)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5501现在有A1,B1,C1和A2,B2,C2这两道题,如果先做1再做2的得分是A1-B1*C1+A2-B2*(C1+C2),如果先做2在做1的得分是A2-B2*C2+A1-B1*(C1+C2),令先做1再做2的得分更高些,那么有A1-B1*C1+A2-B2*(C1+C2) >= A2-B2*C

2016-07-22 20:21:35 324

原创 poj 3321 Apple Tree(dfs序+树状数组求和模型)

题目链接:http://poj.org/problem?id=3321解题思路:先dfs求出序列,将子树转化到dfs序列的区间内,接下来就是简单的树状数组求和模型了。水题。#include#include#includeusing namespace std;const int maxn = 100005;struct Edge{ int to,next;}edge[

2016-07-22 11:11:46 327

原创 poj 1990 MooFest(转化成树状数组求和)

题目大意:一群牛参加完牛的节日后都有了不同程度的耳聋,第i头牛听见别人的讲话,别人的音量必须大于v[i],当两头牛i,j交流的时候,交流的最小声音为max{v[i],v[j]}*他们之间的距离。现在有n头牛,求他们之间两两交流最少要的音量和。解题思路:先将v按从小到大排序,这样对于vi,那么vi之前的牛所交流的声音就是vi,vi很好确定,但关键就是怎么算距离了。我们可以用两个树状数组,一个维护

2016-07-22 10:46:37 304

原创 hdu 5497 Inversion(树状数组)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5497解题思路:用树状数组维护一段区间L,区间长度为m,依次枚举该区间的终点ai,即将该点加入到区间L来,把ai-m从原来的L中删除;删去ai+m,影响就是少了后面所有比它小的逆序对数,以及前面所有比它大的逆序对数 添加ai,同理,多了所有比它小的逆序对数,以及前面所有比它大的逆序对

2016-07-21 10:11:45 486

原创 hdu 5481(数学期望+区间合并)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5481题解:实际上求的是所有子集的并集长度之和。把坐标离散化之后,可以单独考虑每一段区间在并集内部的出现次数,如果有m个大区间覆盖这段小区间,就会发现当且仅当这m个区间都不在子集中时,这一小段区间不会成为并集的一部分,所以一共有2 n −2 n−m  个子集包含这段小区间。把长度乘以出现次数

2016-07-20 10:24:15 510

原创 hdu 5419(数学期望)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5419题解:首先分母是C(m,3),考虑如何求出分子考虑数学期望的独立性,我们首先可以用线性的时间处理每个点被多少区间覆盖,如果第i个点被si个区间覆盖,则该点对结果的贡献度为wi*C(si,3),注意这里si必须要大于等于3才能够对结果有贡献。#include#include

2016-07-20 09:17:48 328

原创 hdu 5464(简单dp)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5464解题思路:由于p很小,而ai很大,所以先把ai%p,由于ai可能有负数,所以ai=(ai%p+p)%p接下来就是在[0,p-1]这个范围内去找数了。dp[i][j]表示前i个数中,取得的数是p的倍数的方案数。状态转移就很简单了,直接上代码#include#include#i

2016-07-19 19:25:03 293

原创 hdu 5433(bfs+dp)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5433解题思路:dp[i][j][k]表示在(x,y)点,毅力为k时的最小体力。由于每个点可能会走多次,所以用bfs往四个方向搜索,不过考虑到最优情况,只有比dp[i][j][k]更小,才把它放进队列里。#include#include#include#include#include

2016-07-19 16:48:48 249

原创 hdu 5434(状态压缩+矩阵优化)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5434官方题解:这个题用状态转移得到矩阵,再矩阵快速幂就可以了。合体象的攻击范围是变少了的,我们可以理解为,一个小象会对自身的四个正方向产生保护,可以得到结论,只要附近有小象,我们就可以放。可以枚举i 行的所有状态和i−1 行的所有状态,判断是否可以转移。如果在第i 行的j 列上放了小象,那

2016-07-19 10:25:14 395

原创 hdu 5428(分解质因子)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5428题意:给你N个数,让你求出这N个数最小的因子之积,但要满足一个条件,那就是这个乘积必须包含三个因子,可以为本身;解题思路:对于每一个数字,它有用的部分其实只有它的所有质因子(包括相等的)。求出所有数的所有质因子中最小的两个,相乘就是答案。如果所有数字的质因子个数不到两个,那么就是无解。时间

2016-07-18 19:10:44 330

原创 hdu 5424(dfs搜索)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5424官方题解:如果图是联通的,可以发现如果存在哈密顿路径,一定有一条哈密顿路径的一端是度数最小的点,从哪个点开始直接DFS搜索哈密顿路径复杂度是 O(n) 的。要注意先判掉图不连通的情况。  #include#include#include#includeusing n

2016-07-18 16:45:19 290

原创 hdu 5720(贪心)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5720官方题解:考虑三角形三条边a,b,ca,b,c (a >= b)的关系a−bc,a+b>c ,即c∈(a−b,a+b) 。令加入的边为c ,枚举所有边作为a 的情况。对于所有可行的b ,显然与a 相差最小的可以让(a−b,a+b) 覆盖范围最大,所以可以贪心地选择不大于a 的最大的b

2016-07-18 10:57:31 275

原创 hdu 5367(线段树+区间合并)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5367官方题解:对于求“高山脉”长度,可以利用线段树。树节点中保存左高度连续长度,左高度连续区间的高度,左高度连续区间的状态(即是否高于第一个高度不同的山),右高度连续长度,右高度连续区间的高度,右高度连续区间的状态,每段区间内的“高山脉”数量。每次更新时更新高度即可,在pushup过程中去计算

2016-07-17 16:33:41 522

原创 hdu 5340(manacher+枚举)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5340解题思路:首先用manacher处理每个字符,接下来就是要枚举了。首先是我想到的dp,dp[i][j]表示第i个字符结尾的第j个回文串是否存在。dp[i+k-1][j] = 1 if(dp[i-k+1][j-1] == 1),k当前表示回文串的半径长度 最后只需要判断dp[

2016-07-17 11:03:16 292

原创 hdu 5285(染色法判断二分图)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5285解题思路:很明显的是二分图的判定,用染色法即可。不过这题有一个坑,当n#include#include#includeusing namespace std;const int maxn = 100005;struct Edge{ int to,next;}edge[

2016-07-15 22:13:15 385

原创 hdu 5280(最大子串和变形,dp)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5280解题思路:动态规划,dp[i][0]表示以第i个数结尾时,没把p添加到数列中,dp[i][1]表示以第i个数结尾时,已经把p添加入数列中。#include#include#include#define max(a,b) a > b ? a : busing namespace st

2016-07-15 17:27:21 252

原创 hdu 5277(最大团问题)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5277题意:给出一个平面图,n个点,m条边,直线边与直线边之间不相交,求最大团的数目。解题思路:由于平面图,直线边与直线边之间不相交,所以最大团的大小最大为4(即一个三角形内存在一个顶点)对于最大团为4:先枚举两条不相连的边对于最大团为3:先枚举一条边,一个点。以上两种情况会重复

2016-07-15 15:12:36 514

原创 hdu 4358(莫队算法+dfs序列)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4358解题思路:用dfs求出整棵树的dfs序列,这样以u为根节点的子树就转化到相对应的区间上了。由于是区间不修改查询问题,这个时候就可以用莫队算法了。#pragma comment(linker, "/STACK:16777216") #include#include#include

2016-07-15 09:55:40 335

原创 hdu 5213(容斥原理+莫队算法)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5213莫队算法是离线处理一类区间不修改查询类问题的算法。就是如果你知道了[L,R]的答案。你可以在O(1)的时间下得到[L,R-1]和[L,R+1]和[L-1,R]和[L+1,R]的答案的话。就可以使用莫队算法。对于莫队算法我感觉就是暴力。只是预先知道了所有的询问。可以合理的组织计算

2016-07-14 20:03:48 963

原创 hdu 5266(线段树+LCA)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5266解题思路:考虑dfs序,通过在简单的证明可知L~R的LCA为L ~R 中dfs序较小的那个位置与dfs序较大的那个位置的LCA。因此只要通过st表处理L~R最大dfs序与最小dfs序的编号即可。 这里用线段树维护dfs序的最大和最小值。#pragma comment(linke

2016-07-14 09:45:58 266

空空如也

空空如也

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

TA关注的人

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