自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

scf0920

退役ACMer渣

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

原创 FZU 2040 Tiling (矩阵快速幂)

题目地址:FZU 2040 重点在于构造矩阵,先状压,然后根据每一行是否与下一行分割了来构造一个2^(m-1)*2^(m-1)的矩阵,然后套上矩阵快速幂就可以了。937ms险过。。 代码如下:#include <iostream>#include <string.h>#include <math.h>#include <queue>#include <algorithm>#includ

2015-03-31 17:32:01 923

原创 FZU 2041 Checker (贪心+模拟)

题目地址: FZU 2041 这个题是昨天的队内选拔赛用的套题里的其中一道题,我当时想到方法了,但是没敢写。。一个是对复杂度有些不确定,万一组数很多的话好像就会跪。。而且感觉不太好实现,队里还卡着两道题,就打算等别的该出的题出了之后再写,结果没时间了。。 刚才按照那思路写了一下。。结果就过了。。。我&……%¥%**……%% 思路是先枚举每个空隙,

2015-03-30 20:40:28 831

原创 HDU 5195 DZY Loves Topological Sorting (拓扑排序+线段树)

题目地址:HDU 5195 简直受不了了。。BC第二题都开始线段树+拓扑排序了。。。 这题很容易想到拓扑排序过程中贪心,但是贪心容易TLE,所以需要用数据结构去维护,我用的是线段树维护。每次找入度小于等于k的编号最大的点,这样就可以保证字典序一定是最大的。 代码如下:#include <iostream>#include <string.h>#include <math.h>#inclu

2015-03-30 15:46:57 898

原创 Codeforces Round #297 (Div. 2) D题. Arthur and Walls(BFS)

题目地址:Arthur and Walls 这题有一个脑洞,对于当前的点(i,j)并且此点为”*”来说,若存在包含它的2*2正方形中除了它自己外,另外三个点都是”.”,那么这个点就必须要变成”.”。由于去掉这个点之后会对周围的8个点造成影响,所以可以用BFS去搜。WA第12组的应该是只考虑了会影响到周围的4个点了。 代码如下:#include <iostream>#include <strin

2015-03-28 10:36:18 1324

原创 HDU 2586 How far away ? (LCA最近公共祖先)

题目地址:HDU 2586 LCA第一发。 纯模板题。 偷懒用的vector,结果一直爆栈。把G++改成C++就过了。。 代码如下:#include <iostream>#include <string.h>#include <math.h>#include <queue>#include <algorithm>#include <stdlib.h>#include <map>

2015-03-27 21:24:09 785

原创 Codeforces Round #297 (Div. 2) E题. Anya and Cubes (中途相遇法)

题目地址:Anya and Cubes 比赛的时候居然没想起中途相遇法。。。这题也是属于想起来就很简单系列。 中途相遇法也叫折半搜索。就是处理前一半,把结果储存起来,再处理后一半,然后匹配前一半存储的结果。 代码如下:#include <iostream>#include <string.h>#include <math.h>#include <queue>#include <algo

2015-03-27 21:12:08 1259

原创 (福大2015年3月月赛)FZU 2185 树的路径覆盖 (DFS)

题目地址:FZU 2185 允许重复覆盖的值比较好求,一条路径覆盖两个叶子节点,所以答案是(叶子结点数+1)/2。至于不允许重复覆盖的,我第一次想的是叶子节点数-1,因为先让第一条覆盖两个叶子结点,后面的每条覆盖一个,但是显然作为渣渣的我太native了。 很显然,当所有叶子节点都指向一个节点的时候肯定不是,这时候可以一条路径覆盖两个叶子节点。

2015-03-24 21:11:17 934

原创 (福大2015年3月月赛)FZU 2186 小明的迷宫 (BFS+状压DP)

题目地址:FZU 2186 这题是很基础的TSP状压,各个点之间的距离要先用BFS预处理出来。 这题在写memset(dp,INF,sizeof(dp));时,写成了memset(dp,INF,sizeof(d));。。。 调试了好长时间。。无语了。。。最近的状态太不行了。。 代码如下:#include <iostream>#include <string.h>#include <mat

