自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

LoveKobe_的专栏

打球,看书,做题

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

原创 c++智能指针

记得前不久有一次面试被问到智能指针的实现,当时对智能指针只是听说但没有了解过,就乱七八糟地说了一遍。今天写了一遍智能指针,用了引用计数的概念。        主要思想就是,用一个新类对原本需要的类型进行了一层封装,这个新类中保存了原本的对象指针和一个引用计数的指针,之所以全部用指针来保存,就是因为会出现多个新类的对象引用到同一个指针,这样的话当我们修改原本对象的内容以及引用计数时,就很天然性地

2014-09-02 22:24:56 651

原创 CF459C Pashmak and Buses 打印全排列

这题如果将最终的结果竖着看,每一列构成的数可以看成是k进制的数,一共有d列,任意两列都不相同,所以这就是一个d位k进制数全排列的问题,一共有k ^ d个排列,如果k ^ d         打印最终结果时设第一列就为1 1 1 1 ... 1,然后依次每列增加1后(公交车编号从1开始,不是从0开始) ,注意,这里是k进制。#include #include #include

2014-08-31 21:48:40 828

原创 Codeforces 461B - Appleman and Tree 树状DP

一棵树上有K个黑色节点,剩余节点都为白色,将其划分成K个子树,使得每棵树上都只有1个黑色节点,共有多少种划分方案。        个人感觉这题比较难。假设dp(i,0..1)代表的是以i为根节点的子树种有0..1个黑色节点的划分方案数。        当节点i为白色时,对于它的每个孩子的节点处理:求dp(i, 0)时有:         1,将该节点与孩子节点相连,但要保证孩子节点

2014-08-30 10:47:47 1415

原创 Codeforces461A Appleman and Toastman 贪心

题目大意是Appleman每次将Toastman给他的Ni个数拆分成两部分后再还给Toastman,若Ni == 1则直接丢弃不拆分,而Toastman将每次获得的Mi个数累加起来作为分数,初始时Toastman直接获得N个数,求Toastman最后能够获得的最高分是多少。       这题简单的贪心,Appleman每次拆分的时候,将最小的一个数作为一部分,剩下的作为另外一部分,这样可以使得

2014-08-30 10:45:09 982

原创 HDU2222 Keywords Search AC自动机

典型的AC自动机基础题。#include #include #include #include #include #include #include #include #include #include #include #include using namespace std;struct Node{ Node* fail; Node* next

2014-08-21 21:07:05 589 1

原创 POJ3068 "Shortest" pair of paths最小费用流

将相连的仓库i,j连边,并设其容量为1,花费为c,如果同一对仓库间有多条连边,不应该合并,所以这里只用邻接表存边,不用邻接矩阵,最终即求流量为2的最小费用流即可。#include #include #include #include #include #include #include #include #include #include #include #includ

2014-08-19 21:57:28 721

原创 POJ2112 Optimal Milking 二分法+网络流

题目大意是:K台挤奶机器,C头牛,K不超过30,C不超过200,每台挤奶机器最多可以为M台牛工作,给出这些牛和机器之间,牛和牛之间,机器与机器之间的距离,在保证让最多的牛都有机器挤奶的情况下,给出其中最长的一头牛移动的距离的最小值。        首先用Floyd求出任意两点之间的最短距离,然后再用二分法限定最多的移动距离d,在求最大流时,搜索增广路的时候同时也判断距离有没有超过d就行了。

2014-08-17 13:56:23 663

原创 POJ2724 Purifying Machine二分图,最小边覆盖

题目大意是,2^N个奶酪,编号从二进制0000..00到1111..11,现在有台机器有N个开关,每个开关有3种状态,为1,0,*,同时最多只有一个*存在,*可以替代0,1这两种状态,一个清楚操作则是这台机器状态对应的数和奶酪编码(一个或两个),如001*,则对应0011和0010。现在需要清除指定的几个奶酪,并且不能清楚到指定编码意外的奶酪,求最少需要切换多少次状态。        二分图,

2014-08-17 13:06:07 540

原创 POJ1274 The Perfect Stall 二分图,匈牙利算法

N头牛,M个畜栏,每头牛只喜欢其中的某几个畜栏,但是一个畜栏只能有一只牛拥有,问最多可以有多少只牛拥有畜栏。        典型的指派型问题,用二分图匹配来做,求最大二分图匹配可以用最大流算法,也可以用匈牙利算法,这里使用匈牙利算法。#include #include #include #include #include #include #include #include

2014-08-16 11:59:50 759

原创 POJ2914 Minimum Cut 最小割集

题目大意是,给定N个顶点,M条边,两个顶点之间可能有多条边,求至少删除多少条边才能将该图分成两个子图。        最小割集,典型的算法Stoer-Wagner,就是那篇论文,这里也就不复制过来了,只是用Prim求最大生成树时,更新的“边”不是普通意义上的边,而是顶点到所有已划分集合中的所有点的边权值和,这里要特别注意~ 直接贴代码~#include #include #includ

