自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 2016icpc北京网络赛 E A Research on "The Hundred Family Surnames" 【Lca+树的直径】

链接:http://hihocoder.com/problemset/problem/1387题意: 给一棵n个节点的树,每个节点上有个姓氏,Q个询问,询问两种姓氏,问从这两种姓氏中各取一个节点,这两点路径最大的节点是多少。分析:我们如果知道了某种姓氏(a)的直径(在树中最远距离)的两个端点(au,av),那么询问它与另外一个姓氏(b)的答案就是max{dis(au,bu),dis(au,

2016-09-24 22:13:41 576

原创 hdu5833 Zhu and 772002 【高斯消元解异或方程组】

链接:http://acm.hdu.edu.cn/showproblem.php?pid=5833题意:给你n个数,每个数的素数因子最大不超过2000,从n个数取出1~n个,问有多少种方案使得腾门乘积为完全平方数。分析:我们知道完全平方数分解后的所有素数的都是偶数次方的,所以我们可以将所有数都素因素分解,可以得到选出来的数都是2^(x1+x2...)*3^(x1+x2....) ...这种

2016-08-15 15:25:51 406

原创 hdu5816 Hearthstone 【状压dp】

链接:http://acm.hdu.edu.cn/showproblem.php?pid=5816题意:对方有p滴血,你的牌库有n张A牌,m张B牌;A牌的效果是再抽两张牌,B牌的效果对对方造成xi滴血伤害。你现在手牌为空,现在可以抽一张牌,问一回合打败对手的概率。分析:n+m假设通过A牌我们已经抽了x张A牌,y张B牌,那么我们可以知道接下来还能不抽牌:判断还有没有A牌剩余  x*2

2016-08-13 17:29:02 375

原创 bzoj3531 [Sdoi2014]旅行 【树链剖分+线段树动态开点】

链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3531题意:中文题分析:由于是在树上求某一条路径(u,v)的值,很容易想到用树链剖分求,但是每次求的路径只需要与(u,v)相同颜色的点的值,不能直接用线段树统一维护。我们考虑每种颜色都建一颗线段树,那么直接维护相应颜色上的值就行了,但是这样空间是O(n*n),如果我们建n棵空树,树的

2016-08-13 14:40:07 370

原创 hdu 5828 Rikka with Sequence 【线段树+优化】

链接:http://acm.hdu.edu.cn/showproblem.php?pid=5828题意:给你n个数,q个操作,操作k,l,r,k=1时 区间[l,r]每个数加x,k=2时,区间[l,r]每个数开平方,k=3时,求区间[l,r]的和。分析:我们知道一个数多次开平方会变成1,但是这里的1操作会使这个数的值增大,所以直接判断一个区间是否为1肯定超时。官方题解加了个优化,就是判

2016-08-12 18:48:37 764

原创 hdu5823 color II 【状压dp(非正解)】

链接:http://acm.hdu.edu.cn/showproblem.php?pid=5823题意:有n(n现在要你求出这个图的所有非空真子集需要最少的颜色将所有点染色,相连的两个点颜色不能一样。分析:如果一个集合s的子集s0是一个独立集,那么s最少的颜色就不是由s0决定,但是可以由s-s0求出。dp[s]=min(dp[s],dp[s-s0]+1)。代码:#inclu

2016-08-12 13:33:00 376

原创 hdu4812 D Tree 【点分治+逆元+hash】

链接:http://acm.hdu.edu.cn/showproblem.php?pid=4812题意:给你一棵树,树的每个节点都有一个权值,现在给你一个k,问是否有一条简单路径(u,v)上的权值积%mod等于k。输出字典序最小的(u,v)。分析:很明显,这是点分治的题,每次分治重心,我们只要算过重心的路径是否这样的答案。判断的时候,我们遍历以重心为根的子树,的到重心的子树到子树每个节

2016-08-12 13:11:42 258

原创 hud4807 Lunch Time 【费用流 求前k条不相交的最短路】

链接:http://acm.hdu.edu.cn/showproblem.php?pid=4807题意:一个n个点的,m条边的有向图,有k个学生在点0,他们要去点n-1,每条边的长度都是1,容量为w,现在问你,这k个学生最少要多少时间到n-1.分析:很明显,时间最少肯定走最短路,但是每条边都有容量,所以有的学生走一条最短路的时候其他学生会去走其他的路,这些路都是不相交的,按照贪心策略我们走

