自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 可重复覆盖的DLX

在精确覆盖的基础上只修改remove() 和resume() 就好了,每次选中一行,只把这一行对应的列以及这一行删除即可。很显然的,这样降低了矩阵缩小的速度,但是出现A*优化的补救方法,H()是在VJ上扒下来的,233。#include #include #include #include #include #include #include #include #inclu

2015-01-26 08:33:52 1172

原创 初涉关于精确覆盖的DLX

Dancing Links,跳动的舞者,的确是很飘的一种数据结构。DL是双向循环十字链表,其作用大体就是对精确覆盖算法的一种优化,在递归搜索的过程中利用链表容易删增的特性提高了精确覆盖算法的效率。强烈推一篇博客,讲述的很详细,弱就不多说了。http://www.cnblogs.com/grenet/p/3145800.html模板贴起来,自己写的有点挫。#i

2015-01-25 13:31:45 1011

原创 Codeforces 506D Mr. Kitayuta's Colorful Graph 并查集+水水的分类讨论+水水的离线预处理

首先读入所有的边与询问。将边按颜色分类。按颜色进行并查集,若此并查集内的点若此并查集内的点  > 100,则将与这些点相关的所有询问查一遍。那么时间复杂度为100*100/2*(M/100),或者为M/100*Q。极限的时候两种方法都在一亿左右了,而且每次还需要在map里搞一搞,还要查询是否联通,不知道为啥没有超时。。#include #include #include

2015-01-21 09:32:05 1047

原创 Codeforce 505D - Mr. Kitayuta's Technology 弱联通分量+拓扑排序

对于有向图M,若将其所有的边转化为无向边,则得到其基图M‘,若M’是联通的,则称有向图M是弱联通。对于有向图M,若图中任意两点u,v(u != v)均满足u到v可达,v到u可达,则称此图为强联通。根据以上定义显然可知,强联通图一定也满足弱联通。此题首先我们需要找到其所有的弱联通分量。对于每一个弱联通分量,设此弱联通分量内点的个数为ans,如果此联通分量无环,则需要的边数为ans

2015-01-20 17:14:01 1737

原创 Codeforces 55D Beautiful numbers 数位DP

自从去年4月份学姐教完我数位DP,还是第一次写出这么漂亮的代码,也是醉了。首先你要知道sum%(x*n) %x == sum%x,这样就可以在dfs的时候记录2到9的最小公倍数2540取余了。#include #include #include #include #include #include #include #include #include #pragma c

2015-01-19 20:47:42 741

原创 498C - Array and Operations 质因子分解+最大流

题目中说每一个good pair 都满足(u+v)%2 == 1,即一个奇数,一个偶数。首先我们要拿出一原点S,汇点T,S联到所有的num[odd]的质因子上,T联到所有的num[even]的质因子上,边的流量为num[i]中相应质因子的个数。再根据给出的,假设u为奇数,则从u的质因子上联到相等的v的质因子上,流量为INF。丢到模板里跑一遍就好了。#include #includ

2015-01-17 15:30:14 941

原创 Codefoeces 387E - George and Cards 贪心+线段树

首先要知道每次拿走最小才会达到最优,因为最小的不会给其他的提供任何加分,只有可能减小加分。删除卡片的次序确定了,剩下的就是确定每段区间的左右端点。pos[i] 表示数字 i 在初始序列中的位置。首先枚举i (i = 1 -> n),如果不需删除,则将pos[i]放入set S中,如果不需删除,则在S中二分查找上下界。总的时间复杂度为o(  (n-k)*log(k)  )

2015-01-17 08:31:33 813

原创 Topcoder SRM646 div1 600 bfs+剪枝

因为只有47个blocks,所以现在小范围内,即在-50 #include #include #include #include #include #include #include #include #include #include #include #pragma comment(linker,"/STACK:1024000000");#define EPS (

2015-01-17 08:22:31 749

原创 396A On Number of Decompositions into Multipliers 组合

首先将所有的数进行质因子分解,统计每个质数出现的次数。假设第i个质数Pi出现了m次,则可以转化为将m个相同的球放入n个不同盒子的问题,允许盒子唯恐,即不放球。那么这个问题解即为C(n+m-1,n-1),求解过程如下:首先这个问题 等价于 将n+m个相同的球放入n个不同盒子,每个盒子都至少有一个球。这样隔板法可解,将n+m个球排成一列,然后从n+m-1个缝隙选n-1个插入隔板,这样就

2015-01-16 09:01:47 606

原创 484D - Kindergarten DP

把每一段单调序列分成一组可以接近最优质。然后在此基础上讨论这一段的单调序列的两个端点该分到哪个序列里面,记录一下最优值。#include #include #include #include #include #include #include #include #include #include #include #pragma comment(linker,"/

2015-01-15 20:51:38 734

原创 501D Misha and Permutations Summation 数据结构+打脸题

都快退役啦,小白书上的例题还不会。给出一个序列S,则S的字典序为 sigma(dp[i] * (n-i)!) (1 对于两个序列A,B,(ord(A) + ord(B))%n!可以转化成 sigma( (A_dp[i] + B_dp[i] + (A_dp[i+1]+B_dp[i+1])/(n-i+1))%(n-i+1)  )( 1 解码部分和编码部分为逆操作,详见代码。#inc

2015-01-15 17:08:25 1008

原创 CodeFoces 500E - New Year Domino

首先将所有的牌子放倒,那么花费就是牌子L和牌子R之间的空隙长度。有一种特殊情况,存在牌子P(p 所以我只想到了一种离线算法。cov[i] 记录覆盖牌子i的编号。dis[i] 记录推到牌子i所能到达的最远距离。cost[i]记录L= i,R = n 时的最小花费。首先预处理出dis[i],cost[i]。然后将询问按L排序,然后从右到左枚举牌子。枚举时不断更新cov[

2015-01-11 10:03:27 1153 1

空空如也

空空如也

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

TA关注的人

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