2015-03-24 17:12:13 1109

原创 HDU 5188 && Bestcoder #33 C题. zhx and contest (01背包)

题目地址:HDU 5188 按照l-t排序,l-t即最早开始的点。排完序后就是一个单纯的01背包了。 代码如下:#include <cstdio>#include <cstring>#include <cmath>#include <queue>#include <stack>#include <map>#include <algorithm>#define INF 0x3f3f3

2015-03-23 21:28:18 811

原创 ZOJ 3841 Cards (组合数+乘法逆元)

题目地址:ZOJ 3841 这题很快就写出来了,但是我犯了一个很**的错误,忘了把0的阶乘设为1。。卡了整整两个小时。。。写完题解就去面壁思过。。不要拦我。。 这题的思路是从前往后遍历,对于第i位来说,从比他小的牌开始枚举,枚举的比当前牌小的话,那么后面的放什么都可以,所以求全排列,求全排列的过程中要用到乘法逆元(幸亏CF补题场场不落。。最近从CF补题中学会的。。

2015-03-23 19:21:35 1232

原创 HDU 5187 zhx's contest(快速乘法)

题目地址:HDU 5187 分凸型与凹型讨论,对于每一种来说,分别有C(n-1,0)+C(n-1,1)+…+C(n-1,n-1)=2^(n-1)种情况,然后合起来共2^n种情况,有两种重复的,所以共2^n-2中情况。于是快速幂,但是由于mod为LL 型,在快速幂过程中会爆LL。所以在快速幂的乘法时,用快速乘法,原理跟快速幂一模一样。 代码如下:#include <iostream>#inclu

2015-03-23 15:35:56 780

原创 POJ 1904 King's Quest (强连通分量)

题目地址:POJ 1904 很神奇的一道题啊。至于详解看这篇博客吧,传送门写的非常详细。 代码如下:#include <iostream>#include <string.h>#include <math.h>#include <queue>#include <algorithm>#include <stdlib.h>#include <map>#include <set>#in

2015-03-20 20:35:51 892

原创 POJ 2762 Going from u to v or from v to u?(强连通分量+拓扑排序)

题目地址:POJ 2762 先缩点,然后判断拓扑网络每层的个数是否为1(我承认如果事先不知道这题需要拓扑排序我是想不出来这点的。。。)。因为假如有一层为2的话,那么从此之后这两个岔路的点就不可能从一点到另一点的。 代码如下:#include <iostream>#include <string.h>#include <math.h>#include <queue>#include <al

2015-03-13 20:33:38 894

原创 HDU 1428 漫步校园 (BFS+优先队列+记忆化搜索)

题目地址:HDU 1428 先用BFS+优先队列求出所有点到机房的最短距离,然后用记忆化搜索去搜。 代码如下:#include <iostream>#include <string.h>#include <math.h>#include <queue>#include <algorithm>#include <stdlib.h>#include <map>#include <set

2015-03-13 11:17:11 788

原创 POJ 3666 Making the Grade (DP+离散化)

题目地址:POJ3666 dp[i][j]表示第i位时,值为j时的最小代价。因为j太大,由于要改变值的话,变到与之最近的值相同是最优的,所以可以离散化,这样,j对应了各个值得下标。复杂度O(n^2)。 代码如下:#include <iostream>#include <string.h>#include <math.h>#include <queue>#include <algorith

2015-03-13 09:52:28 1215

原创 POJ 2375 Cow Ski Area (强连通分量)

题目地址:POJ 2375对每个点向与之相邻并h小于该点的点加有向边。然后强连通缩点。问题就转化成了最少加几条边使得图为强连通图,取入度为0和出度为0的点数的较大者即可。注意,当强连通分量只有一个的时候,答案是0,而不是1.代码如下:#include #include #include #include #include #include #include #includ

2015-03-12 19:05:57 887

原创 POJ 2186 Popular Cows (强连通分量)

题目地址:POJ 2186先用强连通分量缩点,然后形成一棵树。我第一次用的判定条件是入度为分量数-1。虽然这种情况下确实正确。但是在树中也是有间接关系的。这个条件并不是充分必要条件。正确的做法是逆序建树,然后找根结点。而且根结点有且只有一个才可以。所以转化成了找出度为0的分量。代码如下:#include #include #include #include #include

2015-03-12 16:08:31 662

原创 POJ 2553 The Bottom of a Graph (强连通分量)

题目地址:POJ 2553题目意思不好理解。题意是:G图中从v可达的所有点w,也都可以达到v,这样的v称为sink。然后升序输出所有的sink。对于一个强连通分量来说,所有的点都符合这一条件,但是如果这个分量还连接其他分量的话,则肯定都不是sink。所以只需要找出度为0的强连通分量即可。代码如下:#include #include #include #include #in

2015-03-12 15:29:12 909

原创 HDU 2242 考研路茫茫——空调教室 (双连通分量+树形DP)

题目地址:HDU 2242先用双连通分量缩点,然后形成一棵树,然后在树上做树形DP,求出每个点的子树和。然后找最小值即可。需要注意一下重边的问题,第一次返回父节点时可以忽略,因为这是反向边,然后之后再返回的时候就不是反向边了。不能忽略了。代码如下:#include #include #include #include #include #include #include

2015-03-12 09:46:21 1360

原创 POJ 3177 Redundant Paths (双连通)

题目地址:POJ 3177找出各个双连通分量度数为1的点,然后作为叶子节点,那么ans=(叶子结点数+1)/2。需要注意的是有重边。代码如下:#include #include #include #include #include #include #include #include #include using namespace std;#define LL l

2015-03-11 17:40:08 786

原创 Codeforces Round #177 (Div. 1) B. Polo the Penguin and Houses (组合数学)

题目地址:http://codeforces.com/contest/288/problem/B首先,前面的k个与后面的n-k个是没关系的,后面的n-k个显然是(n-k)^(n-k),所以只需看前k个,而由于2-k都可以到达1,所以1放1-k都可以,所以这时只研究2-k个。     由于都要到达1,所以2-k必须有1,这时候讨论有多少个1,如果有x个1,则此时是C(k-1,x),然后再讨论

2015-03-07 13:50:18 1959

原创 HDU 3639 Hawk-and-Chicken (强连通分量+树形DP)

题目地址:HDU 3639先用强连通分量缩点,缩点之后,再重新按缩点之后的块逆序构图,每个块的值是里边缩的点的个数,那么得到选票的最大的一定是重新构图后入度为0的块,然后求出来找最大值即可。代码如下:#include #include #include #include #include #include #include #include #include usin

2015-03-06 19:41:19 1080

原创 Codeforces Round #295 (Div. 1) C. Pluses everywhere (组合数学+乘法逆元)

这题可以这样想:      对于当前第i位来说,该位若在个位上出现,那么第i位和第i+1位中间肯定有一个“+”,剩下的k-1个“+”分布在剩下的n-2个空隙中,所以出现的总次数是C(n-2,k)。同理,在十位上出现的总次数是C(n-3,k)。于是每个数字的贡献值就可以求出来了,累加即可。      所以大体思路是遍历所有可能出现的位数,从个位开始,分成两部分计算,一部分用前缀和计算出前面所

2015-03-05 20:05:30 1045

原创 Codeforces Round #295 (Div. 1) B. Cubes (STL+类拓扑)

最近课业繁重,这题写了两天。。昨晚睡觉的时候才突然想到了最后一点的解决方法。不知道该不该叫做拓扑。。感觉还是挺像的。。就把标题称之为类拓扑了。。这题的方法是用map来标记状态是否存在,然后用类似拓扑的方法不断的找拿走后依然稳定的方块,我用了两个优先队列来维护,分别取最大和最小。然后就是模拟这个过程取方块了。代码如下:#include #include #include #incl

2015-03-05 16:10:56 916

空空如也

空空如也

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

TA关注的人

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