2016-08-08 13:48:10 289

原创 hdu4810 Wall Painting 【组合数学】

链接:http://acm.hdu.edu.cn/showproblem.php?pid=4810题意:有n个数,第i天选出i个数,输出每天所有的i个数的异或值相加。分析: 在第k天时我们选数的公式C(n,i),但是异或操作只和而进制上的数有关,那么我们将每个数拆成二进制,统计每位1的个数。比如:1 ,2,10,1                               我们可

2016-08-08 11:33:35 293

原创 sgu 438 The Glorious Karlutka River 【网络流 分层】

链接:http://acm.sgu.ru/problem.php?contest=0&problem=438题意:有m个人要过河,但是没有桥,他们只能跳到河中的垃圾堆上过河,共有n个垃圾堆,每次只能跳到距离他们不超过D的垃圾上,每个垃圾有人数限制,每次跳跃花费一秒。问全都过河需要多少秒时间。分析:我们可以知道要么到不了,要么时间不超过n+m。如果时间只有1秒,那么我们就可以很简单的用网

2016-08-06 16:50:19 258

原创 SGU326 Perspective 【网络流 经典竞赛模型】

链接:http://acm.sgu.ru/problem.php?contest=0&problem=326题意:有n个球队,都是一个小组的,现在给出这n个对获胜的场次,还有剩下要比的场次(小组内,或者与其他小组),再给出一个矩阵,表示小组内的第i队要和第j队比的场次。问能否安排比赛让1队可能赢得比赛。分析:因为题意是要让1队可能赢得比赛,那么我们就先贪心让1队参与的比赛全赢(包括与其他小

2016-08-06 10:35:49 325

原创 hdu 5794 A Simple Chess 【lucas+容斥】

链接:http://acm.hdu.edu.cn/showproblem.php?pid=5794题意:一个n*m的木板,木板上有障碍物(不能走),现在要你算出从(1,1)到(n,m)有多少方案,只能按照这样的规则走:(x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)=5  (x2>x1&&y2>y1).分析:比赛的时候画图,发现是走到的点是杨辉三角,没有障碍物的时候每个点的就

2016-08-05 17:48:01 352

原创 2016 MUT 5 1012 World is Exploding(hdu5792) 【树状数组】

链接:http://acm.hdu.edu.cn/showproblem.php?pid=5792题意:给你一个序列Ai,让你找出有多少个一个四元组(aAd.分析:先离散化,然后用树状数组统计每个数前后有多少小于大于它的数,这个时候我们先不考虑重复的算出ans,然后用ans减去a=c,c=d,b=d,b=c的。四个for枚举就好了。a==c   ans-=BGreaterNum[i

2016-08-03 12:11:20 379

原创 poj3155 Hard Life 【最大密度图 01分数规划】

链接:http://poj.org/problem?id=3155题意:给你一个图,n个点,m条边,现在要你找到一个子图,求子图中的边数与点数的比值最大。分析:《最小割模型在信息学竞赛中的应用》(胡伯涛著)中的论问题。01分数规划套路。。:R=sigma(e)/sigma(v) 设 F(L)=sigma(e)-L*sigma(v),但是我们二分出L后并不知道取哪些边。但是我们知道取了(

2016-08-01 20:48:16 358

原创 bzoj1486 [HNOI2009]最小圈 【最小比例环 01分数规划】

链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1486题意:中文题,和上题相似,求的是sigma(c)/k最小的环,c是边的权值,k为选了多少点。分析:还是找简单还,证明在上一题。如果一个比例L使得sigma(c)-L*K是个负权环,那么可能存在一个小于L的比例R使得sigma(c)-R*K是个负权环,这就是01分数规划的套路

2016-08-01 13:11:14 453

原创 poj3621 Sightseeing Cows 【最大比例环 01分数规划】

