- 博客(37)
- 资源 (8)
- 收藏
- 关注
原创 poj3863 Business Center 贪心
题目分析:设上升次数w为x ,则x*u-(n-x)*d>=0 解得:x>=n*d/(u+d);当能够整除时:在最终停在u+d,不过能够时停在(n*d/(u+d)+1)*(u+d)-n*d;#include#include#includeusing namespace std;int main(){ int n,m; while(scanf("%d %d",&n,&m)
2012-05-30 07:49:14 1041 1
原创 USACO 1.3.4 Calf Flac(最大回文子串)
题目分析: 1.直接枚举回文串的起始位置和重点位置会超时,O(n^3),会超时,最长的回文串为2000; 2. 直接枚举中间位置,O(n^2), 3.先对字符文本进行预处理,对非字母符号全部去掉,s1[20100],开一个p[20100]记录s1[i]在原字符串中的位置,方便输出原字符串. 4.注意它的输入,是以文本的形式输入,可能有好几行,
2012-05-29 09:32:48 742
原创 hdu 1711 Number Sequence(很简单的KMP)
题目分析:// KMP.cpp : Defines the entry point for the console application.//#include#includeusing namespace std;int a[1001000],b[11000],next[11000];void GetNext(int m)//很巧妙!?为神马可以这样实现{
2012-05-22 16:48:30 540
原创 hdu 1588 Gauss Fibonacci(矩阵乘法+二分)
题目分析:构造矩阵a={{0,1},{1,1}},{y,x+y}=a*{x,y};{ans, --}=求和(0->n-1){(a^k)^i}*a^b*{0,1}.......正确代码:以下代码有错误!!!#include#includeusing namespace std;struct node{ int matrix[3][3];};int k,
2012-05-20 19:32:20 911
转载 矩阵乘法题目总结
转载自:http://acm.hdu.edu.cn/forum/read.php?tid=15908http://acm.hdu.edu.cn/showproblem.php?pid=1575http://acm.hdu.edu.cn/showproblem.php?pid=1757赤裸裸的两道http://acm.hdu.edu.cn/showproblem.php?pid=
2012-05-20 13:26:06 982 1
原创 XTU 1142 Collatz Conjecture
题目分析:http://202.197.224.59/OnlineJudge2/index.php/Problem/read/id/1142#include#includeusing namespace std;struct node{ __int64 num,sum; int flag;}arr[10000020];int main(){ in
2012-05-19 22:19:06 662
原创 XTU 1140
题目分析:http://202.197.224.59/OnlineJudge2/index.php/Problem/read/id/1140#include#include#includeusing namespace std;int arr[1000100];int notprime[1000100];int a[1000100];__int64 p[1000100];
2012-05-19 22:17:03 842 1
原创 poj 3233 (矩阵乘法+二分+递归)
题目分析:矩阵快速幂。首先我们知道 A^x 可以用矩阵快速幂求出来(具体可见poj 3070)。其次可以对k进行二分,每次将规模减半,分k为奇偶两种情况,如当k = 6和k = 7时有: k = 6 有: S(6) = (1 + A^3) * (A + A^2 + A^3) = (1 + A^3) * S(3)。 k = 7 有: S(7) = A +
2012-05-19 17:20:24 1500
原创 zoj 1619 Present(错排公式的简单应用)
题目分析:p=f[n-m]*C(n,m)/(N!).....f[i]为错排数组化简后为p=(1+求和1~n-m ***(-1)^i/i!)/m!注意:因为要保留8位小数,所以求阶乘是求到20时,就应该可以过了 ^-^/*p=f[n-m]*C(n,m)/(N!)*/#include#includeusing namespace std;int main(){ i
2012-05-18 16:57:59 833
原创 求阶乘的模板
求阶乘n!的模板 自己写的,,,,int arr[10000];void factorial(int n)//求阶乘{ memset(arr,0,sizeof(arr)); arr[1]=2; int c=1,temp,temp1; for(int i=2;i<=n;i++) { temp=0; for(int j=1;j<=c;j++)
2012-05-18 15:44:28 986
原创 poj 1354 Placement of Keys(错排变形)
题目大意:n个盒子对应n个锁,n个锁对应着唯一可以打开它的n把钥匙,现将n把钥匙封于n个盒子中,只撬开1 2两个盒子,不能再撬开其他盒子,用已撬开或者打开的盒子内的钥匙来开别的盒子,问能够最终打开所有盒子的钥匙的放置方法有多少种。题目分析:这题是一个错排问题,就是在排列中不存在恰好i1,i2,i3,...,ik包含i1,i2,i3,...,ik号钥匙的情况(不一定一一对应,只要
2012-05-18 14:56:32 1297
原创 hdu 2048 , 2049 ,2068 (错排公式的简单应用)
题目分析:错排公式的简单应用,错排公式为f(n) = n![1-1/1!+1/2!-1/3!+……+(-1)^n*1/n!]要求的概率为P=f(n)/n!;P=[1-1/1!+1/2!-1/3!+……+(-1)^n*1/n!];#include#includeusing namespace std;int main(){ int n,C; scanf("%d",&C
2012-05-18 08:32:14 827
转载 错排问题
方法一:n各有序的元素应有n!种不同的排列。如若一个排列式的所有的元素都不在原来的位置上,则称这个排列为错排。任给一个n,求出1,2,……,n的错排个数Dn共有多少个。递归关系式为:D(n)=(n-1)(D(n-1)+D(n-2))D(1)=0,D(2)=1可以得到:错排公式为f(n) = n![1-1/1!+1/2!-1/3!+……+(-1)^n*1/n!]其中,n!=1
2012-05-18 08:03:17 448
原创 hdu 2050 折线分割平面
题目分析:见杭电的课件 ^ ^ 1.当第n个折线加入时,已有f(n-1)个平面,有2(n-1)条折线, 2.第n条折线将与这2(n-1)条折线构成4(n-1)个交点,将使平面多4(n-1)个区域,而第n条折线的顶点将使平面多一个区域 3.故:F(n)=f(n-1)+4(n-1)+1#include#includeint main
2012-05-17 17:42:36 451
原创 hdu 2037 今年暑假不AC(贪心)
题目分析:先将事情的起始时间和截止时间排序,把相互排斥的事情划到一个集合里。样例:0 1 2 ; 3 3; 4 5 6 8; 10; 15 157 3 9 ; 4 8; 14 10 12 18; 15; 19 20 ^
2012-05-16 17:21:50 531
原创 hdu 2391 Filthy Rich(很水的dp,记忆化搜索)
很水的dp,状态转移方程告诉了#include#include#includeusing namespace std;int maze[1100][1100],dp[1100][1100];int dir[3][2]={{-1,0},{0,-1},{-1,-1}};int r,c; bool inline IN(int x,int y){ if(1<=x&&x<=c&&1<=
2012-05-15 15:57:28 931
原创 hdu 1085 Holding Bin-Laden Captive! (多重背包变形)
题目分析:有三个硬币面值分别为1 ,2, 5 数量分别为num1,num2,num3 求用这些硬币不能拼成最小的币值1 2 5分别对应三种类型价值和容量相等分别为1 2 5的物品,把这些 背包放到容量sum=num1*1+num2*2+num3*5的背包里....状态转移方程:dp[i][j]=max(dp[i-1][j],dp[i-1][j-n[i].v]+n[i].v).......
2012-05-10 13:41:28 883
原创 hdu 2189 悼念512汶川大地震遇难同胞——来生一起走(完全 背包变形--求方案总数)
题目分析:先筛选1到150以内的宿舍,放到a[num]中,再用完全背包求方案总数//************#include#include#include#includeusing namespace std;bool is_prime(int x){ for(int i=2;i<=(int)sqrt(x+0.5);i++) if(x%i==0) ret
2012-05-10 09:00:00 1961
原创 hdu 1398 Square Coins(完全背包变形---求方案总数)
题目分析:有17种硬币 ,币值分别为1^2,2^2.......17^2, 给n代表总钱数,求用这个17种硬币拼成n的种类数可以用母函数做,也可以用背包做。。。套用的背包,见 背包九讲....//****背包#include#include#includeusing namespace std;int main(){ int n; __int64 dp[100
2012-05-10 08:37:05 773
原创 hdu 1284 钱币兑换问题(完全背包 变形---求方案总数)
题目分析:定义dp[i][j]是将前i种硬币放到价值为j的背包里的方法数.... 状态转移方程:dp[i][j]=sum(dp[i-1][j],dp[i][j-i]).........................具体件背包九讲初始化化:dp[i][0]=0, 价值为0的方法当然为1,就是什么都不放#include#includeusing namespace std;
2012-05-10 07:35:14 1065
原创 hdu 1088 滑雪(记忆化搜索)
题目分析:不能从最小的开始搜索,也不能从最大的开始搜索,因为最小的可能被封住了,,,所以每个位置都搜索一遍,,,找出最大的一个,,,还有所过的不能被清掉,不然会TLE.....#include#include#includeusing namespace std;int maze[110][110],dp[110][110],dir[4][2]={{1,0},{-1,0},{0,1
2012-05-09 18:45:50 1273 1
原创 hdu 2571 命运 (记忆化搜索)
题目分析:定义dp[x][y]为从位置(i,j)走所能取得最大幸运值: dp[x][y]=max(dp[x+1][y], dp[x][y+1],dp[x][y*k])+maze[x][y]...........(x+1注意: 1.注意初始化 dp[n][m]=maze[n][m]; //******记忆化搜索#include#includ
2012-05-09 11:23:37 666
原创 hdu1059 Dividing 搜索
题目分析:一直没想的好的好的状态设置....这个真的不会写,还是有空多看看深搜吧............//*****#include#includeusing namespace std;int halfvalue;int a[7],sum,SUM,flag;void dfs(int v,int pre)//用当前的所组成的价值当做一个状态量{
2012-05-08 17:15:06 715 1
转载 刘汝佳黑书 pku等oj题目
一.动态规划参考资料:刘汝佳《算法艺术与信息学竞赛》《算法导论》推荐题目:http://acm.pku.edu.cn/JudgeOnline/problem?id=1141 简单http://acm.pku.edu.cn/JudgeOnline/problem?id=2288 中等,经典TSP问题http://acm.pku.edu.cn/Judge
2012-05-08 13:21:30 4966
原创 hdu 3177 Crixalis's Equipment(贪心)
题目分析:这个如何贪心,很难想!!!有忍不住参照别人的思想了!!!!!但是我感觉我下面的哪个WA一直的思想也对不知道为啥过不了!!!思想:如果是两件的话:a1 , b1和a2 ,b2.... 瞬时所占体积的最大值为,a1+b2 或者 b1+a2,肯定选择较小的哪个来放...在推广的n个/*****贪心***/#include#include#includeusing
2012-05-08 10:53:32 752
原创 hdu 1052 Tian Ji -- The Horse Racing(很好的贪心)
题目分析:这题的题意就是求怎么让田忌赢最多,可以赢负的。算法是先将两个都排序,然后按1、田忌的快马比齐王的快,直接比掉。2、若快马没有快,拿田忌最慢的和齐王最慢的比较,若快直接比掉。3、若慢马比齐王慢,就拿田忌最慢的和齐王最快的比较。按这个算法就可以啦!不过有一组很好的测试数据。41 2 4 52 3 3 4注意:1.很好的贪心题
2012-05-07 22:26:46 1689 1
原创 hdu 1422 重温世界杯(最大连续子段和变形)
题目分析:吧 剩余的钱,放到数组arr[210000]中,按序放两边,一层循环2---n*2;动态转移方程:如果dp[i-1].v>=0 && dp[i-1].v+arr[i]>=0 dp[i].v=dp[i-1].v+arr[i], dp[i].sum=dp[i-1].sum+1;否则:dp[i].v=arr[i],注意如何防止重复了?1.如果
2012-05-06 17:08:16 922
原创 hdu 2045 不容易系列之(3)—— LELE的RPG难题(递推)
题目分析:直接考虑,定义f[n]为 n位时,种类数,直接考虑f[n+1],如果第n与第一位相同,则f[n+1]=f[n-1]*2;否则:f[n+1]=f[n]....则,f[n+1]=f[n]+f[n-1]*2;初始化:f[1]=3 , f[2]=6, f[3]=6; #include#includeusing namespace std;int a[1000
2012-05-05 18:52:22 592
原创 hdu 2044 一只小蜜蜂...(很简单的递推)
题目分析:f[60],f[a]=0,f[a+1]=1,f[a+2]=2,........f[i]=f[i-1]+f[i-2];#include#includeusing namespace std;int main(){ __int64 f[60]; int a,b,c; scanf("%d",&c); while(c--) { scanf("%d %d",
2012-05-05 10:33:50 702
原创 hdu 1078 FatMouse and Cheese(深搜----记忆化搜索)
题目:mouse开始在(0,0)每次可以走1到k格,不能转弯;而且下一格的值要大于这一格注意:1. ”then runs either horizontally or vertically to another location“ 题目说了 ,不能转弯呀!!!!!又理解错了,,, 2.有个bug找了好长时间,,,dir[4][2]={{},{},{},{}};
2012-05-04 21:20:15 1552
原创 hdu 2412 Party at Hali-Bula(简单的树形dp)
题目分析:树形dp+判断状态转移方程:对于叶子节点 dp[k][0] = 0, dp[k][1] = 1对于非叶子节点i,dp[i][0] = ∑max(dp[j][0], dp[j][1]) (j是i的儿子)dp[i][1] = 1 + ∑dp[j][0] (j是i的儿子) 最多人数即为max(dp[0][0], dp[0][1])如何判断最优
2012-05-04 16:14:09 592
转载 树形DP题集
转载自 以太论最终编辑 以太论树形DP http://acm.hdu.edu.cn/showproblem.php?pid=2196向下搜一遍,向上搜一遍http://acm.hdu.edu.cn/showproblem.php?pid=1561 对每一个节点进行一次背包,好题啊,两个DP树形和背包结合的http://acm.hdu.edu.cn/showpro
2012-05-03 22:20:49 557
转载 对于编程的总结
对编程的几点总结过于追求编程数量,却忽略了最重要的方法过程的思考,结果必将是不会思考,还可能养成不爱思考的习惯。对于高精度的题如果出错,主要会有以下几个方面:1.数组开的过小;2.某个数的长度没有记对(关键看存数的数组是从0还是从1开始);动态规划如果出错,主要有以下几方面:1.转移方程出错(方程代表的意义以及状态转移的方法);2.边界初始化
2012-05-03 16:20:11 553
原创 hdu 3033 (分组背包---每组内至少取一件)
下面的代码是错误的:硬是检查不出啦那里错了,样例能过http://archive.cnblogs.com/a/1783879/这里讲的很详细,,,,//每一组内至少取一件/*程序思想:f[i][j]代表用j的价钱买前i个品牌可以得到的最大价值数。 赋初值:见18到22行 状态转移:f[i][j]可以经过三种状态得到———— f[i][j],
2012-05-03 15:14:26 935
原创 hdu 3535 AreYouBusy(分组背包的变形---各种分组背包)
题目分析:0代表每组内的job至少取一件;1代表最多取一件;2代表可以自由取,就相当于对这一组内的job实行01背包......注意: 1. One job can be done only once.开始没注意到这句话,还以为每组内的每个job可以做多次....囧,,, 2.这个题花了我一天多的时间,最后看别人的解题报告才过的,,,,
2012-05-03 08:56:22 860
转载 汪国真诗
热爱生命我不去想是否能够成功既然选择了远方便只顾风雨兼程我不去想能否赢得爱情既然钟情于玫瑰就勇敢地吐露真诚我不去想身后会不会袭来寒风冷雨既然目标是地平线留给世界的只能是背影我不去想未来是平坦还是泥泞只要热爱生命一切,都在意料之中怀想我不知道是否 还在爱你如果爱着为什么 会有那样一次分离我不知
2012-05-01 22:27:07 3143 1
转载 汪国真的爱情诗
汪国真的爱情诗 |字号 订阅汪国真的爱情诗 认识你的时候 也就刻下你的名字 问青山思恋几许 岁月有多久 记忆便有多久 何必幽径谈画 你就是一幅丹青 何必月下吟诗 你就是一首蝶恋花 恨你 也爱你 恨,就
2012-05-01 22:10:31 6206
MAT Eclipse MemoryAnalyzer java性能分析
2018-09-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人