自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Step

#1   HDU4488            03/31/2013

2013-03-31 00:17:53 479

原创 POJ3014 Cake Pieces and Plates DP

虽说是DP入门题,但第一次要理解还是会花很大的劲。dp[i][j]表示j块蛋糕放在i个盘子上的方法数,可有盘子是空的。①若i==j当盘子有空,问题可转化为dp[i-1][j] (i-1保证了至少有一个盘子是空);当盘子全满,只有一种情况,就是每个盘子放一块蛋糕;②若i>j当盘子有空,问题转化为dp[i-1][j];不存在盘子满的状态;③若i当盘子有空,问题转化为

2013-05-23 18:03:10 744

原创 POJ2479 Maximum sum DP

最大连续字串和的加强版。1 -1 2 2 3 -3 4 -4 5 -5Hit:In the sample, we choose {2,2,3,-3,4} and {5}, then we can get the answer.即求两段不重叠连续字串的最大和第一反应是枚举每个点作为断点,两段分别求最大连续子串和,取最大值#include #define

2013-05-23 16:29:38 670

原创 POJ 1159 Palindrome dp

//题意:求至少添加多少个元素使原字符串构成回文//思路:将原字符串翻转,两字符串求最长公共子串,然后为每个没匹配到的字符在相应对称的位置添加一个元素即可,//结果是n - Lcs.size//因为开dp[5000][5000]超内存,所以用到了传说中的滚动数组#include #include #define N 5005char a[N],b[N];//int dp[N][

2013-05-21 16:17:48 517

原创 POJ 1050 To the Max DP