链接:http://poj.org/problem?id=3621题意:n个点,m条边,点上有收益b,边上有花费c,点和边都可以多次经过,花费要重复算,但是收益不能重复算。现在要你找到一个环,使得sigma(b)/sigma(c)最大。分析:由于可能出现复杂的环,比如环套环,其中一个环的收益和花费为b1、c1,另一个为b2,c2,重复的花费为s。假设b1/c1>b2/c2,

2016-08-01 12:59:17 313

原创 poj2728 Desert King 【最优比例生成树 01分数规划】

链接:http://poj.org/problem?id=2728题意:有n个点,每个点用有坐标和高度,现在要让这n个点生成一棵树,收益是链接两点的距离bi,花费是高度差ci,现在要你求出sigma(ci)/sigma(bi) 最小。分析:按照01分数规划的套路走,R=sigma(ci)/sigma(bi) ,R为最小值。设F(L)=sigma(ci)-L*sigma(bi),如果对于

2016-07-31 18:57:44 368

原创 poj2976 Dropping tests 【01分数规划】

链接:http://poj.org/problem?id=2976题意:给你n个a和b,让你求删掉其中的k对使得 sigma(a[i])/sigma(b[i])最大。分析:01分数规划第一题,看这篇可以有个大概的了解。关键点在于不容易求一个值,但是验证某个值可行很容易。代码:#include#include#include#include#include#include

2016-07-31 14:53:05 358

转载 01分数规划

【关键字】0/1分数规划、最优比率生成树、最优比率环【背景】 根据楼教主的回忆录,他曾经在某一场比赛中秒掉了一道最优比率生成树问题,导致很多人跟风失败,最终悲剧。可见最优比率生成树是多么凶残的东西,但是这个东西只要好好研究半天就可以掌握,相信你在看了我写的这篇总结之后可以像楼教主一般秒掉这类问题。因为网上对于01分数规划问题的详细资料并不是太多,所以我就结合自己的一

2016-07-31 14:45:03 373

原创 poj2947 Widget Factory 【高斯消元】

链接:http://poj.org/problem?id=2947题意:有n个部件,m个记录,记录描述了,某些部件在那个时间段(只说明了星期a到星期b,没有明确多少时间),每个部件完成的时间3~9天。现在要你找出每个部件完成的时间。思路:每个记录的时间可以表示为 ((b-a+1)%7+7)%7.  很显然,每个记录都可以看成一个方程,所以就有m个方程,n个未知数,用高斯消元求解代码

2016-07-31 11:58:41 182

原创 poj 1681 Painter's Problem 【高斯消元 枚举自由变元】

链接:http://poj.org/problem?id=1681题意:与poj1222相似 输出变为求最小步数。分析:由于求最小步数,当我们存在自由变元时,我们可以得到解,但是不知道需要的最小步数,所以我们枚举所有的变元。代码:#include#include#include#include#include#include#include#include#incl

2016-07-30 13:49:59 552

原创 2016 Multi-University Training Contest 4 09 String problem (hdu5772) 【最大权闭合子图】

链接:http://acm.hdu.edu.cn/showproblem.php?pid=5772题意:给你一个由“0”~“9”组成长度为n的字符串,现在要找出一个子串使得子串的收益(得分-花费)最大。子串的得分等于sigma(w[id[i]][id[j]]) id[i],id[j]是选的数字在原串的编号。子串的花费为a[i]*(x-1)+b[i] (x>0)    x为某个数字出现的

2016-07-29 17:12:13 254

原创 poj1222 EXTENDED LIGHTS OUT 【高斯消元】

链接:http://poj.org/problem?id=1222题意:给你一个5*6的矩阵,每个矩阵里有一个灯,用01表示开关状态,没按下一个灯的开关,它与他四周的灯的状态改变,问怎么操作使得灯全都关闭灭。分析:经典的开关问题,一共有30个灯,用x0~x29表示,每个灯对应一个方程:x(i*6+j)+x(i*6+j+1)+x(i*6+j-1)+x((i+1)*6+j)+x((i-1)*6

2016-07-28 11:00:08 293

原创 poj1155 TELE 【树形dp】

链接:http://poj.org/problem?id=1155题意:以1为根的树,叶子节点上有权值,从1出发到叶子节点会得到叶子的权值,但是要减去路径上的权值,问你最多到达多少叶子使得最后的值大于等于0.分析:i点为根时用到的叶子节点j的价值用dp[i][j]表示,向上更新的时候就相当于将子树合并。dp[u][j+k]=max(dp[u][j]+dp[v][k]-w).代码:

2016-07-27 17:15:56 246

原创 cf 135div2D Choosing Capital for Treeland 【树形dp】

链接:http://codeforces.com/problemset/problem/219/D题意:n个点,m个有向边,现在要你求出每个点作为根使得图为一棵树需要改变多少边的方向,输出最少改变多少次,和这些点。分析:建图时发现,一个点为根时他的出度边不用改变,所以将所有的入边的权值为1,然后用dfs统计每个点的子树有多少这样的边。我们还可以发现,一个点(u)和他的父亲(fa)的关系

2016-07-27 14:20:52 202

原创 hdu2196 Computer 【树形dp】

链接:http://acm.hdu.edu.cn/showproblem.php?pid=2196题意:有n台电脑,通过n-1条网线连接,问每台电脑到离他最远的距离是多少。分析:我们把这些电脑看成一棵树,可以很容易的得到每个点的子树最远的距离(a),我们发现某个节点的答案就是max(a,除下它所在子树后父亲最远的距离)。所以我们可以先dfs一遍存下每个点(u)的子树离他最远和次远距离,

2016-07-27 12:38:24 211

原创 hdu1520 Anniversary party 【树形dp】

链接:http://acm.hdu.edu.cn/showproblem.php?pid=1520题意:给你一棵树,每个点都有权值,现在要你选一些点,这些点与父亲不能同时选,问权值最大多少。分析:树形dp入门题,直接用dp[i][0/1]表示第i个节点选或不选,转移:dp[u][0]+=max(dp[v][0],dp[v][1])dp[u][1]+=dp[v][0]代码:#

2016-07-26 21:04:54 171

原创 hdu5001 walk 【概率dp】

链接:http://acm.hdu.edu.cn/showproblem.php?pid=5001题意:给你一个n个点m条边的无向图,问你任意从一的点出发走d步后,不经过某个点的概率,输出那个点的概率。分析:枚举一个点,表示不从该点出发经过该点的概率,因为从该点出发的路径,一直都是经过该点的,比如说到a点的概率是p1,它如果连两个点那么ans=p1+p1*0.5+p1*0.5这里我们就

2016-07-25 15:41:25 213

原创 2016 Multi-University Training Contest 2 H Helter Skelter (hdu5741) 【二分】

链接:http://acm.hdu.edu.cn/showproblem.php?pid=5741题意:给你n个数字表示一个字符串s的压缩形式,再给你m个询问,询问是否存在一个区间是由a个0,b个1组成,是输出1,否输出0.分析:如果我们确定了a的个数,那么b的个数就是一个区间,我们暴力将所有的可行(a,b),可以发现他们分布在一个封闭的二位平面上,我们可以找到这个二维平面的上界,下界(就

2016-07-24 10:44:08 369

原创 2016 Multi-University Training Contest 1 1005 Necklace (hdu5727)【枚举+匹配】

链接:http://acm.hdu.edu.cn/showproblem.php?pid=5727题意:有2*n个宝石,n个阴,n个阳,m条关系(a,b),代表a被b影响,a是阳,b是阴。问将这些宝石组成项链,最少的阳被影响的个数。分析:我们现在枚举阴的排列,因为是环,所以有(n-1)!种,然后对于每个排列,把阳插入到阴的空隙中,如果空隙两边都没有影响则插入,然后跑一边二分匹配,得出的匹配

2016-07-23 14:32:14 231

原创 2016 Multi-University Training Contest 2 1006 Fantasia (hdu5739) 【割点 无向图dfs树 树形dp】

链接:http://acm.hdu.edu.cn/showproblem.php?pid=5739题意:给你一个n个点m条边的无向图G,删去第i个点的后图的价值为Gi,求G1+.....Gn每个点都有价值。Gi的价值规则:删除i后图连通则价值为所有点的乘积。若不连通,价值为所有分量的价值和。么个分量的价值是分量中的点的价值乘积。分析:很明显,题目要处理的就是割点和非割点。对

2016-07-23 11:36:00 387

原创 Hopcroft-karp 算法

