自定义博客皮肤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的专栏

马天猫重新起航

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

原创 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 819

原创 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 1476 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 1099

原创 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 616

原创 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 492

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

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

2016-08-26 12:21:13 302

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

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

2016-08-26 12:13:25 385

原创 Codeforces 708C Centroids(树形dp)

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

2016-08-25 19:22:18 1024

原创 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 801

原创 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 658

原创 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 487

原创 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 759

原创 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 1037 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 588

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

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

2016-08-21 15:24:08 529

原创 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 923

原创 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 441

原创 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 773 3

原创 HDU 5861 Road(线段树)

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

2016-08-18 20:02:09 788

原创 HDU 5860 Death Sequence(递推)

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

2016-08-18 19:58:19 814

原创 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 463

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

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

2016-08-16 21:13:27 980

原创 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 436

原创 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 813

原创 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 391

原创 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 785 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 762

原创 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 588

原创 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 400

原创 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 681

原创 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 429

原创 HDU 5802 Windows 10(dfs)

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

2016-08-10 15:27:48 393

原创 HDU 5800 To My Girlfriend(dp)

∑ni=1∑nj=1∑nk=1∑nl=1∑sm=1f(i,j,k,l,m)(i,j,k,laredifferent)\sum_{i=1}^{n}\sum_{j=1}^{n}\sum_{k=1}^{n}\sum_{l=1}^{n}\sum_{m=1}^{s}f(i,j,k,l,m)\quad (i,j,k,l\quad are\quad different) 意思是让你找集合的数量,使得集合里有两个

2016-08-10 15:18:59 425

原创 HDU 5812 Distance(求约数+枚举gcd)

http://acm.hdu.edu.cn/showproblem.php?pid=5812题意很明确,首先要知道d(a,b)=f(a/gcd(a,b))+f(b/gcd(a,b))d(a,b)=f(a/gcd(a,b))+f(b/gcd(a,b)),这个f(x)表示x由几个素因子构成,可以预处理出来100W以内的所有f,用线性筛。 然后对于每次Q操作的x,可以枚举它的gcd y,然后去集合里找y

2016-08-10 13:20:18 700

原创 HDU 5794 A Simple Chess (容斥+lucas定理)

题意:给你一个很大的棋盘,然后让你走日字,从(1,1)走到(n,m),有多少种方法,但是里面有一些障碍,不能走到障碍处走的方法,那肯定是lucas定理求组合数就行了,但是不走到障碍,就这就需要容斥了,但是有100个障碍,肯定不是那种二进制枚举的容斥,应该是先把所有的障碍排序,然后dp[i]表示走到这个障碍物处,不经过前面所有的障碍物的位置。 所以这题就是100*100的枚举dp容斥,先算出来从(1

2016-08-10 12:53:41 420

原创 51nod 1806 wangyurzee的树(prufer编码求生成树的个数)

1806 wangyurzee的树 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 收藏 关注 wangyurzee有n个各不相同的节点,编号从1到n。wangyurzee想在它们之间连n-1条边,从而使它们成为一棵树。 可是wangyurzee发现方案数太多了,于是他又给出了m个限制条件,其中第i个限制条件限制了编号为u[i]的节点的度数不能为d[i]。

2016-08-10 12:47:09 950

原创 51nod 1607 卷积和(枚举搜索)

1607 卷积和 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 收藏 关注 杰西最近在研究卷积,例如一个数字1234,那么经过杰西的变换后,就会变成1*4+2*3+3*2+4*1,例如一个数字是234,那么就会变成2*4+3*3+4*2。 形象化的,我们可以设f(x)表示x经过杰西变换后的值。用公式表示 x=dn−1dn−2…d2d1d0 那么 f(x)

2016-08-10 12:28:01 1252

空空如也

空空如也

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

TA关注的人

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