自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Miracle_ma的专栏

马天猫重新起航

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

原创 CSU 1804 有向无环图(图上的dp)

给你个有向无环图,给你每个点的a,b序列,让你求给你个有向无环图,给你每个点的a,b序列,让你求count表示两点之间的路径的条数,因为是有向图,所以直接从入度为0的点开始搜,然后往下搜count表示两点之间的路径的条数,因为是有向图,所以直接从入度为0的点开始搜,然后往下搜 ans[u]=ans[v]/a[v]∗a[u]+a[u]∗b[v]ans[u]=ans[v]/a[v]*a[u]+a[u]

2016-09-03 22:16:20 964

原创 CSU 1803 2016 (逆向思维)

让你在[1,n]和[1,m]中选一个a和一个b,使得a×b是2016的倍数让你在[1,n]和[1,m]中选一个a和一个b,使得a\times b是2016的倍数 问你有多少种情况,然后直接考虑可能比较麻烦问你有多少种情况,然后直接考虑可能比较麻烦 这题就要反过来考虑,就是考虑不是2016的倍数有多少种这题就要反过来考虑,就是考虑不是2016的倍数有多少种 a×b%2016!=0a\times

2016-09-03 22:08:34 815

原创 poj 3270 Cow Sorting(置换)

给你一个序列,让你通过交换变成升序,每次交换的花费是两个元素之和给你一个序列,让你通过交换变成升序,每次交换的花费是两个元素之和 对于一个置换,就两种变换的方法,要么就是把置换里最小的数字和边上的数字换对于一个置换,就两种变换的方法,要么就是把置换里最小的数字和边上的数字换 要么就是和外面的最小的交换要么就是和外面的最小的交换代码:#include <map>#include <set>#i

2016-09-03 22:01:41 266

原创 UVA 11077 Find the Permutations(置换+dp)