【题意】求n*n矩阵的最大子矩阵(即子矩阵里的每个数之和最大)【分析】不会= =,以为要两个坐标同时怎样,各种YY,YY不出来稍微看了下题解,发现做法挺简单的,在和最大的连续子序列的基础上枚举,将二维矩阵压扁成一维令a[i][j]为矩阵第j列前i个元素的和,的到一个新的序列,最上面加上一行全零行然后枚举a[j][k] - a[i][k] (i:0~n-1    j:i+1~n

2013-05-20 09:03:20 534

原创 HDU 1160 FatMouse's Speed DP

简单DP,最长递减子序列,要保存路径矬代码献上:#include #include #define N 1005struct Mouse{ int w,s; int id,prev;}mice[N];int dp[N];int cmp(const void *a, const void *b){ struct Mouse *c = (Mouse *

2013-05-19 17:13:24 601

原创 HDU 2546 饭卡 DP

题意显而易见,不过一个细节看走眼奉献了1WA【分析】(1)初始余额m小于5,直接输出m(2)初始余额大于5:找出最贵的菜,与最末的元素交换位置然后转化为01背包问题选择令前n-1种菜之和最接近m-5,然后余额减去最大价值的菜即m - 选择的菜价格之和 - a[n-1]m -= 5 ----- 背包容量a[i] ----- 价值a[i] ----- 重量

2013-05-19 15:39:06 625

原创 hdu 1087 Super Jumping! Jumping! Jumping! DP

简单的递增数列最大和dp[i]保存以i为结尾的递增数列最大和于是有dp[i] = max(dp[i], dp[j]+a[i]);#include using namespace std;#define N 1005int a[N],dp[N];int main(){ int n; while(cin >> n) { if(n==0) break;

2013-05-19 14:48:04 553

原创 HDU 1058 Humble Number DP

好好做专题系列= =DP第一题【题意】因子只有{2、3、5、7}中一个或多个的数称为Humble Number,从小到大将它们排成数列,求第n个Humble Number。这是前20个Humble Number {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 24, 25, 27}【分析】因为因子只有2

2013-05-19 14:26:31 639

原创 hdu 1969 二分查找

比较奇葩的二分:【题意】N块派(F+1)个分,每块派的半径为r1~rn,分派条件是每个人必须相等并且派是一块的(可由一块分出,但不能两块拼凑)。求没人分得的派的最大面积。用n块面积的总和除以F+1得最大每人可能分得的派max,于是从0到max二分,条件是分出的整派要大于或等于F+1二分结束的条件是精度满足题目取4位精度的要求#include #include usi

2013-05-19 00:47:37 692

原创 hdu 2141 二分查找

省赛跪在二分上= =,抓狂!!!好吧,恶补基础,找些二分的来做做。数据比较大~用二分都担心会超时,但它还是过了~~方法比较暴力,先把两个数列合并为一个数列。怎样合并?枚举= =,n平方。然后得出两个数列,先给合并的数列排序。下一步?枚举= =,枚举非合并的数列,用每个数去加合并的数列的一个数,存在==X的直接退出循环,输出“YES”;枚举所有都不合符条件的话,输出“

2013-05-18 22:11:45 667

原创 卡特兰数|斯特灵数

/*卡特兰数1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700, 1767263190, 6564120420, 24466267020, 91482563640, 343059613650, 128990

2013-05-06 18:14:15 684

原创 HDU 1018 Big Number

wiki:斯特灵公式是一条用来取n阶乘近似值的数学公式。一般来说,当n很大的时候,n阶乘的计算量十分大,所以斯特灵公式十分好用,而且,即使在n很小的时候,斯特灵公式的取值已经十分准确。公式为:这就是说,对于足够大的整数n,这两个数互为近似值。更加精确地:或题目求10^7的阶乘位数,数据量很大,自然想到利用log10于是有 log10(N!) = log10(

2013-05-06 10:10:02 569

原创 stirling

/*Stirling第一类数#include#define N 20__int64 mul[N+1], a[N+1][N+1];void Solve(){ mul[1] = 1; for(__int64 i = 2; i <= 20; i++) mul[i] = mul[i-1] * i; for(__int64 i = 0; i <= N; i++) a[i][0

2013-05-06 09:28:43 625

原创 a4

#include#define N 100#define INF 100000000struct PCB{ int id;//标志数 int priority;//优先数 int cputime;//已占用CPU时间 int alltime;//还需占用CPU时间 int startblock;//阻塞时间 int blocktime;//被阻塞时间 int state;//

2013-05-03 14:09:44 493

原创 HDU 1027 全排列

STL偷懒法= =#include#includeusing namespace std;int seq[1010];int main(){ int n, m; while(scanf("%d%d",&n,&m)!=EOF) { for(int i = 0; i < n; i++) seq[i] = i + 1; m -= 1; while(m--)

2013-05-02 14:31:16 524

原创 讲个笑话壹

从前,有一只兔子。 又来了一只兔子。 它扶着耳朵站在第一只兔子的肩膀上。 又来了一只兔子。 它扶着耳朵站在第二只兔子的肩膀上。 又来了一只兔子。 它扶着耳朵站在第三只兔子的肩膀上。 又来了一只兔子。 它扶着耳朵站在第四只兔子的肩膀上。

2013-04-26 13:22:34 764

原创 HDU1005 Number Sequence(规律题)

f[i] 的值由 f[i-1] 和 f[i-2] 求出,而f[i]的值只取0~6,因此该数列是循环的,周期奇怪的地方(暂时弄不懂,mark着):RE代码#includeint main(){ int f[55]; f[1]=1;f[2]=1; int a,b,n,roll; while(scanf("%d%d%d",&a,&b,&n),a+b+n) { for(int

2013-04-23 13:46:56 713

原创 HDU1713 相遇周期

题目描述比较坑爹:1、相遇指的同一点出发然后再次在同一点相遇(不过其实由卫星轨道不在同一平面上也可以想到)2、圈数和天数描述反了。。。题目要求的是最小相遇周期,给出b/a(b圈每a天) 、d/c(d圈每c天)。相遇问题先令时间同步,于是:有b*c/a*c    d*a/a*c又在同一点相遇意味着圈数是整数,于是:求 b*c 和 d*a 的最大公约数 m

2013-04-23 11:19:08 654

原创 HDU1443 Joseph

【题意】k个好人和k个坏人围成一圈,好人编号1~k,给定m,从1开始数第m个人被杀,然后从被杀的那个人的下一个人开始计数,如此循环,求使所有坏人被杀前没有一个好人被杀的最小的m。枚举+直接模拟#include#include//int ret[16]={0,2,7,5,30,169,441,1872,7632,1740,93313,459901,1358657,2504881,

2013-04-23 10:39:28 667

转载 HDU Steps 2.2.1

参考:http://blog.csdn.net/niushuai666/article/details/7013352--------------------------------------------------------------------------------------------------------对数的性质,loga(b^c)=c*loga(b),loga(b*

2013-04-22 20:28:19 531

原创 一锅乱炖【数论】

1、斐波那契数列F(n)=F(n-1)+F(n-2)F(n) = 2、最大公约数、最小公倍数3、欧拉函数

2013-04-22 20:22:19 670

原创 最短路模版

/*Bellmam_Ford 伪代码:Bellman-Ford(G,w,s) :boolean //图G ,边集 函数 w ,s为源点 for each vertex v ∈ V(G) do //初始化 1阶段 d[v] ←+∞ d[s] ←0;

2013-03-25 20:56:11 605

空空如也

空空如也

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

TA关注的人

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