2014-08-13 20:43:42 716

原创 POJ2987 Firing 最大权闭合图,最小割

题目大意是:在N个点中选取某些点,使得这些点的权值和最大,每个点的权值可能存在负数,并且某些点之间存在约束关系,例如:当选取A点时,B点也必须同时选中,则A与B之间有边(单向)。顶点N最多5000,边数最多60000。        这一类问题属于最大权闭合图,引入两个顶点,源点S,汇点T,将权值为正的点同S相连,容量为该权值;为负的同T相连,容量为权值的绝对值;对于顶点之间有边的,则将其容易

2014-08-12 22:15:05 517

原创 POJ3171 Cleaning Shifts DP,区间覆盖最值

题目大意,N个区间覆盖[T1,T2]及对应的代价S,求从区间M到E的全部覆盖的最小代价是多少。 (1 (0       思路是DP,首先将每个区间按照T2从小到大排序,设dp(k)为从m覆盖到k所需最小代价,则有dp(T2[i]) = min(dp(T2[i]), {dp(j) + Si,  T1[i] - 1 {dp(j) + Si,  T1[i] - 1#include #i

2014-08-06 22:33:33 1033

原创 POJ3735 Training little cats DP,矩阵快速幂,稀疏矩阵优化

题目大意是,n只猫,有k个动作让它们去完成,并且重复m次,动作主要有三类gi,ei,s i j,分别代表第i只猫获得一个花生,第i只猫吃掉它自己所有的花生,第i只和第j只猫交换彼此的花生。k,n不超过100,m不超过1000,000,000,计算出最后每只猫还剩下多少个花生。        我们假设一个n维向量P,每个分量的值代表这n只猫所拥有的花生数,那么对于gi操作其实就是在第i维分量上加

2014-08-05 20:13:09 1006

原创 POJ3420 Quad Tiling DP + 矩阵快速幂

题目大意是用1*2的骨牌堆积成4*N的矩形,一共有多少种方法,N不超过10^9。        这题和曾经在庞果网上做过的一道木块砌墙几乎一样。因为骨牌我们可以横着放,竖着放,我们假设以4为列,N为行这样去看,并且在骨牌覆盖的位置上置1,所以一共最多有16种状态。我们在第M行放骨牌的时候,第M+1行的状态也是有可能被改变的,设S(i,j)表示某一行状态为i时,将其铺满后下一样状态为j是否可行,

2014-08-04 21:51:40 831

原创 POJ3254 Corn Fields 状态压缩DP

题目大意是在一块M行N列的农场上种谷物,但是不希望彼此相邻(共用一条边),并且有些地方不能种植谷物,给定M,N(范围都不超过12)以及一些不能种谷物的位置,求出一共有多少种方法种谷物。        状态压缩DP,设dp(i, k) 为种到第i行时,第i行状态为k的总共方案数,可以知道dp(i, k) = ∑dp(i -1, k'),其中我们要判断彼此相邻的情况以及不能种植的情况即可。#i

2014-08-01 22:46:24 632

原创 POJ2441 Arrange the Bulls 状态压缩DP

N头牛M个牲口棚,每头牛不希望与其它牛共享牲口棚,并且每头牛只希望待在自己喜欢的某几个牲口棚中,给定N头牛以及各自可以待的牲口棚编号,求一共有多少种满足条件的分配方法。 N,M不超过20.        根据前k-1头牛以及它们各自占有牲口棚的情况,我们可以推算出第k头牛可行的分配方案。一共有M个牲口棚,所以总共的状态有2^M个,我们可以将这些状态压缩成一个整数,第i个二进制位为1则代表第i个

2014-07-31 20:26:43 553

原创 POJ3368 Frequent values 线段树

N个数为非递减顺序,给定范围l,r,求[l,r]区间内数字出现频率最高的次数。        可以用线段树来做。先说查询,我们设节点P对应的区间为[a, b],左孩子节点为p1,右孩子节点为p2,那么 P也许不等于 max(p1 , p2),原因是如果p1中频率较低的某个数与p2中出现频率较低的某个数是同一个数,并且两者出现次数加起来大于max(p1, p2),但是,题目说N个数为非递减顺序排

2014-07-29 20:16:49 781

原创 POJ3264 Balanced Lineup RMQ 线段树

求区间内最大数和最小数的差,用两棵线段树,一个维护区间最大值,一个维护区间最小值。#include #include #include #include #include #include #include #include #include #include #include #include using namespace std;#define QUADMEM

2014-07-29 20:01:53 672

原创 POJ2155 Matrix 二维树状数组应用

一个N*N(1C x1,y1,x2,y2 表示从x1行y1列到x2行y2列的元素全部反转(0变成1,1变成0);Q x y表示询问x行y列的元素是0还是1。        题目乍一看感觉还是很难,如果能记录每一个元素的状态值,那答案是显而易见的,但是元素过多,如果每次都对每一个元素进行更新状态的话,复杂度太高。实际上只要记录边界的特定坐标的反转次数,最好的选择那就是二维树状数组了。

2014-07-27 09:10:32 773

原创 POJ1990 MooFest 树状数组(Binary Indexed Tree,BIT)

N头牛排成一列,每头牛的听力是Vi,每头牛的位置Pi,任意两头牛i,j相互交流时两头牛都至少需要发出声音的大小为max(Vi,Vj) * |Pi-Pj|,求这N头牛两两交流总共发出的声音大小是多少。N,V,P都是1-20000的范围。        这题首先对Vi从小到大进行排序,排序过后就可以依次计算i,将所有比Vi小的牛到i之间的距离之和乘以Vi得到Ri,然后累加Ri就是最终结果

2014-07-24 22:19:29 683

原创 POJ2549 Sumsets 折半枚举

题目大意是,一个集合中有N个元素,找出最大的S,满足条件A+B+C=S,并且这四个数都属于该集合,N不超过1000.        如果直接枚举O(n^4)显然复杂度太高,将等式转化一下A+B=S-C,此时分别对左右两边的值进行枚举,这一步复杂度为O(n ^ 2),接着就用二分法查找满足该等式的最大S值,复杂度为O(n^2*log(n))。#include #include #in

2014-07-23 15:48:39 876

原创 POJ3977 Subset 折半枚举

折半枚举,减小问题的规模。

2014-07-22 23:04:22 1274

原创 POJ2674 Linear world 弹性碰撞

题目大意是,在一个一维的世界里有N个居民在一条直线上的不同位置,他们以恒定的速度大小,速度方向可能不同进行运动,相遇后会返回,问给定线段的长度l,速度v,求最后一个走出这个范围的居民是谁,用时多少。    举个例子,我们可以现象一下几个质量相同刚体(忽略他们的半径)在同一直线上运动,速度方向可能不同,所以会发生弹性碰撞,假设没有任何能量损耗的话,碰撞后是彼此交换速度后返回的,如果求在t时刻

2014-07-22 21:23:06 780

原创 POJ2100 Graveyard Design 区间法

DescriptionKing George has recently decided that he would like to have a new design for the royal graveyard. The graveyard must consist of several sections, each of which must be a square of grave

2014-07-21 21:06:10 630

原创 POJ3185 The Water Bowls 反转(开关)

DescriptionThe cows have a line of 20 water bowls from which they drink. The bowls can be either right-side-up (properly oriented to serve refreshing cool water) or upside-down (a position which h

2014-07-21 20:59:58 1174

原创 POJ3685 Matrix 二分搜索

题目大意:给定NXN的矩阵,第i

2014-07-19 12:32:23 535

原创 POJ3111 K Best 二分搜索

题目大意:.,这样的一个公式,给出N对vi,

2014-07-18 20:58:15 515

原创 POJ3579 Median 寻找第K大数

题目大意:N个数,两两之间的差的绝对值有C(n,2)个

2014-07-18 20:50:35 614

原创 POJ2976 Dropping tests 二分搜索

题目大意是,两对数列ai,bi 其中ai <= bi,现在可以从中

2014-07-17 23:10:56 456

原创 POJ3104 Drying 二分搜索

题目大意是:

2014-07-17 21:11:30 577

原创 POJ3045 Cow Acrobats 二分搜索

题目大意是N头牛,每头niu

2014-07-17 20:51:21 801 1

原创 POJ3273 Monthly Expense 二分搜索

题目大意:N个数,将其划分成M部分,

2014-07-16 23:28:32 394

原创 POJ3258 River Hopscotch 二分搜索

题目大意是,河中有一些石头

2014-07-16 21:39:10 445

原创 POJ1995 Raising Modulo Numbers 快速幂

快速幂运算的简单题

2014-07-15 22:06:02 465

原创 POJ3292 Semi-prime H-numbers 素数筛选

题目大意:H-Number被定义为4*n+1,

2014-07-15 22:02:21 388

原创 POJ3641 Pseudoprime numbers 快速幂

这题比较简单,

2014-07-15 22:02:14 451

原创 POJ3421 X-factor Chains 数学

DescriptionGiven a positive integer X, an X-factor chain of length m is a sequence of integers,1 = X0, X1, X2, …, Xm = XsatisfyingXi Xi+1 and Xi | Xi+1 where a | b means a perfectly divides

2014-07-15 21:53:35 581

原创 POJ3126 Prime Path 素数

这题先将10000以内的素数都找出来,然后在满足条件的

2014-07-15 21:46:48 625

原创 POJ1930 Dead Fraction 数学

这题是个数学题,就是gei

2014-07-15 21:39:20 969

原创 POJ2395 Out of Hay 最小生成树

原题:The cows have run out of hay, a horrible event that must be remedied immediately. Bessie intends to visit the other farms to survey their hay situation. There are N (2 <= N <= 2,000) farms (num

2014-07-15 21:30:17 651

空空如也

空空如也

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

TA关注的人

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