自定义博客皮肤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 490

原创 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 776

原创 POJ2479 Maximum sum DP

最大连续字串和的加强版。 1 -1 2 2 3 -3 4 -4 5 -5 Hit: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 706

原创 POJ 1159 Palindrome dp

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

2013-05-21 16:17:48 552

原创 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 568

原创 HDU 1160 FatMouse's Speed DP

简单DP,最长递减子序列,要保存路径 矬代码献上: #include #include #define N 1005 struct 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 616

原创 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 638

原创 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 1005 int a[N],dp[N]; int main() { int n; while(cin >> n) { if(n==0) break;

2013-05-19 14:48:04 567

原创 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 652

原创 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 708

原创 hdu 2141 二分查找

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

2013-05-18 22:11:45 683

原创 卡特兰数|斯特灵数

/* 卡特兰数 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 702

原创 HDU 1018 Big Number

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

2013-05-06 10:10:02 582

原创 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 641

原创 a4

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

2013-05-03 14:09:44 507

原创 HDU 1027 全排列

STL偷懒法= = #include #include using 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 539

原创 讲个笑话壹

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

2013-04-26 13:22:34 810

原创 HDU1005 Number Sequence(规律题)

f[i] 的值由 f[i-1] 和 f[i-2] 求出,而f[i]的值只取0~6,因此该数列是循环的,周期 奇怪的地方(暂时弄不懂,mark着): RE代码 #include int 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 749

原创 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 687

原创 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 683

转载 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 546

原创 一锅乱炖【数论】

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

2013-04-22 20:22:19 685

原创 最短路模版

/* 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 615

空空如也

空空如也

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

TA关注的人

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