08 2012 档案
摘要:hdu 2993MAX Average Problemhttp://acm.hdu.edu.cn/showproblem.php?pid=2993这题都整死我了,代码基本上和别人AC的都快一样了还是不对。郁闷死了快。。最后终于发现了错误点自判断斜率时y1*x2 <= y2*x1 如果用整型就会超数据类型肯定会错,而上边的用整型可以过,不过最好用实型因为毕竟k的大小不确定。。。这题的详细解释http://www.docin.com/p-47950655.html例2 这里在转到0-n个点求斜率的时候不好理解。数形结合以形住树。View Code #include <iostream&
阅读全文
摘要:做了几道前几天多校的单调队列优化DP题目:hdu 4326Dragon Ballhttp://acm.hdu.edu.cn/showproblem.php?pid=4362题意:Sean的到一个地图上边标有什么时刻什么地点会出现龙珠,龙珠在每一时刻出现在同一行里,Sean每一时刻只能去一个龙珠,给出他取龙珠所消耗的能量以及移动所消耗的能量。求他在每个时间段取龙珠的最小能量消耗;思路:dp[i][j]表示在i时间取第j个龙珠的最小能量消耗则有dp[i][j] = min(dp[i - 1][k],abs(p[i - 1][k].pos - p[i][j].pos)) + p[i][j].w;此方
阅读全文
摘要:单调队列:http://baike.baidu.com/view/3771451.htmfoj 1894志愿者选拔http://acm.fzu.edu.cn/problem.php?pid=1894题意:中文略..思路:就是很单纯的单调队列,最最入门的单调队列,而且是很形象的排队问题。View Code #include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <queue>#incl
阅读全文
摘要:很长时间没做TC了,再说自己做的也确实相当少,所以不是很熟+思路来的比较慢所以做得不是多么好,只做出了250pt,500pt的思路对还没敲完就结束了。话说TC,CF什么的真的很锻炼人的思维能力可就是老在晚上举行,所以弄得....250pt就是求一个x + z = d;2*x + 4*y + 4*z = f;y + z = t;推出公式计算即可:500pt题意:给定你一个序列,里面含有一个-1其余都是非负数另开一个栈,按如下操作进行:遇到大于0的进栈,遇到0取栈顶两个元素相加再放进栈,最后得到栈顶的元素为wantresult.给出序列和wantresult,问-1这个位置如果是0就输出0,如果是
阅读全文
摘要:容斥定理学习:http://www.cppblog.com/vici/archive/2011/09/05/155103.aspxhdu 1796How many integers can you findhttp://acm.hdu.edu.cn/showproblem.php?pid=1796题意:给定n和一个大小为m的集合,集合元素为非负整数。求1...n - 1内能被集合里任意一个数整除的数字个数。n<=2^31,m<=10思路:首先明白对于集合[1,n]内能被a整除的数的个数为n/a,既能被a整除又能被b整除的数的个数为n/lcm(a,b)(a,b的最小公倍数);容斥原理
阅读全文
摘要:官方解题报告:http://page.renren.com/601081183/note/8672549111001Number Sequence 容斥定理+组合数hduhttp://acm.hdu.edu.cn/showproblem.php?pid=4390题意:给你b1,b2,...bn个数,求存在多少个这样的序列a1,a2,a3....an满足a1*a2*a3*a3...an = b1*b2...*bn; ai>1思路:首先多谢日华兄热心的给我讲解,现在算是明白点了吧。a1*a2...*an = sum;我们首先将sum的所有质因子分解出来,然后就是将质因子分配到N个ai里面求有
阅读全文
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=4380http://acm.hdu.edu.cn/showproblem.php?pid=4353http://acm.hdu.edu.cn/showproblem.php?pid=4367昨天第9场比赛的第一题类型据说已经出成屎了,如果不是数据出错了,做就会被轮奸的。于是就坐了坐类似的题目。这里有一个同一的前提,不存在三点共线;首先给出这类题目的解法AC大神:http://hi.baidu.com/aekdycoin/item/3f151dafcfcfb9ac29ce9ddc还有一个帮助理解s[i][j]的
阅读全文
摘要:http://poj.org/problem?id=1286题意:3种颜色对一个有n个顶点的圈着色,问有多少种不同的着色方法。对于通过旋转或者翻转得到的相同的着色视为一种;思路:Polya定理 设有n个对象,G是这n个对象上的置换群,用m种颜色涂染这n个对象,每个对象涂染一种颜色,问有多少种染色方案?一种染色方案在群G的作用下变为另一种方案,则这两种方案当作是一种方案。 方案数为因为这里的有旋转与翻转两种所以|G|的个数为2*n |G|表示置换群的个数View Code #include <iostream>#include <cstdio>#include <c
阅读全文
摘要:官方解题报告:1001 hdu 4370http://acm.hdu.edu.cn/showproblem.php?pid=4370题意:给你一个n*n的矩阵,求另一个矩阵满足如下条件:1.X12+X13+...X1n=12.X1n+X2n+...Xn-1n=13.for each i (1<i<n), satisfies ∑Xki(1<=k<=n)=∑Xij(1<=j<=n).使得∑Cij*Xij(1<=i,j<=n) 最小,官方解题报告已经很完善这里不再罗嗦,只是强调一下在自己出现的错误:1:这里分别得到由1,n出发的环视如果不存在返回的都是
阅读全文
摘要:链表:struct node{ int v; //边的结束顶点 int w; //边的长度 node* next; //指向以同一起点的下一条边的指针}*head[N],H[M]; //head[u]指向以u为起始点的第一条边void init(){ memset(head,NULL,sizeof(head));}void add(int u, int v, int w)//添加边{ node* p = &H[tt++]//new node; p->v = v; p->w = w; p->next = head[u]; head[u] = p;}//使用的时...
阅读全文
摘要:http://poj.org/problem?id=2057题意:蜗牛的房子遗失在了一棵树的某个叶子结点上,它要从根结点出发开始寻找它的房子。有一些中间结点可能会住着一些虫子,这些虫子会告诉蜗牛它的房子是否在以这个中间结点为根的子树上,这样蜗牛就不用白跑路了。当然,如果有些结点没有住着虫子的话,那么可怜的蜗牛只有靠自己决定访问顺序来探索了。假设蜗牛走过一条边的耗费都是1,且房子遗失在每个叶子结点的概率都是相等的,那么请问蜗牛找到他的房子的最小数学期望值?思路:http://blog.sina.com.cn/s/blog_5f5353cc0100hd08.html (觉得这里讲的比较清楚)Vie
阅读全文
摘要:http://poj.org/problem?id=1185题意:给出一个n*m的矩阵,矩阵的每个方格标有P/H p表示可以安置大炮,H表示不能安置大炮,当大炮安置于(i,j)点时,其左右两个单位以及上下两个单位都在攻击范围,求在两支大炮不会相互攻击的前提下,最多能够安置大炮的数量。思路:当前行大炮的的安置要受其前两行的影响,所以状态转移方程有:dp[i][j][k] = max(dp[i][j][k],dp[i - 1][k][l] + sum[j]) dp[i][j][k]表示第i行的状态为j第i - 1的状态为k sum[j]表示该行取j状态时可能增加的数量;View Code #i..
阅读全文
摘要:http://poj.org/problem?id=3254题意:给定一个n*m的矩形,fj要在里面种玉米给奶牛吃,矩形内的小格中如果为1说明土地肥沃可以种植,如果为0说明土壤贫瘠不能种植玉米,而且奶牛们不喜欢在挨着的田地里吃玉米,问fj有多少种可选择方案种植玉米。思路:表示对状态dp不来感啊,首先dp[i][j]表示第i行在第j中状态下的可能数,则有dp[i][j] += dp[i - 1][k]这里k是在第i - 1行的所有状态中满足要求的状态。j也是在第i行满足要求的状态。j,k满足要求的条件:1:满足当前行本身的种植条件;2:与上一行的种植情况要满足要求;View Code #incl
阅读全文
摘要:雅虎刊发文章称,科技日新月异,我们难以紧跟每一项最新和重大发明。伴随着每部新智能手机、每台新计算机、每个新芯片的推出,很多目前推出的技术方明将成为明日的标准。随处可使用无线高速互联网?由于LTE网络的出现,我们距此又近了一步。自动驾驶汽车?谷歌正在研发。智能家用电器?Android@Home系统可帮助实现。以下是雅虎总结的最佳技术方明,雅虎相信这些技术发明将成为未来的标准。 1、 微软Kinect微软Kinect于2010年上市发售 Kinect的出现标志着玩家首次在不需要使用任何控制器的情况下享受视频游戏。正如微软的宣传口号,用户乃是Kinect的控制器。Kinect不仅支持动作捕捉,还..
阅读全文
摘要:http://poj.org/problem?id=1925题意:蜘蛛侠的女朋友被坏人抓到了tower (目标点),他必须尽快从apartment(起点)到tower去救人,给出n个建筑物的坐标以及高度(第一个为起点最后一个为目标点),求蜘蛛侠用蜘蛛网最少荡几次才能到达tower?注意:这里在起点之后的建筑物保证高度都会大于等于起点的高度。思路:首先计算每个点i的来源点j的取值范围,然后枚举这个范围,递归的求解。假设来源点为j 则有x[i] - sqrt(h[i]*h[i] - (h[i] - H)*(h[i] - H)) <= j < x[i]; 其中x[i]为i建筑物的坐标,h
阅读全文
摘要:http://poj.org/problem?id=2948题意:给你一个n*m的矩形方格,每个方格里面都存有一定的矿资源,要求我们在每个方格内建立传送带,将他们传送到指定的工厂,一定有两种资源一种是yeyenum ,规定这种资源只能用自东向西传送带传送到最西边的工厂否则这些资源就会丢失,第二种为bloggium,规定只能用自南向北的传送带传送到最北边的工厂生产否则这种资源也会丢失。为如何开采后传送资源使获得的资源数最多,并输出最多的开采量。思路:对于每一个点来说,他要么一直传送到最北边的工厂,要么传送到最西边的工厂,所以对于每一点有两种传送方式,故有状态转移方程为:dp[i][j] = ma
阅读全文
摘要:http://poj.org/problem?id=2029二维树状数组解法:http://www.cnblogs.com/E-star/archive/2012/07/30/2615239.html题意:给定一个W*H的矩形方格,然后给出n个柿子树所在矩形小方格的坐标,然后给你一个dx*dy的小矩形,求用此小矩形能够框住的最多的柿子树的个数;思路:dp[i][j] 存储从[0,0]到[i,j]的和,然后暴力枚举即可:View Code #include <cstdio>#include <iostream>#include <cstring>#includ
阅读全文
摘要:http://poj.org/problem?id=3280题意:给定一个长度为m的字符串(都是小写字母) ,求通过添加或者删减若干个字符是原字符串变为回文串的最小代价(这里给出n个字符的删除与添加所需的代价,规定添加和删除的字符串都在给定的这n个字符中);思路:只能说自己dp太弱了,以后有时间一定要多练习dp。这里对字符串从两端开始进行比较如果相同则dp[i][j] = dp[i + 1][j - 1],如果不同则dp[i][j] = min(dp[i + 1][j] + min(addv[str[i] -'a'],delv[str[i] - 'a']),dp
阅读全文
摘要:http://poj.org/problem?id=1054题意:给你r*c的一块稻田,每个点都种有水稻,青蛙们晚上会从水稻地里穿过并留下脚印,问题确保青蛙的每次跳跃的长度想相同,而且沿直线行走,给出n个青蛙的脚印点问存在大于等于3的最大青蛙走的连续的脚印个数;若不存在输出0思路:这题O(n^3)的三次方+j剪枝竟然能过无语了。。。。首先排序,然后O(n^2)枚举任意两点找直线,O(n^2)判断同一直线并且是同一青蛙留下的脚印然后求最大值。剪枝:1:青蛙的起点肯定在稻田外;2:该点的直线上的脚印一定要大于上一次的点数;3:多余上一点的基础上点要在稻田内;View Code #include &
阅读全文
摘要:http://poj.org/problem?id=1191题意:中文省略.思路:黑说p116有讲解,主要的状态转移方程为横着切:dp[k][x1][y1][x2][y2] = min(dp[k - 1][x1][y1][mid][y2] + dp[1][mid][y1][x2][y2],dp[k - 1][mid][y1][x2][y2] + dp[1][x1][y1][mid][y2]); x1 + 1 <= mid < x2竖着切:dp[k][x1][y1][x2][y2] = min(dp[k - 1][x1][y1][x2][mid] + dp[1][x1][mid][x
阅读全文
摘要:DFS解法:http://www.cnblogs.com/E-star/archive/2012/08/11/2633842.htmlhttp://poj.org/problem?id=1691题意:给定一个大矩形,然后给出n个需要染色的小矩形的左上角的坐标,右下角的坐标以及该矩形要染得颜色,每个颜色对应的一把刷子。问将这些小矩形染完规定的颜色之后需要最少的刷子数。要求:只当该小矩形的上边的矩形都染完色之后,该矩形才能染色,如果同一个刷子被使用多次也要计算进来;View Code #include <cstdio>#include <cstring>#include &
阅读全文
摘要:http://poj.org/problem?id=1691题意:给定一个大矩形,然后给出n个需要染色的小矩形的左上角的坐标,右下角的坐标以及该矩形要染得颜色,每个颜色对应的一把刷子。问将这些小矩形染完规定的颜色之后需要最少的刷子数。要求:只当该小矩形的上边的矩形都染完色之后,该矩形才能染色,如果同一个刷子被使用多次也要计算进来;思路:首先根据一个矩形的所有上部分染完之后才能染色建立关系图,然后根据拓扑排序的理论,找入度为0的点开始染色,(因为入度为0 表明其上部的所有矩形都已经染色),dfs所有点求最小值。注意这里画的边只是统计度数用的,而我们真正用来描述可行的边是根据经过该点之后的剩余点里
阅读全文
摘要:http://poj.org/problem?id=3373题目意思:给出2个整数N(n<10^100)和K(k<10000),求满足以下条件的整数M1、M与N位数相同2、M能被K整除3、满足以上两点时,M和N不同位数最少4、满足以上三点时,M值最小思路:题目意思很好理解,我们只要以n为基础分两个方向搜索即可,1:首先搜索比n小的,这样保证在为数不同的前提下,M值最小;2:搜索比n大的,详细的解题报告:http://blog.csdn.net/lyy289065406/article/details/6698787解题报告中说只要改变n的5位就一定能够找到解(由鸽巢定理得 k最多为
阅读全文
摘要:http://poj.org/problem?id=1724题意:Bob现在有的钱数为k,他想从城市1到城市n,给出m条连接两个城市的有向边,并且给出路的长度w,和经过这条路要交的钱数c。问Bob在花的过路费不超过k的前提下能到达城市n的最短路径为多长。思路:才开始我想spfa来做,开两个数组dis记录距离最短disw记录话费最小,在松弛的时候进行距离与费用的限制来进行,可是发现当某一个点被多个点更新时,比如i点被更新为[7,12] [9,9] [12,7]那我们选择哪一个呢?如果我们选择路径短的话,[7,12] 可是可能时间总和就会超出k,如果我们选择费用小的话[12,7] 可是路径的长度可
阅读全文
摘要:http://poj.org/problem?id=3411题意:给出 n 个节点 m 条边,求从 1 到 n 的最小花费。有两种支付方式:1> 预先在城市 Ci (必须先到过该城市)支付费用 Pi ;2> 在终点 Bi支付费用 Ri;思路:这里给定的节点,边的数量都<=10爆搜没问题,关键注意一下几点:1> 边有多条,不能用邻接矩阵计算,而要用邻接表(存在重边)。2> Pi 始终小于等于对应的 Ri。3>每个点可以走多次,边也可以走多次。这里正常的搜索写法不会重复走一个点而这里当遇到需要提前支付的路并且支付点还没有访问过就必须返回去访问支付点,这里我们每次
阅读全文
摘要:http://poj.org/problem?id=1699DFS+剪枝解法http://www.cnblogs.com/E-star/archive/2012/08/10/2631584.html题意:现在给出几个基因片段,要求你将它们排列成一个最短的序列,序列中使用了所有的基因片段,而且不能翻转基因。,这些基因可以重叠,只要一个基因的后段和一个基因的前端一样,就可以将其重叠链接在一起。现问将这些 基因全部排列出来,最短的长度为多少。思路:将n个基因片段的所有状态压缩,dp[i][j]表示状态i以j基因片段结尾的最短长度,则有dp[i][j] = min(dp[i][j],dp[tmp][k
阅读全文
摘要:官方解题报告http://page.renren.com/601081183/note/865145486?null&ref=minifeed&sfet=2011&fin=0&ff_id=601081183&feed=page_reblog&tagid=1981432999&statID=page_601081183_2&level=21001 hdu 4350Cardhttp://acm.hdu.edu.cn/showproblem.php?pid=4350题意:给定52张牌,按顺序排列着,给出操作每次讲下表为[l,r]的牌一道
阅读全文
摘要:http://poj.org/problem?id=1699题意:现在给出几个基因片段,要求你将它们排列成一个最短的序列,序列中使用了所有的基因片段,而且不能翻转基因。,这些基因可以重叠,只要一个基因的后段和一个基因的前端一样,就可以将其重叠链接在一起。现问将这些 基因全部排列出来,最短的长度为多少。思路:给出的数据量比较小相信爆搜+剪枝是可以的。首先是要预处理一下每两个基因片段合并时能够增加的长度,便于以后dfs时,直接求和就可以。View Code #include<iostream>#include<cstdio>#include<cstring>#i
阅读全文
摘要:zoj 3366http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=3366第一次接触三分,二分法作为分治中最常见的方法,适用于单调函数,逼近求解某点的值。但当函数是凸性函数时,二分法就无法适用,这时三分法就可以“大显身手”~~此题题意:给出灯泡的高度H,人的高度h,以及灯泡与墙之间的距离求人形成影子的最大长度;思路:这里人的影子的长度分地上与墙上两块,首先当灯,人的头部和墙角成一条直线时(假设此时人站在A点),此时的长度是影子全在地上的最长长度,当人再向右走时,影子开始投影到墙上,当人贴着墙,影子长度即为人的高度。所以当人从A
阅读全文
摘要:http://www.matrix67.com/blog/archives/115求next函数模板:void GetNext(char *s){ int len = strlen(s); int i,j; i = 0; j = -1;//j从0开始,i从1开始 next[0] = -1; for (i = 1; i < len; ++i) { while (j > -1 && s[j + 1] != s[i])//不相同的话j就跳跃知道相同或者成为-1 j = next[j]; if (s[j + 1] == s[...
阅读全文
摘要:pku 1961http://poj.org/problem?id=1961题意:给定一个长度为n的字符串,求他的前缀且前缀满足本身为周期字符串。例:aabaabaab 长度为9 周期为3思路:kmp几乎忘干净了,开始学的时候也没有真正的理解,今天看了好长时间的getnext函数;我们在对字符串本身处理得到next函数时,next[i]记录的就是s[1,next[i]] 与s[i - next[i] + 1,i]相同时的值,这里next[i]也表示了相同区间的长度,我们的坐标从0开始则只要(i + 1)%(i - next[i]) == 0就能满足该字符串前缀是周期字符串,i+1表示的是当前枚
阅读全文
摘要:1004 hdu 4334http://acm.hdu.edu.cn/showproblem.php?pid=4334题意:给定五个集合,从五个集合中分别取出5个数,如果存在满足a1 + a2 + a3 + a4 +a5 == 0 输出yes,否则no; 集合的大小小于200 ai的取值为[-10^15, 1 0^15]思路:开始的时候O(n^2)求出前两个集合的所有可能的和,然后O(n^3)+二分log(10^4)做,结果竟然tle。。坑爹啊。。。。最后用了hash过的。好像poj有个类似的题目,也是hash做的。hash开散列两种实现方式,挂链:View Code #include <
阅读全文
摘要:欧拉函数:定义:用于计算 p(n),比n小的所有与n互质的数。计算公式:p(n)=n*(1-1/p1)*(1-1/p2)....*(1-1/pk)【p1,p2,pk都是n的素因子】另:若n=p1^q1*p2^q2*.....*pk^qk则,p(n)=(p1-1)*p1^(q1-1)*(p1-1)*p2^(q2-1)......*(pk-1)*pk^(qk-1)性质:若m,n互质,φ(mn)=φ(m)φ(n)。当n为奇数时,φ(2n)=φ(n)欧拉定理:a,m互质,a^φ(m)≡1(mod m)例:2,3互质,那么,2^2%3=1推论:对于互质的数a、n,满足a^(φ(n)+1) ≡ a (mo
阅读全文
摘要:欧拉函数:定义:用于计算 p(n),比n小的所有与n互质的数。计算公式:p(n)=n*(1-1/p1)*(1-1/p2)....*(1-1/pk)【p1,p2,pk都是n的素因子】另:若n=p1^q1*p2^q2*.....*pk^qk则,p(n)=(p1-1)*p1^(q1-1)*(p1-1)*p2^(q2-1)......*(pk-1)*pk^(qk-1)性质:若m,n互质,φ(mn)=φ(m)φ(n)。当n为奇数时,φ(2n)=φ(n)欧拉定理:a,m互质,a^φ(m)≡1(mod m)例:2,3互质,那么,2^2%3=1推论:对于互质的数a、n,满足a^(φ(n)+1) ≡ a (mo
阅读全文
摘要:1001 hdu 4320 http://acm.hdu.edu.cn/showproblem.php?pid=4320题意:V写下一个A进制的任意有限小数,如果S能将其翻译成B进制的有限小数,则S赢,输出Yes 否则V赢输出No;思路:只要A的所有质因子都包含在B中,S就能赢(证明没看懂!!求指教)这里注意:(N表示A,B的极限值)1:一个数i的质因子,至多只会存在一个大于sqrt(i)的。所以这里我们只要枚举出小于sqrt(N)的所有质数即可,然后用所有小于sqrt(j)的质数来查找j的质因子,同时j也要做相应的除法把枚举道德质因子除去,当枚举完所有小于sqrt(j)质数时,j如果>
阅读全文
摘要:Levenshtein Distance (LD, 来文史特距离)也叫edit distance(编辑距离),它用来表示2个字符串的相似度,LD定义为需要最少多少步基本操作才能让2个字符串相等,基本操作包含3个:插入, 删除, 替换;比如,kiteen和sitting之间的距离可以这么计算:1,kitten -- > sitten, 替换k为s;2,sitten -- > sittin, 替换e为i;3,sittin -- > sitting, 增加g;所以,其LD为3。设计状态d[m][n] = d(A[1..m], B[1..n]),易知:d[0][0] = 0;d[i]
阅读全文