自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 codeforces 601A(脑筋急转弯 , 55)

题目意思,给了最多400个点的完全图,但是每条边可能是公路也可能是铁路,求1个火车和一个汽车同时都从1出发到n中间不走到重复点的最短时间. 1 - n 这条边必定是铁路或公路,然后就没有然后了。 下面是自己傻X用压缩了一下转移写的。直接辆车出发最短时间到n 的最小值即答案、 #include using namespace std; typedef long long ll; ty

2015-11-26 10:59:42 481

原创 HDU 4906(状态压缩题目)

本题目虽然是个简单的状态压缩规划题目: 但是逆向的递推式即刷表有一个很明显的优化,但是正向的话就不会有,就因为这个剪纸有没有变可以导致超时,也是醉了。 很明显d[i][s] 代表用i个位置生成生成集合s中的数的所有方法。 但正向的定义不一样,d[ i] [ s ] 代表用i个位置生成了集合s,还有n - i 个位置没用的可行解数目。 显然第一个状态在实现时,用刷表法.复杂度都是n*n*(1

2015-11-25 11:54:19 352

原创 BNU 34990(字符串题目)

题意: 给定两个串(串长都小于1e5) , 从第一个串0位置开始如果该位置开始与第二个串“匹配”(至多两个位置字母不同) , 记为一个可行点, 那么求最小可行点。 分析: 直接枚举位置,我们发现当前被枚举的点,有一个确定性因素,即把该点当做了起始匹配位置(这一点非常重要),那么最长会有多长哪,贪心的想法想一下,即可。 #include using namespace std; typ

2015-11-17 11:16:17 339

原创 codeforces 587B(dp)

题意: 这个题目的意思是给定一个长度为n(n 要求从b中选出x个数1 使得这个x个数字非递减,且 下标 floor(pi) + 1 = floor( pi+1); (n*k 分析: 首先我们来看一下条件,数组b可以看做由很多a数组在右面拼接而成,若p1 位置为 0 -> n-1 , 那么p2 的位置为 n -> 2*n -1; 即每n个数中选一个生成新数列,且必须连续的“块” 中选择

2015-11-10 16:10:09 564

原创 codeforces 587C(树上的倍增算法)

分析: 同LCA相似的思路,维护st[ i ][ j ] 代表从节点i往上(不包含i)走2^j个节点前十个最小值集合,这样一直倍增着往上走秩序logn次集合合并即可。 #include #define fst first #define snd second #define ALL(a) a.begin(), a.end() #define clr(a, x) memset(a, x, s

2015-11-09 22:08:23 1297

原创 codeforces 593E(矩阵类题目)

给定一个R * C不超过20的图,一开始人在(1,1)然后给出之多100000个时间序列(按时间递增给出), 每个时间可能发生的事情是在某个位置出现猫(有猫的地方人不能存在),猫在某个位置消失,询问人从1,1点在1时刻出发在t时刻可以走到(x , y)的所有可行性路径数目。 分析: 典型的矩阵转移题目。 初始时用一个人d[ i ][ j]....代表人从1,1出发走了当前步数,可以走到1的

2015-11-09 17:45:32 541

原创 codeforces 593D(并查集 + LCA)

题意不在描述. 首先我们注意到改变每个点的值时,只会变的更小,每次要除的数为1e18 , 由于log2(1e18) <= 60 .那么最多只需要除以至多60次大于等于2的数变回变成0,所以我们 只以任意一点为根建立有根树,并且在每次遍历一条链时进行压缩,当该路经值为1,应该被压缩,每次走到多余六十个点直接结束。 #include #define fst first #define snd

2015-11-09 10:19:21 742

原创 Aizu 2595(容斥原理)

题目意思: 计算 x1 + x2 + .. xD =N (xi 分析: 我们有这样的一个思路,求d[i][j]代表用i个空位放置j个每个都非空,且为合法放置的个数,那么res = sum( d[i ][ n ] *C(D , i)); 那么我们来分析一下容斥的思路。 容斥首先确定,性质,和结果怎样用性质表示。 定义 , Ai 为第i天放置的元素小于X, 那么ans = 所有D个集合的交

2015-11-08 20:17:07 467

原创 hdu 5525(数学题)

思路很简单啊,为了好计算,考虑每个素因子出现的次数,然后很容易想到递推方法。 这个题目: 1 , pow_mod(a , b , mod) 当mod是素数时且b远大于mod 那么 pow_mod(a, b,mod ) = pow_mod(a , b%(mod-1),mod); 2 , 求1 ->x 的和不能直接x*(x+1)/2 % mod ; 因为有除法啊。 #include u

2015-11-06 21:53:10 537

原创 codeforces 593B(思路)

题意: 给定n条直线( y = kx + b) (n 分析: 首先每条线段与直线y = x1 , y=x2的 两个交点的y坐标记为(y1 , y2 ) 可以这样来看存在两个直线在x1,x2之间的截线段相交, (y1, y2) ,(y11 , y22) 若y1 > y11 , 那么必有y2 #include using namespace std; typedef long lon

2015-11-06 19:22:17 780

原创 codeforces 590C(bfs)

本体题意不再描述。 把三个国家缩成三个点,那么把这三个点连起来,只有两种方法,可以尝试画一下,然后思路就很明显了。 #include #include #include #include #include using namespace std; typedef long long ll; #define rep1(i,x,y) for(int i=x;i<=y;i++) #defi

2015-11-05 10:54:18 638

原创 codeforces 589H(dfs and simliar)

题意: 给定一个n 点m条边的图(n , m 一个通路最多的合法方案。 分析: 首先这样的题目没有一点树和图上的意识,空想很难。 因为不连通子图之间不建立通路,我们只需考虑一个子联通分量。 假设这个联通分量有c个标记点,我们可以在其改联通分量的任一生成树中找到一组这样的解,有c/2条合法通路,显然如果这样能够构造成功一定最优。 那么在这这颗生成树上该如何构造? 首先定义dfs(u

2015-11-03 16:38:11 715

原创 codeforces 589C(divide and conquer)

题意: 给定一个长度不超过100的原串,让重复复制现在的串,然后向右循环移动pi次,粘贴到串的右端,重复该过程n次(每次串长都将翻倍), 给定m(m 分析: 由于(1 可以这样来看问题 记 f(i) 为从初始位置开始特定字母出现的次数,ans = f (r) - f(l-1); 这样的查询,使我们想着能不能够递归60层,不分叉的统计出结果, 答案是可以的 , 注意到 深度为 i

2015-11-03 11:29:32 494

原创 codeforces 592D(树上的思路题)

题意: 给出一颗n(n 分析: 首先我们来看一下,要把这m个点联通需要的最小联通子树的边是必须遍历到的,从其他不在该子树上的点出发,这些边也必须遍历到,那么从子树上一最远点出发最优。 因为从一点出发的答案为  遍历到的边数*2 - 从该点出发的做能到达的最远点所需边数。 所以从该公式可以很明显发现,在最小联通子树上的一个最远点出发最优。 #include #include #inc

2015-11-03 08:41:32 595

空空如也

空空如也

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

TA关注的人

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