上一页 1 ··· 20 21 22 23 24 25 26 27 28 ··· 43 下一页
摘要: 规则1,减少HTTP请求这是最重要的原则,可以通过使用图片地图,CSS Sprites(有利有弊),内联图片(data:URL模式,IE不支持,不能被缓存),合并脚本和样式表。规则2,使用内容发布网络内容发布网络(CDN)是一组分布在多个不同地理位置的web服务器,用于更加有效地向用户发布内容。规则3,添加Expires头web服务器使用Expires头告诉web客户端他可以使用一个组件的当前副本,直到指定的时间为止。要求服务器与客户端的时钟严格同步,并且要在时间过期后在服务器配置中提供一个新的日期。规则4,压缩组件配置一下web server的压缩功能,减少服务器带宽。规则5,将样式表放在顶 阅读全文
posted @ 2013-10-15 16:20 阿牧遥 阅读(193) 评论(0) 推荐(0)
摘要: https://www.hackerrank.com/contests/illuminati/challenges/tree-covering这道题先是在上次交流讨论了一下,然后两位百度的朋友先写完代码share出来了,觉得是道很好的题,就做了一下。https://gist.github.com/c... 阅读全文
posted @ 2013-10-15 00:03 阿牧遥 阅读(348) 评论(0) 推荐(0)
摘要: 求一棵树上距离最远的两个顶点的距离,就是求树的直径。做法是两次BFS或DFS。设r是树T的根,u是距离r最远的结点,v是距离u最远的结点。则树的直径就是d(u , v)。可以用反证法证明:http://wenku.baidu.com/view/00d9168984868762caaed5a4.html(图的直径可以用Floyd做:http://blog.csdn.net/sunmenggmail/article/details/7739419)下面是一个DFS实现,里面用无向图(就是对称的有向图)来表示树,所以很方便从任何一个点DFS。做完DFS,返回节点号就行了。两次调用完,ans_path 阅读全文
posted @ 2013-10-13 22:38 阿牧遥 阅读(481) 评论(0) 推荐(0)
摘要: http://poj.org/problem?id=3264经典的RMQ题目。RMQ问题是求给定区间中的最值问题。朴素算法是O(n)的,用线段树可以将算法优化到O(logn)(在线段树中保存线段的最值)。不过,只查询的话RMQ算法最合适:它可以在O(nlogn)的预处理以后实现O(1)的查询效率。线段树主要的区别是可以修改区间,RMQ不行。下面把Sparse Table算法分成预处理和查询两部分来说明。 使用了倍增思想。预处理:以求最大值为例,设d[i,j]表示[i,i+2^j-1]这个区间内的最大值,那么在询问到[a,b]区间的最大值时答案就是max(d[a,k], d[b-2^k+1,k] 阅读全文
posted @ 2013-10-13 14:10 阿牧遥 阅读(191) 评论(0) 推荐(0)
摘要: 第二次mock。出的题是,假设有一个地区不能使用7,都用之后的数字代替,比如8代表7,18代表16(中间有7和17).那么给出一个这个地区的数X,求普通地区的数Y。首先是找规律,发现其实就是找给出的数X之前带有7的个数diff,然后输出就是X-diff。之后就是怎么找带有7的数字的个数。想的过程中,隐隐约约觉得,比如求一个数1394,那么应该要用到10以内或100以内的带7的数字的个数,于是就想把它们存起来。F[1]表示1~10之间的带7的数字,是1,然后F[2]表示1~100之间的,是19。然后推出了递推公式,F[i+1]=F[i]*9 - 10 ^(i+2)然后拿个数字做试验,结果一开始拿 阅读全文
posted @ 2013-10-11 22:25 阿牧遥 阅读(226) 评论(0) 推荐(0)
摘要: 最短路径,Dijkstra算法。根据题意将每种物品看成每个顶点,优惠价格看成边,便构成一有向图,然后可以用Dijkstra求解。因为有等级限制,求一次Dijkstra是不行的。思想是枚举0~L的每一种限制i,除去不在区间[rand[1]-i,rand[i]+m-i](rand[1]为酋长的等级)的顶点,然后Dijkstra,取其中最小的。例如假设酋长等级为5,等级限制为2,那么需要枚举等级从3~5,4~6,5~7。从满足改等级范围的结点组成的子图中用Dijkstra来算出最短路径,最后求出最小值。构图时要注意的是,酉长的承诺不是最初的源点,它是一个目标点,也就是说点到点的指向方向是由无替代品的 阅读全文
posted @ 2013-10-11 15:45 阿牧遥 阅读(200) 评论(0) 推荐(0)
摘要: 一开始不清楚什么思路,觉得怎么才能“智能”的判断是否永真呢?后来看到只有五个变量,1和0可以2^5暴力来做。接下来就是计算表达式的值了,可以用一个stack记录操作符和操作数。计算的时候从右向左入栈,栈里面存的都是计算出来的值,遇到操作符时开始取栈里的数值计算。http://blog.csdn.net/lyy289065406/article/details/6642766也可以用递归,更简洁。http://blog.csdn.net/allenlsy/article/details/4885948还有做POJ的时候,适当还是可以debug的。#include#include#include 阅读全文
posted @ 2013-10-10 12:51 阿牧遥 阅读(202) 评论(0) 推荐(0)
摘要: BFS。这里用了queue,以及在数据结构里存了上一个的高度。也可以递归调用完成BFS,在调用之前做判断:http://community.topcoder.com/stat?c=problem_solution&cr=9958883&rd=5856&pm=2932import java.util.*;public class TopographicalImage{ public int[] calcPeakAreas(String[] topoData) { int m = topoData.length; int n = topoData[0].le... 阅读全文
posted @ 2013-10-10 00:57 阿牧遥 阅读(264) 评论(0) 推荐(0)
摘要: 对我来说,此题不易。此题是BFS+状态位压缩。参考:http://blog.csdn.net/hackbuteer1/article/details/73922451. BFS也可以用来求最优解。2. 要理解棋盘上任何一个子,所有翻奇数次和所有翻偶数次都是等效的。可以想象假设其他子不翻(这是其他棋子翻过得某个状态),只翻某一个子。那么它翻0次和翻2次结果是一样的。由于求最小值,所以任何一个子只能翻0次或1次。3. 所以最多有2^16个状态。4. 状态可以压缩。比如bwwbbbwbbwwbbwww可以表示成1001 1101 1001 1000,也就是十进制40344。5. 对每一个要反转的子, 阅读全文
posted @ 2013-10-09 20:08 阿牧遥 阅读(4156) 评论(0) 推荐(0)
摘要: 这道题目以前见过,所以想了一下就想出来了http://www.cnblogs.com/lautsie/p/3259724.html。就是先修改指针维护一个从原先节点到新建节点的关系,最后再改回去。实现过程中,一度忘记把node往前更新了。public class Solution { public RandomListNode copyRandomList(RandomListNode head) { if (head == null) return null; RandomListNode node = head; // copy node a... 阅读全文
posted @ 2013-10-09 17:24 阿牧遥 阅读(556) 评论(0) 推荐(0)
上一页 1 ··· 20 21 22 23 24 25 26 27 28 ··· 43 下一页