自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 2013腾讯编程马拉松初赛第三场(3月23日)

1001 小Q系列故事——世界上最遥远的距离Time Limit: 0.2 Seconds   Memory Limit: 65536K世界上最遥远的距离不是生与死而是我就站在你面前你却不知道我爱你世界上最遥远的距离不是我就站在你面前你却不知道我爱你而是明明知道彼此相爱却不能在一起世界上最遥远的距离不是明明知道彼此相爱却不能在一起

2013-03-23 21:29:05 1246

原创 hdu 4465

计算组合数最大的困难在于数据的溢出,对于大于150的整数n求阶乘很容易超出double类型的范围,那么当C(n,m)中的n=200时,直接用组合公式计算基本就无望了。另外一个难点就是效率。    对于第一个数据溢出的问题,可以这样解决。因为组合数公式为:    C(n,m) = n!/(m!(n-m)!)    为了避免直接计算n的阶乘,对公式两边取对数,于是得到:    ln(C

2012-11-21 16:05:38 1416

原创 HDU 4442 Physical Examination

#include#include#include#define MAXSIZE 1000030using namespace std;struct node{ __int64 a,b;}P[MAXSIZE];__int64 s,sum;bool cmp(node a,node b){ return a.a*b.b<a.b*b.a;}

2012-10-29 18:04:44 405

原创 poj3342 Party at Hali-Bula

/*用dp[i][1]表示选择结点i时以i为跟结点的子树能得到的最大值,dp[i][0]为不选i时的最大值,则dp[i][0]+=max(dp[j][0],dp[j][1]),dp[i][1]+=sum{dp[j][0]},其中j为i的儿子;边界为d[k][1]=1,d[k][0]=0(k为叶子节点)本题比较难一点的是判断解得唯一性。我的判断方法是:如果dp[i][0]>=dp[i][1]

2012-10-10 11:38:59 521

原创 poj2239 Selecting Courses(最大二分图匹配 (匈牙利算法) 实现 )

#include#include#include#include#define MAXSIZE 205#define sf scanf#define pf printf#define __int64 long long#define INF 0xfffffff#includeusing namespace std;int map[MAXSIZE][MAXSIZE];int

2012-10-04 20:16:01 558

原创 UVa 10596 - Morning Walk(欧拉回路)

/*题目大意:Kamal每天早上都要从家里走到Chittagongand这个地方。 从家里到Chittagongand有很多条路, 他每天早上都要先选择好一条路线, 这条路线从家里走到Chittagongand,在从Chittagongand走回家里。这条路线不能重复地经过同一条路。 两个地点间可能会有多条路。 比如多次出现了从A到B的路线, 那么表示每次出现的都是不同的路*/#i

2012-10-04 20:01:48 1613

原创 hdu4283 You Are the One(区间DP)

#include#include#include#include#define MAXSIZE 105000#define sf scanf#define pf printf#define __int64 long long#define INF 0xfffffffusing namespace std;int dp[205][205],x[205],s[205];void

2012-10-03 13:17:39 379

原创 poj1461 Shredding Company(DFS)

/*题目大意: 给定一个目标数target 和一个小于等于6位的数字number,把数字切开后相加。eg: number=123456; 切法1: 12-34-56 (sum=12+34+56=112)切法2: 123-456 (sum=123+456=579)等等.要求输出唯一一个小于等于目标数(条件!!)的切法方案; 如果无可行的切法,输出额error;如果最优解的切法不唯一输

2012-10-03 00:10:57 621

原创 NOI 警位安排(树形DP)

/*【题目描述】 一个重要的基地被分成了n个连通的区域,出于某种原因,这个基地以某一个区域为核心,呈一树形分布。 在每个区域里安排警卫的费用是不同的,而每个区域的警卫都可以望见其相邻的区域。如果一个区域有警卫或是被相邻区域的警卫望见,那它就是安全的,你的任务是:在确保所有的区域安全的状态下,使总费用最小。【输入格式】 第一行n,表示树中结点的数目。 接

2012-10-02 08:53:08 2604

原创 poj 3140 Contestants Division

/*题意:给出一棵树,每个节点有一个权值,要求去掉一条边所能获得的两棵树的最小的权值差DFS遍历一遍,枚举断点,(简单题)*/#include#include#include#include#define MAXSIZE 105000#define sf scanf#define pf printf#define __int64 long long#define INF

2012-10-01 12:26:51 391

原创 poj 1947 Rebuilding Roads(树形DP)

/*问题描述:给定n个点的树,最少删多少边,会有棵p个节点的树dp[i][j]代表以i为根(包含i),共j个节点需要切断的路的数量dp[i][j+k]=min(f[i][j+k],f[i.son[t]][k])(t为i的孩子) 树形DP+背包*/#include#include#include#include#define MAXSIZE 505000#define sf

2012-10-01 11:19:45 502

原创 poj 3709 K-Anonymous Sequence(斜率优化DP)

/*s[i]->前I个数之和; 朴素方程:dp[i]=min(dp[j]+s[i]-s[j]-(i-j)*a[j+1]); 假设I>J>K,且在K点的决策比J好,则有 dp[j]+sum[i]-s[j]-(i-j)*a[j+1]>= dp[k]+s[i]-s[k]-(i-k)*a[k+1]化简得: dp[j]-dp[k]-s[j]+s[k]+j*a[j+1]-k*a[k+1]>=i*

2012-09-30 22:45:39 1315

原创 hdu 4258 Covered Walkway(斜率优化DP)

/*朴素方程:dp[i]=min{dp[j]+c+(p[i]-p[j+1])^2} 我们考虑在计算dp[i]时,对于i < j < k来说, 如果保证决策j比决策k大的条件是:dp[j]+(s[i]-s[j+1])*(s[i]-s[j+1])+C<dp[k]+(s[i]-s[k+1])*(s[i]-s[k+1])+C通过移项整理,可以化简为: (dp[j]-dp[k]+s[j+1]*s[

2012-09-30 20:10:57 437

原创 poj2018 Best Cow Fences

#include#include#include#define MAXSIZE 100500#define sf scanf#define pf printfusing namespace std;int N,F;int sum[MAXSIZE],t[MAXSIZE];int stack[MAXSIZE],top,back;long long Xmult(int i,int j

2012-09-29 23:39:15 821

原创 poj 1180 Batch Scheduling ( 斜率优化DP )

/*N个任务排成一个序列在一台机器上等待完成(顺序不得改变),这N个任务被分成若干批,每批包含相邻的若干任务。 从时刻0开始,这些任务被分批加工,第i个任务单独完成所需的时间是Ti。在每批任务开始前,机器需要启动时间S, 而完成这批任务所需的时间是各个任务需 要时间的总和(同一批任务将在同一时刻完成)。每个任务的费用是它的完成时刻乘以一个费用系数Fi。请确定一个分组方案,使得总费用最小。(

2012-09-29 14:09:11 612

空空如也

空空如也

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

TA关注的人

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