n个数字,能组成的,需要k次才能交换还原的排列有多少种n个数字,能组成的,需要k次才能交换还原的排列有多少种 对于一个有x个元素的置换,还原需要x−1次交换对于一个有x个元素的置换,还原需要x-1次交换 所以有状态dp[i][j]表示前i个元素j次交换的排列个数所以有状态dp[i][j]表示前i个元素j次交换的排列个数 转移就是dp[i][j]=dp[i−1][j]∗1+dp[i−1][j−1

2016-09-02 14:37:44 420

原创 HDU 3923 Invoker(polya定理模版题)

这题就是问你n个颜色,构成长度m的项链,有几种这题就是问你n个颜色,构成长度m的项链,有几种 手镯是只能旋转,不可翻转的,项链可以旋转也可以翻转手镯是只能旋转,不可翻转的,项链可以旋转也可以翻转 旋转有n个不动点,翻转也有n个,所以最后是除以2n旋转有n个不动点,翻转也有n个,所以最后是除以2n 考虑旋转的情况,可以旋转0,1,2,3,4...m−1格,然而构成的循环有多少个呢考虑旋转的情况,

2016-09-02 14:15:57 1273 1

原创 HDU 4313 Matrix(树形dp)

好久没碰到这样的树形dp了,反而不会了好久没碰到这样的树形dp了,反而不会了 dfs两发的dp固然重要,简单的也不能遗忘啊dfs两发的dp固然重要,简单的也不能遗忘啊 这题给你一棵树,然后边有权值,然后有k个点标记了,要让你花费最小,删除边,是的k个都互相不连通这题给你一棵树,然后边有权值,然后有k个点标记了,要让你花费最小,删除边,是的k个都互相不连通 可以想到状态肯定是dp[i][2

2016-09-01 21:21:53 431

原创 HDU 5550 Game Rooms(dp)

唉上古遗留问题,去年河南现场赛最后没出的那个dp唉上古遗留问题,去年河南现场赛最后没出的那个dp 其实我自己的思路,感觉是在标解的路上,但是有一个关键点没注意到其实我自己的思路,感觉是在标解的路上,但是有一个关键点没注意到 其实这题关键点就是考虑断层的地方,如果第i层是1,可以假设i+1层是2其实这题关键点就是考虑断层的地方,如果第i层是1,可以假设i+1层是2 为什么这么假设呢,因为必定有断

2016-09-01 16:10:33 506

原创 HDU 4035 Maze(树形概率dp+待定系数法求解)

dp求期望的题。 题意: 有n个房间,由n-1条隧道连通起来,实际上就形成了一棵树, 从结点1出发,开始走,在每个结点i都有3种可能: 1.被杀死,回到结点1处(概率为ki) 2.找到出口,走出迷宫 (概率为ei) 3.和该点相连有m条边,随机走一条 求:走出迷宫所要走的边数的期望值。设 E[i]表示在结点

2016-09-01 15:51:14 371

原创 Codeforces 711E ZS and The Birthday Paradox(数学)

这题真是个不错的题,一年有2n天,有k个人,至少两人同一天生日的概率,化成最简分数,上下mod1e6+3这题真是个不错的题,一年有2^n天,有k个人,至少两人同一天生日的概率,化成最简分数,上下mod 1e6+3 首先公式很快可以搞出来1−(2n−1)...(2n−(k−1))2n(k−1)首先公式很快可以搞出来1-\frac{(2^n-1)...(2^n-(k-1))}{2^{n(k-1)}}

2016-08-31 11:48:46 864

原创 51nod 1610 路径计数(容斥+dp)

路径计数 System Message (命题人) 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 路径上所有边权的最大公约数定义为一条路径的值。 给定一个有向无环图。 T次修改操作,每次修改一条边的边权,每次修改后输出有向无环图上路径的值为1的路径数量(对1,000,000,007取模)。 Input 第一行两个整数n和m,分别表示有向无环图上的点数和边数。(1<=

2016-08-31 11:23:02 1494 1

原创 51nod 1661 黑板上的游戏(博弈sg函数找规律)

1661 黑板上的游戏 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 收藏 关注 Alice和Bob在黑板上玩一个游戏,黑板上写了n个正整数a1, a2, …, an,游戏的规则是这样的: 1. Alice占有先手主动权。 2. 每个人可以选取一个大于1的数字擦去,并写上一个更小的数字,数字必须是整数,然后由对方进行下一次操作。 3. 如果擦去的数字

2016-08-29 13:39:02 1119

原创 LightOJ 1284 Lights inside 3D Grid (贡献求期望)

给你一个x∗y∗z的长方体,然后让你先选A点再选B点,然后把AB为两个顶点之间的翻转给你一个x*y*z的长方体,然后让你先选A点再选B点,然后把AB为两个顶点之间的翻转 初始都是0,问你这样操作k次,最后是1的个数的期望初始都是0,问你这样操作k次,最后是1的个数的期望 这题不能正着算期望,因为没法找到转移这题不能正着算期望,因为没法找到转移 所以我们想到求贡献,每个位置,对最后答案的贡献所以

2016-08-26 20:08:03 628

原创 Codeforces 702E Analysis of Pathes in Functional Graph(倍增)

给你一个图,每个点都有一条出边给你一个图,每个点都有一条出边 然后边有权值,让你输出走k步,从i出发走的总距离和其中最小的边是多少然后边有权值,让你输出走k步,从i出发走的总距离和其中最小的边是多少 k很大,图可以预处理,倍增法k很大,图可以预处理,倍增法代码:#include <map>#include <set>#include <stack>#include <queue>#inc

2016-08-26 12:34:48 520

原创 CodeForces 55D Beautiful numbers(数位dp)

数位dp好久没写了都忘了,这题是要这个数被它每一位中非0的数字整除数位dp好久没写了都忘了,这题是要这个数被它每一位中非0的数字整除 如果你不求出整个数字,就不知道他出现了哪几个数字,而且也存不下这一整个数字,怎么办如果你不求出整个数字,就不知道他出现了哪几个数字,而且也存不下这一整个数字,怎么办 1−9的lcm=2520,所以可以先把数字模2520,然后再记录出现数字的lcm1-9的lcm=2

2016-08-26 12:21:13 315

原创 HDU 1255 覆盖的面积(线段树扫描线)

复习一下线段树扫描线的知识,结果发现不会写了复习一下线段树扫描线的知识,结果发现不会写了 这题是求覆盖大于等于两次的面积这题是求覆盖大于等于两次的面积 原来想想很简单,结果发现lazy标记写起来很烦原来想想很简单,结果发现lazy标记写起来很烦 其实扫描先的东西只要记录一下这段区间覆盖几次,然后是覆盖一次的长度len,覆盖大于等于两次的长度inlen其实扫描先的东西只要记录一下这段区间覆盖几次

2016-08-26 12:13:25 393

原创 Codeforces 708C Centroids(树形dp)

给你一棵树,对于每个点,最多修改一条边,能否让这个点成为重心给你一棵树,对于每个点 ,最多修改一条边,能否让这个点成为重心 肯定是树形dp辣,而且是dfs两次肯定是树形dp辣,而且是dfs两次 想一下细节,第一次是从下而上想一下细节,第一次是从下而上 记录子树里的点个数,下面能不能通过换一条边,使得所有连通分量都不超过n/2记录子树里的点个数,下面能不能通过换一条边,使得所有连通分量都不超过n

2016-08-25 19:22:18 1038

原创 Codeforces 707E Garlands(二维树状数组)

给你n∗m的矩阵,然后k个花环,每个有leni个灯,然后一开始都是开的给你n*m的矩阵,然后k个花环 ,每个有len_i个灯,然后一开始都是开的 10W次操作,可以把这个花环的所有灯都变一个状态,然后求子矩阵内有多少亮的10W次操作,可以把这个花环的所有灯都变一个状态,然后求子矩阵内有多少亮的 求和的操作就2000次求和的操作就2000次 想了个20003的暴力肯定不行想了个2000^3的暴力

2016-08-24 14:03:48 863

原创 Codeforces 707D Persistent Bookcase(离线dfs或在线主席树)

离线O(q)的复杂度,先把每次操作都存起来,如果第i次是修改的,那么就i−1朝i建边,如果是op=4,那么就从第k次往第i次连边,然后从第0次开始dfs,每次就先修改O(1)求和,然后往下搜,然后回溯离线O(q)的复杂度,先把每次操作都存起来,如果第i次是修改的,那么就i-1朝i建边,如果是op=4,那么就从第k次往第i次连边,然后从第0次开始dfs,每次就先修改O(1)求和,然后往下搜,然后回溯在

2016-08-23 14:50:20 690

原创 Codeforces 710E Generate a String(dp或bfs)

这题是让你从0得到n,+1−1花费是x,∗2花费是y这题是让你从0得到n,+1 -1花费是x,*2花费是y 首先想到bfs,类似spfa那样更新,但是会T,要加个剪枝就是u−>2u的时候,花费应该是取min(y,x∗u),2u≥n的时候,可以直接更新n的结果,然后继续bfs首先想到bfs,类似spfa那样更新,但是会T,要加个剪枝就是u->2u的时候,花费应该是取min(y,x*u),2u\ge

2016-08-23 14:07:55 523

原创 Codeforces 710D Two Arithmetic Progressions(同余方程组)

x=a1k+b1=a2l+b2x=a_1k+b_1=a_2l+b_2 x=b1(moda1),x=b2(moda2)x=b_1(mod a_1),x=b_2(mod a_2) 同余方程组,两个模数b1,b2不需要处理,直接扔进模版,L=max(max(b1,b2),L)同余方程组,两个模数b_1,b_2不需要处理,直接扔进模版,L=max(max(b_1,b_2),L) 因为k,l≥0,所以L

2016-08-23 13:53:01 837

原创 HDU 5785 Interesting(mancher+等差数列||回文树)

题意是让你在一个字符串里找三元组,(i,j,k),[i...j],[j+1...k]都是回文,求∑∑i×k题意是让你在一个字符串里找三元组,(i,j,k),[i...j],[j+1...k]都是回文,求\sum \sum i\times k这题主要要看成,枚举中间的j,然后找到j两边的所有回文串这题主要要看成,枚举中间的j,然后找到j两边的所有回文串 两种解法:第一种回文树,假设左右的回文串长度为

2016-08-22 14:50:38 1098 1

原创 HDU 5784 How Many Triangles(极角排序)

题意很简单,平面上给你n个点,求锐角三角形的个数,点没有重复题意很简单,平面上给你n个点,求锐角三角形的个数,点没有重复 首先就是随便选三个点C(n,3),可能构成锐角,直角,钝角,并且直角钝角都不会重复计算首先就是随便选三个点C(n,3),可能构成锐角,直角,钝角,并且直角钝角都不会重复计算 所以锐角的个数就是C(n,3)−直角−钝角−三点共线所以锐角的个数就是C(n,3)-直角-钝角-三点共

2016-08-21 15:42:30 614

原创 hihocoder 1356 分隔相同整数(贪心)

描述 给定一个包含N个整数的数组A。你的任务是将A重新排列,使得任意两个相等的整数在数组中都不相邻。 如果存在多个重排后的数组满足条件,输出字典序最小的数组。 这里字典序最小指:首先尽量使第一个整数最小,其次使第二个整数最小,以此类推。输入 第一行包含一个整数N,表示数组的长度。(1 <= N <= 100000) 第二行包含N个整数,依次是 A1, A2, … AN。(1 <= Ai <

2016-08-21 15:24:08 543

原创 HDU 5845 Best Division(dp+01字典树)

这题和百度之星复赛的一个题类似,但是更难这题和百度之星复赛的一个题类似,但是更难 题目让你分成m段,每段长度小于等于L,然后这些分组的最大值要最小,现在告诉你最小是x,让你求m,最多能分成多少段题目让你分成m段,每段长度小于等于L,然后这些分组的最大值要最小,现在告诉你最小是x,让你求m,最多能分成多少段 可以想到n2的dp[n][m]表示到第n个数字能否分成m段然后二分,但是这题不管是时间还是

2016-08-19 14:23:22 934

原创 HDU 5715 XOR 游戏(二分+dp+01字典树)

这题要求的是n长度的序列分成m段,每段长度小于等于L,使得这些段的异或和的最小值最大这题要求的是n长度的序列分成m段,每段长度小于等于L,使得这些段的异或和的最小值最大 最大化最小值,考虑二分答案x,然后分完的m段每段异或和都大于等于x最大化最小值,考虑二分答案x,然后分完的m段每段异或和都大于等于x 然后可以dp[i][k]=max(min(dp[j][k−1],s[i]XORs[j]),dp

2016-08-18 20:13:34 449

原创 HDU 5863 cjj's string game(矩阵快速幂)

这题是典型的矩阵快速幂的数据范围这题是典型的矩阵快速幂的数据范围 可以列出状态转移,dp[i][j][1]=dp[i−1][j−1][1]∗k,i表示到第i个字符,j表示到第i个为止,有几个相同,1表示已经出现了m个相同,dp[i][j][0]表示还没出现m个相同的可以列出状态转移,dp[i][j][1]=dp[i-1][j-1][1]*k,i表示到第i个字符,j表示到第i个为止,有几个相同,1表

2016-08-18 20:06:12 788 3

原创 HDU 5861 Road(线段树)

给你n−1段路,然后每段路有维护费用,然后问你每天最小的维护费用给你n-1段路,然后每段路有维护费用,然后问你每天最小的维护费用 先处理出来每段路,从哪天用到哪天,然后再枚举天数,往线段树里加就行了先处理出来每段路,从哪天用到哪天,然后再枚举天数,往线段树里加就行了 怎么算每段路从哪天到哪天,我没想到线性的方法,还是用了线段树,记录这个点第一次出现和最后一次出现怎么算每段路从哪天到哪天,我没想到

2016-08-18 20:02:09 832

原创 HDU 5860 Death Sequence(递推)

这题是约瑟夫环的变种,线性的删除,每次删到不能删了就从头开始,所以和约瑟夫环有点不同。这题是约瑟夫环的变种,线性的删除,每次删到不能删了就从头开始,所以和约瑟夫环有点不同。 可以用线段树水过去,每次找区间里和为k的位置,然后删除,不知道效率怎么样可以用线段树水过去,每次找区间里和为k的位置,然后删除,不知道效率怎么样 正解是递推,因为是一行一行的删除,所以可以预处理递推出第几个人是在第几层死的,

2016-08-18 19:58:19 855

原创 HDU 5834 Magic boy Bi Luo with his excited tree(树形dp)

题意是给你一个树,让你求出以任意一个点为起点,走到的最大权值和,走过一个点,权值只能获得一次,每走过一条边,就要花费cost题意是给你一个树,让你求出以任意一个点为起点,走到的最大权值和,走过一个点,权值只能获得一次,每走过一条边,就要花费cost 这题需要维护4个数组,dfs两次这题需要维护4个数组,dfs两次 A数组表示从i往下走,回到i的最大权值和A数组表示从i往下走,回到i的最大权值和

2016-08-17 20:36:49 473

原创 Gym 100851L Landscape Improved(二分+脑洞)

这题是给你w列方格,然后给你n个方块,让你加进去,使得这个图变得最高,加的要求是,如果这块的下面,以及左下右下都有,才能放这题是给你w列方格,然后给你n个方块,让你加进去,使得这个图变得最高,加的要求是,如果这块的下面,以及左下右下都有,才能放 先考虑二分高度,然后知道了最高的高度之后,如何考虑n块能不能放呢先考虑二分高度,然后知道了最高的高度之后,如何考虑n块能不能放呢 首先要发现,最后的形状

2016-08-16 21:13:27 1023

原创 HDU 5772 String problem(最大权闭合图)

题意就是让你算找一个得分最大的子串题意就是让你算找一个得分最大的子串 代码:#include <map>#include <set>#include <ctime>#include <stack>#include <queue>#include <cmath>#include <string>#include <vector>#include <cstdio>#include <

2016-08-16 17:46:55 450

原创 HDU 5855 Less Time, More profit(最大权闭合图)

题意就是有n个工厂,m个商店题意就是有n个工厂,m个商店 每个工厂有建造时间ti,花费payi每个工厂有建造时间t_i,花费pay_i 每个商店和k个工厂有关,如果这k个工厂都建造了,那么能获利proi每个商店和k个工厂有关,如果这k个工厂都建造了,那么能获利pro_i 问你求收益(∑pro−∑pay)≥L时,首先满足时间t最小,其次是收益p最大问你求收益(\sum pro-\sum pay)

2016-08-16 17:38:37 831

原创 HDU 5833 Zhu and 772002(高斯消元)

http://acm.hdu.edu.cn/showproblem.php?pid=5833 给你n个数组,n最大300,然后每个数字都是只有2000以内的素因子,让你选一些数字乘起来,是完全平方数,方案数给你n个数组,n最大300,然后每个数字都是只有2000以内的素因子,让你选一些数字乘起来,是完全平方数,方案数 因为2000以内只有304个素因子,然后完全平方数就是这个素因子出现了偶数次,

2016-08-15 21:00:40 397

原创 HDU 5838 Mountain(状压dp+容斥)

网络赛惨遭吊打,这题当时觉得容斥能搞,但是T了,后来才知道应该要状压dp网络赛惨遭吊打,这题当时觉得容斥能搞,但是T了,后来才知道应该要状压dp dp[i][s]表示X的状态为s时,已经填数字填到了i的方案数,但是由于这样填完,会把有的.变成X,所以需要把会变成X的.,容斥考虑进来dp[i][s]表示X的状态为s时,已经填数字填到了i的方案数,但是由于这样填完,会把有的.变成X,所以需要把会变成X

2016-08-15 20:28:38 848 1

原创 Gym 100851J Jump(构造)

这题是个交互题,后台有个长度为偶数n的01串s,让你猜这个串,然后看有多少位对应相同,当只有n/2,n个相同的时候返回n/2,n,否则都是返回0,让你最多用n+500猜,猜到正确答案这题是个交互题,后台有个长度为偶数n的01串s,让你猜这个串,然后看有多少位对应相同,当只有n/2 ,n个相同的时候返回n/2,n,否则都是返回0,让你最多用n+500猜,猜到正确答案 这个构造真的好难啊,首先要找到返

2016-08-15 20:12:10 800

原创 POJ 3783 Balls(dp)

这题和前一题一样,这题是说在1−M层里有找第一层会摔坏球的,并且只用B个球,需要多少次。这题和前一题一样,这题是说在1-M层里有找第一层会摔坏球的,并且只用B个球,需要多少次。 状态dp[m][b]表示现在测试的楼层是1−m层,并且还有b个球状态dp[m][b]表示现在测试的楼层是1-m层,并且还有b个球 题目里说在最坏的情况下,尽可能少的次数,所以表明,应该在这些层里面选择最优的一层,但是对于

2016-08-15 20:03:55 624

原创 HDU 5781 ATM Mechine(概率dp)

这题是一个比较难的概率题,你只知道上限是k,并且被警告的次数最多是w次,然后问你最优策略下取完所有钱的次数的期望这题是一个比较难的概率题,你只知道上限是k,并且被警告的次数最多是w次,然后问你最优策略下取完所有钱的次数的期望 dp[k][w]表示钱的范围是0−k,剩余w次警告的机会的期望dp[k][w]表示钱的范围是0-k,剩余w次警告的机会的期望 dp[k][w]=minki=1dp[k−i]

2016-08-12 14:30:01 414

原创 HDU 5823 color II(枚举子集状压dp+染色数)

http://acm.hdu.edu.cn/showproblem.php?pid=5823这题是求一个子图的最少染色数,开头觉得,这不就是搜索么,O(n2)O(n^2)的复杂度,但是后来听说最小染色数是np问题,如果搜索可以解决这不就是多项式了么,GG正确方法应该是枚举独立的子集,O(3n)O(3^n)的复杂度,独立的子集是里面的点两两之间都没有边,所以这个子集可以涂同一种颜色,所以转移就是f[s

2016-08-12 13:37:58 711

原创 HDU 5821 Ball (贪心)

http://acm.hdu.edu.cn/showproblem.php?pid=5821 把区间里的数字随便改变位置,问m次操作之后a数组能不能得到b数组。 这题应该是贪心,开头的想法是把a数组操作的区间排序,然后b数组操作的也去排序,然后看是否相同,但是这样就错了。因为b数组,排序之后就会乱了,而且这题有很多球是一样的,为了区别,需要把一样的球变成不同的。假设有4个红球,初始时从左到右标为

2016-08-12 13:30:45 444

原创 HDU 5802 Windows 10(dfs)

这题告诉你从p到q,往上走只能+1,往下是1,2,4,8。。。这样 可以停顿,凡是停顿和+1,都会打断往下走的等比数列,问你最少多少步到达q。如果p在下面,那么只能往上走,如果p在上面的话,题解说只有两种情况,一种是往下走,然后往上走,一种是往下走,然后停顿,然后往下走。 所以可以分成两个问题,当前,是走到底,然后网上走更优,还是停顿,然后再往下走。 对于最后的往上走,如果前面有停顿,可以把前

2016-08-10 15:27:48 406

空空如也

空空如也

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

TA关注的人

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