Hopcroft-Karp算法该算法由John.E.Hopcroft和Richard M.Karp于1973提出,故称Hopcroft-Karp算法。时间复杂度O(n^0.5*m)思路:用bfs来找出多条不相交的最短增广路,形成极大增广路集,然后可以用匈牙利多路增广。bfs要找最短的增广路,是因为增广路的长度每增加1,他的匹配数也增加1,所以最短保证答案的准确。每一

2016-07-18 20:20:01 4083

原创 poj1651 Multiplication Puzzle 【区间dp】

链接:http://poj.org/problem?id=1651题意:有n个数,现在要删除【2,n-1】里的数,每次删除的代价是它和左边右边的乘积,求出最少代价。分析:dp[i][j]表示删除了(i,j)的某个数的最小代价,转移方程: dp[i][j]=min(dp[i][j],dp[i][k]+dp[k][j]+a[i]*a[j]*a[k]); k为枚举要删除的数。代码:#in

2016-07-18 16:33:53 188

原创 nyoj746 整数划分(四)【区间dp】

链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=746分析:a[i][j]表示i到j的数,dp[i][j]表示,长度为i插了j个乘号的最大值,转移:dp[i][j]=max(dp[i][j],dp[k][j-1]*a[k+1][i]) 表示在k的位子插一个乘号。代码:#include#include#include#

2016-07-18 16:27:50 454

原创 poj2955 Brackets 【区间dp】

链接:http://poj.org/problem?id=2955题意:给你一串由“(  )”“[  ]”组成的括号串,现在问你最多的括号匹配。分析:枚举一个长度,看看这个区间内有多少能匹配的括号,用dp[i][j]表示,s[i]和s[j]能匹配时dp[i][j]=dp[i+1][j-1]+2,然后枚举区间内的点,两段区间合并就可以找到最大的匹配。代码:#include#incl

2016-07-18 16:16:04 187

原创 计蒜客 百度地图的实时路况 【cdq+floyd】

链接:https://nanti.jisuanke.com/t/11217分析:题目要求所有的dis(x,y,z); x到z不经过y的最短路。考虑暴力做法,枚举每一个点表示不经过它,跑n次floyd。。显然n^4过不去。我们在求最短路的时候很多i到j的最短路重复的求过了。考虑分治,每次求(l,r)可以用(l,mid)求floyd表示用可能用到了(l,mid)中的点,到(mid+1,r)中找

2016-07-14 16:26:37 744

原创 51nod1623完美消除 【数位dp】

链接:http://www.51nod.com/onlineJudge/submitDetail.html#!judgeId=108709分析:在枚举每一位观察到 212需要3次,121只要2次,我们可以发现若新枚举的数在前面的一个递增状态没出现过,操作数+1。比如:前面的状态为“1 2 3 4 5 6” 再加入5时 状态变为“1 2 3 4 5”, 因为后面如果再加入6就会形成“1234

2016-07-14 15:30:19 274

原创 bzoj1799[Ahoi2009]self 同类分布 【数位dp】

链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1799分析:设状态dp[i][j][k],表示长度为i,所有位数和为j,当前模的余数为k,因为所有位的和最大为18*9,所以枚举模数,用记忆化搜索找到最后k==0的数。代码:#include#include#include#include#include#inclu

2016-07-14 15:22:31 453

原创 bzoj1026[SCOI2009]windy数 【数位dp】

链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1026分析:我们可以先预处理出长度为i高位为j有多少个这样的数,也就是dp[i][j]+=dp[i-1][k] (|j-k|>=2)。然后就是找出0~r有多少个,我们可以知道r的位数Len,先可以把小于Len的直接求出来,单独把Len求出,之后从len-1开始确定每一位找出剩下的。

2016-07-13 22:37:54 211

原创 CF355div2

链接:http://codeforces.com/contest/677c:Vanya and Label题意:给你一个字符串s,每个字符可以用一个10进制数表示(0~63),现在要求有多少对与s长度一样的字符串通过&得到s。分析:只用64个数,直接暴力出每两个数的&,然后相乘就行了。#include#include#include#include#include#i

2016-07-06 21:10:40 383

空空如也

空空如也

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

TA关注的人

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