海贼007

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2013年7月29日

摘要: 【题意】根据一些输入串plates[i],推断设备在每一位上的运算逻辑是OR,AND还是XOR,如果可以明确推断出,return "YES",否则 return "NO"。【分析】刚开始自己搞得有点复杂,下面是某位大神的分析: 显然位与位之间互相独立,那么单独考虑一位,这是只有三种输入:(0,0),(0,1),(1,1)。能区别AND和OR的有(0,1);能区别AND和XOR的有(0,1)和(1,1);能区别OR和XOR的有(1,1)。只要分别统计M个串中每一位0和1的个数,再判断一下即可.【算法】:1.分别统计每一位的0和1的个数。至少需要2个1和1个 阅读全文
posted @ 2013-07-29 20:08 wzhscript 阅读(216) 评论(0) 推荐(0) 编辑

摘要: 【题意】:机器人Herb在起点A,根据指令a[i]在网格中行走,每次走a[i]格后会顺时针转向a[i]*90度。重复执行T次指令到达B,求A、B两地的曼哈顿距离。【算法】:1.根据指令走一遍。2.根据转的度数更新重复次数。3.根据重复次数求出B点位置,算出曼哈段距离d,return d。【Java代码】来自菜鸟 1 import java.util.*; 2 import java.util.regex.*; 3 import java.text.*; 4 import java.math.*; 5 6 7 public class RobotHerbDiv2 8 { 9 int ... 阅读全文
posted @ 2013-07-29 19:52 wzhscript 阅读(242) 评论(0) 推荐(0) 编辑

2013年7月28日

摘要: 【题意】按照指定规则给mp3歌曲排序,输出前50个歌曲名。【算法】:1.建立歌名字符串(不包含“.mp3”)数组2.排序3.取出前50个,加上后缀名.mp3【Java代码】来自菜鸟 1 import java.util.*; 2 import java.util.regex.*; 3 import java.text.*; 4 import java.math.*; 5 6 7 public class FoxAndMp3Easy 8 { 9 public String[] playList(int n)10 {11 TreeSet set = new Tr... 阅读全文
posted @ 2013-07-28 23:34 wzhscript 阅读(241) 评论(0) 推荐(0) 编辑

摘要: 【题意】将字符串A变成字符串B,两种操作:Next,将字符置换成下一个字符('a'>'b','b'>'c'...'y'>'z');Prev,将字符置换成前一个字符('z'>'y','y'>'x'...'b'>'a')。Next和Prev操作的代价不同,求出最小代价,如果不行则返回-1。【算法】:1.判断能否由A得到B。如果不能,return -1; 如何判断:可以建立一 阅读全文
posted @ 2013-07-28 23:06 wzhscript 阅读(251) 评论(0) 推荐(0) 编辑

摘要: 【题意】三人一组的竞赛,每组的战力由最强两人决定,求出第一组的战力排名的最差情况。也就是要找出尽量多的战力比第一组强的队伍。【算法】贪心算法1.把剩下的数排序。2.从最大的数开始。 1)第一组队伍的战斗力是A,count=0; 2)取队列中最大的数x,最小的数y,令a=A-x+1,找一个最小的z>=a,形成一组战队x,y,z,战斗力为x+z。从队列中去掉x,y,z,count++;如果找不到z,则return count+1;【Java代码】来自菜鸟 1 import java.util.*; 2 import java.util.regex.*; 3 import java.text. 阅读全文
posted @ 2013-07-28 22:03 wzhscript 阅读(276) 评论(0) 推荐(0) 编辑

摘要: 【题意】根据Y画出一条折线,分别求出query中的直线与这样折线的交点数,并返回。【算法】1.求query[i]与折线中每天线段的交点数(端点不算)a,如果与某条线段重合,return-1,否则继续2;2.求query[i]与Y中顶点的交点数b;3.return a+b;【调试bug】1.17行判断query[i]与线段(Y[j],Y[j+1])是否有交点时,注意数字比较大,不能采用一般的乘法来判断。【Java代码】来自菜鸟 1 import java.util.*; 2 import java.util.regex.*; 3 import java.text.*; 4 import java 阅读全文
posted @ 2013-07-28 15:44 wzhscript 阅读(265) 评论(0) 推荐(0) 编辑

摘要: 【题意】:给你两个数A、B,问从A得到B最少需要的步数,怎么走这样规定:可以A/10得到一个数,或者翻转A得到一个数。如果不能则输出-1;【算法】1.找出A中的B,计算步数。2.找出A中B的逆串,计算并更新最优解。3.输出最优解。【编码调试BUG】1.18行,A中可能不存在B,所以要考虑indexOf返回-1的情况。【Java代码】来自菜鸟 1 import java.util.*; 2 import java.util.regex.*; 3 import java.text.*; 4 import java.math.*; 5 6 7 public class TheNumberGame.. 阅读全文
posted @ 2013-07-28 15:08 wzhscript 阅读(216) 评论(0) 推荐(0) 编辑

2013年7月27日

摘要: 【题意】:两个人玩游戏,给定一个数,减去他的因子(除了1和他本身外)得到一个新数,两个人轮流玩游戏.最后谁无数可减即为失败。 【算法】根据N/P分析:1.标记出1-1000所有的质数,这都是必败点P2.从小到大,如果不是质数,则根据N/P关系判断他是N还是P。3.直到n为止。一个P/N分析的例子http://blog.sina.com.cn/s/blog_87ad13a10100y3ay.html【编码调试BUG】1.49行,生成prime数组的时候,循环结束条件应该是i divisors(int n) { ArrayList res = new ArrayList(); fo... 阅读全文
posted @ 2013-07-27 16:45 wzhscript 阅读(259) 评论(0) 推荐(0) 编辑

2013年7月26日

摘要: 【题意】:找到最短的梯子,使小人儿可以从地面吃到图中的金币。【算法】根据Blood Fill的思想想到的算法:1.设梯子的长度为i=12.用梯子进行深度优先搜索,判断金币的可达域,3.如不能到达地面,i++,继续2;否则return i【编码调试BUG】1.coin一开始就在最下层的情况,返回0;【Java代码】来自菜鸟import java.util.*;import java.util.regex.*;import java.text.*;import java.math.*;public class ArcadeManao{ boolean[][] tag ; int row... 阅读全文
posted @ 2013-07-26 13:46 wzhscript 阅读(291) 评论(0) 推荐(0) 编辑

2013年7月23日

摘要: 最近在看算法概论,关于DAG的思考:Q:为什么DAG需要按照拓扑排序的顺序来求最短路径?这样就可以保证正确性了?1.我们得从dijkstra算法的分析中得出结论。2.为什么dijkstra不能有负边?因为负边可能导致已经求出的最短路径dist(u)不正确(新发现的负边(v1,u)导致dist(u)可以更小)。3.负边导致dist(u)更小的原因,是我们在确定dist(u)时,u的度并没有考虑完全(至少(v1,u)还没有考虑到)。4.对DAG进行线性化(拓扑排序),然后按照顺序来更新dist(u),这样就可以避免已确定dist(u)继续被更改。因为每次考虑的u必满足入度为0,即所有可以到达它的边 阅读全文
posted @ 2013-07-23 15:59 wzhscript 阅读(198) 评论(0) 推荐(0) 编辑