上一页 1 2 3 4 5 6 7 8 9 10 ··· 13 下一页
摘要: DIV2 1000pt题意:给定整数n和r,求有多少个这样的数列,a1,a2...an,使得a1 + a2 +...+an = a1|a2|a3|...|an,(按位或)。输出这样数列的个数mod1000000009。 n 12 #include 13 #include 14 #include 15 #include 16 #include 17 #include 18 #include 19 #include 20 #include 21 #include 22 #include 23 #include 24 #include 25 #include 26 ... 阅读全文
posted @ 2013-12-13 20:18 Plumrain 阅读(179) 评论(0) 推荐(0) 编辑
摘要: DIV2 1000pt题意:在一个长度无限的数轴上移动一个方块,每次可以向左或者向右移动距离x,只要x为完全平方数。数轴上有一些坑,如果方块移动到坑上则方块会掉进坑中,不能再被移动。给整数s,e,和所有坑的位置hol[i],求最少多少步能够将方块从s点移动到e点,若不能从s移动到e,则返回-1。1 e,则将无限的数轴变为有限的,且1 e,和不存在hol[i] e是等价的情况。这个很容易想明白,比如,从10转化到21,可以10 -> -15 -> 21,也可以10 ->46 -> 21。 所以,剩下最后一种情况等价于,数轴上没有坑。设d = e - s,则无论如何,三步之 阅读全文
posted @ 2013-12-13 12:26 Plumrain 阅读(214) 评论(0) 推荐(0) 编辑
摘要: DIV2 1000pt题意:一群人排队,每次操作由要骰子决定,只要没有人中奖,游戏就不结束。若摇骰子摇出4,则队列第一个人中奖;否则,若摇的是奇数,则第一个人排队到队伍末尾去;否则,第一个人出局。若游戏途中,队列只剩一个人,则直接中奖。若摇了k次骰子仍然没人中奖,则此时队列第一个人自动获奖,游戏结束。给出k,问队列初始时为n个人,此时排在第m个的人中奖的概率有多大。n, m, k 12 #include 13 #include 14 #include 15 #include 16 #include 17 #include 18 #include 19 #include 20 #include 阅读全文
posted @ 2013-12-12 23:12 Plumrain 阅读(222) 评论(0) 推荐(0) 编辑
摘要: 最小生成树的概念 给定无向图G = (V, E),连接G中所有点,且边集是E的子集的树称为G的生成树,而权值和最小的生成树称为最小生成树,即MST。 构造MST的方法有很多种。常用的有Kruskal算法和Prim算法,前者好写,时间复杂度为O(m),后者稍微难写,时间复杂度O(n*n)。(n为树的节点数,m为边数)。 Kruskal算法(摘自刘汝佳白书P199): 算法的第一步是给所有边按照从小到大的顺序排序,然后从小到大考查所有边。考查到边(u, v)的时候有两种情况: 情况1:u, v此时属于同一个连通分量中,则加入(u, v)会形成环,不能加入该边。 情况2:u... 阅读全文
posted @ 2013-12-12 20:18 Plumrain 阅读(709) 评论(0) 推荐(0) 编辑
摘要: DIV2 1000pt题意:一个由n*m的网格组成的棋盘,有四种点,'.'表示空点,'#'表示是墙不能走,'$'表示起点(同样是空点),'1'~'9'表示该点有复活时间为t的怪兽。每次,可以从一个点走到其上下左右的四个点,只要他们在棋盘上且不是墙,这样记为走了一步。如果走到的点有怪兽i,则杀死它,在杀死该怪兽以后,如果人又走了ti步(ti为该怪兽的复活时间)则该怪兽会复活,如果第ti步恰好走回到含有怪兽i的该点,则怪兽i会被再次杀死。问最少要多少步,才能使得整个棋盘上所有怪物同时处于死亡状态。如果不行,输出-1。 阅读全文
posted @ 2013-12-12 01:03 Plumrain 阅读(258) 评论(0) 推荐(0) 编辑
摘要: DIV2 1000pt题意:对于一个n*m的矩阵,每个格子都有一个颜色B或者W。对矩阵A执行以下程序后变成矩阵B。给出矩阵B,求A。(若有多种情况,输出字典序最小的)。(n,m 12 #include 13 #include 14 #include 15 #include 16 #include 17 #include 18 #include 19 #include 20 #include 21 #include 22 #include 23 #include 24 #include 25 #include 26 #include 27 #include 28... 阅读全文
posted @ 2013-12-09 23:51 Plumrain 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 题意:在0~(n-1)中选择k个数,使得他们的和为n的倍数的选择方案有多少种。(n 12 #include 13 #include 14 #include 15 #include 16 #include 17 #include 18 #include 19 #include 20 #include 21 #include 22 #include 23 #include 24 #include 25 #include 26 #include 27 #include 28 #include 29 #include 30 #include 31 #includ... 阅读全文
posted @ 2013-12-09 10:47 Plumrain 阅读(235) 评论(0) 推荐(0) 编辑
摘要: DIV2 1000pt题意:给定两个集合A和B,A = {b1*q1i| 0 里面,返回set.size()即可,时间复杂度O(n1 + n2)。我们需要找到一种表示这些大数的方法。考虑整数的唯一分解式。 每个整数可以表示成(a1^p1) * (a2^p2) * (a3^p3) *..* (ak^pk)的形式,也就是说,我们只需要统一所有会用到的质数,然后把p1,p2..pk放到一个vector里面,就可以表示每个整数。然后用一个set >即可统计元素的个数。tag: math, set 1 // BEGIN CUT HERE 2 /* 3 * Author: plum rain... 阅读全文
posted @ 2013-12-07 10:38 Plumrain 阅读(249) 评论(0) 推荐(0) 编辑
摘要: 题意:给一个图,判断它的最小生成树唯一不唯一。解法:首先,容易想到一个O(n^3)或者说O(m*n^2)的方法。就是首先,求一遍最小生成树,记权值和为x1,然后枚举最小生成树中的每一条边,在不用该边的情况下求出的最小生成树权值和为x2,若枚举到某条边的时候x1 = x2,则最小生成树不唯一。若全不相等,则唯一。 但是,觉得这个方法太慢了,上网搜索了一下搜到了这篇文章,https://www.byvoid.com/blog/2-sp-mst,求次小生成树。(这道题相当于判定最小生成树和次小生成树权值和是否相等) 上面那篇文章的方法,中心思想在于:枚举每条不在最小生成树中的边,若将它加入最... 阅读全文
posted @ 2013-12-04 23:55 Plumrain 阅读(273) 评论(0) 推荐(0) 编辑
摘要: 题意:在一个n*m的网格上,从(0,0)走到(n-1,m-1),每次只能向右或者向下走一格。一个人最初有一个生命值x,走到每一个格生命值会变为x + s[i][j],(s[i][j]可为负,0,正),若生命值小于等于0,则人死亡。告诉网格上所有s[i][j],求x的最小值使得该人能够或者走到(n-1,m-1)。|s[i][j]| 0) d[i][j] = max(d[i][j], d[i-1][j] + s[i][j]), if (d[i][j-1] > 0) d[i][j] = max(d[i][j], d[i][j-1] + s[i][j])。初始化时将所有d[i][j]赋值为-1。 阅读全文
posted @ 2013-12-03 20:51 Plumrain 阅读(174) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 10 ··· 13 下一页