
ACM & 算法设计
J_Factory
这个作者很懒,什么都没留下…
展开
-
pku2406 Power Strings(kmp字符匹配,next数组)
重看了下数据结构,发现有些知识还没有吃透。kmp算法就是一个。kmp的关键就是next数组,求出了next数组后就和O(n*m)的算法类似。求next数组有dp的思想,假设知道next[i]=k,现在要求next[i+1], next[i]+1 ch[i]=ch[i+1] next[i+1]= next[k]+1 沿着前面的next数组找到一个k原创 2008-10-28 14:09:00 · 571 阅读 · 0 评论 -
hdu 2513 cake clicing(切蛋糕)
这题是用四维过的。dp[i][j][h][w],i,j表示蛋糕的左上角,h,w代表高和宽。在dp前还要统计一下每个子蛋糕方块中樱桃的数目。状态转移方程是这样的(考虑行,列两种切法) 在[i][j][h][w]这块蛋糕中没有樱桃,则 dp[i][j][h][w]=0 否则 dp[i][j][h][w]=min{ dp[i][j][h][w-w0]+dp[i][原创 2008-10-06 22:15:00 · 647 阅读 · 0 评论 -
动态规划小结
pku 3132 Sum of Different Primes(素数和) 一个数被k不同的素数相加,共有多少中方法。dp[i][k][j],表示数i由k个不同的素数相加,j表示第几个素数。dp[i][k][j]=sigma(dp[i-prime[j]][k-1][h]) 1pku 3291 Cousins(贪心,LCS) 求出两个字符串的最长公共子序列,题目要求的是构造出两个串的最长公原创 2008-10-20 21:02:00 · 534 阅读 · 1 评论 -
pku 1737 Connected Graph(组合数学,高精度)
package pku1737;import java.math.BigInteger;import java.util.*;public class Main { static BigInteger f[]; public static void main(String[] args) { int n; Scanner原创 2008-10-21 18:17:00 · 808 阅读 · 0 评论 -
pku 3533 Light Switching Game(nim 积)
第一个nim积题目。nim积与nim和够成一个正整数域上的群。nim积用⊗表示,nim和用⊕表示。和乘法类似: x⊗1=1⊗x=x y⊗0=0 (x⊗y)⊗z=x⊗(y⊗z)⊕是异或运算。⊗的运算法则定义为: 1.The nimber product of distinct Fermat 2-powers (numbers of the form ) is equal to原创 2008-09-02 18:38:00 · 993 阅读 · 0 评论 -
数学类小结
pku 1150 The Last Non-zero Digit 和计算排列数末尾有多少个零有些类似,把2,5因子都拿出来,剩下的数的最后一个数字只有1,3,7,9。只有各位上的数字才会影响最后一个非零数字。统计可以用递归来统计,求出1~n中因子2,5的个数,以及3,7,9结尾的数和去掉2,5后新的到的数中3,7,9结尾的数。结果就是 2^(dig[2]-dig[5])*3^(dig[3])*原创 2008-08-28 20:12:00 · 4543 阅读 · 4 评论 -
计算几何小结
pku 1039 Pipe 这题的最优解在于最优直线至少会过两个拐点,枚举拐点对。pku 1092 Farmland 总是是过了。这题有点像找凸包,不同的是凸包是以最左下点作为参考。首先对每个顶点的邻接点排序(按极角),以源点和顶点为参照边,从小到大排序其邻接点。通过排序后各顶点的邻接点按逆时针排列。下一步就是去找所以的封闭多边形,按着从一条边以该边为轴逆时针旋转到邻近的边,由于事先对邻原创 2008-08-22 10:10:00 · 861 阅读 · 0 评论 -
pku2352 Stars(线段树实现)
第一个线段树。。。线段树真是灵活多变啊。。。看来要好好掌握还要多加练习。。/*pku2352 Name: Stars Date: 02-08-08 16:41 Description: 统计问题,线段树 */#include#define MAX 72010#define pr printf// FILE * pp=fopen("temp.txt原创 2008-08-02 19:52:00 · 629 阅读 · 0 评论 -
pku 2348 Euclid's Game
这题的意思是说:给两个数,两个人轮流减少他们,不能再减的那个人输。每次只能在这两数中选小的(倍数)减大的.可以看出这类题不是NIM类题,因为每次减少的数目是不能确定下来的。先看些简单的情况。假设这两个数是a>b. 1。当a%b==0时,先行者胜,即(N-position). 2。当a%b!=0时, 设a=b*q+r。(q>1) 可以看出先者可以做出让a减b,2b,3b..qb这q种选择。在这些原创 2008-08-04 21:15:00 · 712 阅读 · 5 评论 -
pku3277 City Horizon.(离散化+二分查找)
还是用到了离散化和二分查找的一个题目,题目是求每段线段可以达到最大的矩形面积,再求总和。/* Name: City Horizon Date: 31-07-08 17:06 Description: 离散化+二分查找 用了个链表*/#include#include#include#define pr printf__int64 x[100003]原创 2008-08-01 18:22:00 · 500 阅读 · 0 评论 -
pku1177 Picture(矩形外围总周长)
这题我先是用离散化做了下,发现可以过,时间当然要久点。在离散化中有这样一个概念:超元线段。这些线段将平面分割成大小不相当(或相等)的矩形,这些矩形的边要么是给定矩形的边的一部份要么完全和给定矩形无关。我们只有按给定矩形的顶点的x坐标,y坐标分别画出垂直x轴,y轴的直线,用这些直线来分割平面,它们相交得到的线段就是超元线段。只有统计出超元线段出现的次数矩形的总周长就可以算到了。/*pku1177原创 2008-07-30 08:11:00 · 611 阅读 · 0 评论 -
pku 1149 PIGS(最大流)
这题的网络是这样建的。设一个源点s,s将于客户节点相连,连接方式为对考虑一个猪圈是第一次被光顾s将于这位顾客之间有一条流容量是该猪圈的猪数,若这个猪圈被人光顾过,则在这个顾客和前一个顾客间有一条无限流量的通道。依次下去完成顾客节点和s,顾客节点和顾客阶段间的网络。最后是顾客和汇点的网络,每个顾客和汇点t都有条通道,容量是顾客希望购买的数量。 /*pku1149 Name:原创 2008-07-28 09:09:00 · 1001 阅读 · 0 评论 -
基于频繁增长树(FP-树)的频繁项集挖掘算法实现
花了两天的时间终于完成了。一开始照着论文实现了一下,总是感觉怪怪的,结果果然不对,论文里描述看上去都差不多,就是抓不住要点,最后还是看懂了原版paper,才实现了。感觉FP-Tree的实现并不难,就是一些链表指来指去,倒是觉得FP_growth函数不好写,这个函数主要是在一棵大FP-Tree上操作,来生产小FP-Tree树,最终得到只有一个枝的树,就能打印组合了。递归是肯定的。另外,第一次用原创 2008-12-07 21:06:00 · 906 阅读 · 0 评论