- 博客(135)
- 资源 (4)
- 收藏
- 关注
原创 Android音量控制
如果你在应用中使用了MediaPlayer,并且尝试在其实例化出来的一个对象中使用setVolume(vol,vol)来调节音量大小时,往往会发现并不奏效。具体的原因还不得而知,但是如果只是想调节音量大小的话,还是有解决办法的。 而这个办法就是:通过AudioManager来调节音量。 AudioManager使用来修改系统中的音量的,可供修改的
2013-07-12 09:42:54 1584
原创 Android触摸事件的分发处理
Android中的触摸事件很常见,但是处理起来却不一定简单。比如说,一个最简单的屏幕触摸动作:按下,滑动,抬起。这个触摸动作会触发一系列的触摸事件:ACTION_DOWN->ACTION_MOVE->...->ACTION_MOVE->ACTION_UP。而当屏幕中包含一个ViewGroup,而这个ViewGroup又包含多子view时,Android系统对触屏动作的响应是如何处理的呢?在
2013-07-11 13:39:51 1280
原创 Android多点触控
Android的多点触控,实则上就是对MotionEvent的更多处理。在Android平台上,触屏事件均使用了MotionEvent对象方式处理,比如开始触控时会触发ACTION_DOWN,而移动操作时为 ACTION_MOVE,最终放开手指时触发ACTION_UP事件,而用户无规则的操作则可能触发ACTION_CANCEL这个动作。另外需要注意的是:Android的多点触控功能需要在Andro
2013-06-03 00:47:35 1543
原创 Android手势识别
Android中的手势识别,无非是系统对触屏信息的一个包装处理结果。如果要实现手势识别功能,首先需要实现OnTouchListener接口,并设置setOnTouchListener,最后在重载的函数onTouch()中,将MotionEvent交给GestureDetector去处理,典型的方式是gestureDetector.onTouchEvent(motionEvent)。
2013-05-24 18:31:30 1266
原创 KMP算法
KMP算法,适用于寻找子串的问题,其核心思路是先将子串进行自我匹配,构建出一个next数组。当寻找子串时匹配失败,就可以回到下标为当前位置的next数组里,继续开始匹配,避免了每次都得从头再来的麻烦,以此来节省时间,达到线性时间的复杂度。 构建next数组的核心在于自匹配。首先遍历字符串,寻找与0号等同的字符,找到就记录下当前下标到next数组内,并同步检查下一位是否一样等同,是
2013-04-21 00:50:44 738
原创 快速幂
快速幂,顾名思义就是快速求幂,时间复杂度可以从常规的O(n)下降到O(lgn)。 对于a^b这样的式子,快速幂的原理就是把b转换成二进制表示,例如:若b=11,则其二进制表示为1011,解析为11 = 2^3*1 + 2^2*0 + 2^1*1 + 2^0*1,所以: a^11 = a^(2^0+2^1+2^3)= a^(2^0) * a^(2^1) * a^(2
2013-04-20 16:42:09 818
原创 Sicily 2501. 算算式
题目概述:S = n^1 + n^2 + n^3 +...... + n^k,已知n、k,求S除以9901的余数。 根据费马小定理:假如p是质数,且(a,p)=1(即a,p互质),那么 a^(p-1) ≡1(mod p)。可知9901是质数,所以n^9900%9901=1,即存在: ( n^ (9900+m)) % 9901 = ( n^9900 * n^m
2013-03-25 23:48:19 1236
原创 XNA用户输入
XNA中支持PC上的键盘、鼠标,WP的触摸、手势和Xbox 360的手柄输入。 键盘输入 键盘输入是通过Microsoft.XNA.Framework.Input命名空间中的Keyboard类来处理的。Keyboard类有一个叫做GetState的静态方法,用KeyboardState结构的形式返回键盘目前的状态。KeyboardState结构中包含三个能够满足您大
2013-03-05 23:23:15 1111
原创 XNA游戏绘图
XNA中所有的图形都要通过内容管道来加载,它能够将jpg、bmp、png等文件转换成一种XNA很容易使用的内部格式,使得不同文件类型对于XNA都是透明的,而我们不需要为图像格式而担心。 添加图像需要在VS的解决方案资源管理器中的Content上右键点击,依次选择添加和现有项(为了便于管理可以先新建文件夹),然后在硬盘上选取你想要加载的图像。 然后要将
2013-03-04 13:36:32 771
原创 XNA入门介绍
打开初始化的项目后,可以明显看到一大堆文件,游戏的真正核心在于Game1.cs文件。这个文件里面有好几个初始定义函数,下面开始介绍。 文件的主要内容为:namespace Game1{ /// /// 这是游戏的主类型 /// public class Game1 : Microsoft.Xna.Framework.Game
2013-03-04 12:18:06 598
原创 XNA安装指导
XNA中的X表示能够在WindowsXbox和合作伙伴之间达到跨平台的强大的软件工具。N表示“下一代(Next-generation)”,A表示“架构(Architecture)”。XNA是基于DirectX的游戏开发环境,是微软对于 Managed DirectX 的修正及扩充版本。本系列文章主要参考的是Learning.XNA.4.0,作者为Aron Reed,下面是书籍下载链接:
2013-03-02 11:12:54 2746
原创 Sicily 1721. Gray code
格雷码的第n位等于对应的二进制码的第n-1位和第n位的异或,而最左边的第1位是相同的。这道题最好用printf以%s进行输出,可以节约不少时间。而至于题目是Special Judge,以其他形式进行排列是否可以得到更好的结果就不得而知了。Run Time: 0.04secRun Memory: 288KBCode Length: 731Bytes Submit Time: 20
2013-02-28 22:11:43 622
原创 Sicily 1344. 数列
阔别一年回来重新做题,感觉生疏了很多……简单来说是一个等比数列之间,不同项之和的关系。明显我们最关心的是,这个等比数列前n-1项之和和第n项的大小关系,假设: (1-q^n)/(1-q) 1/q^n+ q > 2 可知,当3所以,假设k的某次幂在data[n],那么data[ n + i + 1 ] = data[ n ] + data[ i ],其中i
2013-02-28 13:51:20 621
原创 正则表达式的等价判定
编译原理的两个课程设计之一,关于两个正则表达式是否等价的问题。题目描述及提交地址:http://soj.me/show_problem.php?pid=1000&cid=866,大概内容如下:Description两个正则表达式等价,是指两个表达式描述完全相同的语言,即正则表达式expr1和expr2等价,当且仅当L(expr1)=L(expr2)。编写判断两个正则表达式是否等价的程序。
2013-01-31 15:28:30 7440
原创 MD5算法
MD5是输入不定长度信息,输出固定长度128-bits的算法。经过程序流程,生成四个32位数据,最后联合起来成为一个128-bits散列。基本方式为,求余、取余、调整长度、与链接变量进行循环运算,得出结果。 MD5的具体实现好像有所区别,起码维基百科和百度百科的就不一样。但经过验证都是正确的,而这里采用的是维基百科的方法(http://zh.wikipedia.org/wiki/
2012-10-21 12:15:01 998
原创 Sicily 4960. Identity Checker
2012年每周一赛第四场第九题。看起来好像很高级的样子,其实嘛,就是暴力和精度问题。运气够好的话马上就可以AC了;运气不好的话,那就悲剧了……Run Time: 0secRun Memory: 312KBCode Length: 1594BytesSubmit Time: 2012-04-0122:12:26// Problem#: 4960// Submission#:
2012-04-01 22:09:25 636
原创 Sicily 4952. Another Rock-Paper-Scissors Problem
2012年每周一赛第四场第五题。剪刀石头布的问题,但题目阅读起来相当不解,反复阅读n次之后才明白:这个Sonny本来就想着出RPS,若还要继续就出PSR,若还要继续就出SRP,若还要继续就出回RPS,如此循环下去……问题是如果别人掌握了Sonny的顺序,就能够击败他,所以他就想了个另一个办法去对付这种人(真够无聊的)。首先观察得知,其序列是1-1-1-3-3-9-9-27-27这样的,奥秘就是:对
2012-04-01 21:53:59 640
原创 Sicily 5037. Abacus
2012年每周一赛第三场第四题。算盘的模拟,没什么好说的。Run Time: 0secRun Memory: 312KBCode Length: 634BytesSubmitTime: 2012-04-01 21:42:20// Problem#: 5037// Submission#: 1300038// The source code is licensed under
2012-04-01 21:40:57 499
原创 Sicily 5034. Snowflakes
2012年每周一赛第三场第一题。就是一个折来折去的问题,爱怎么折怎么折,反正折回去就好。Run Time: 0.02secRun Memory: 304KBCode Length: 916BytesSubmitTime: 2012-04-01 21:32:48// Problem#: 5034// Submission#: 1300019// The source co
2012-04-01 21:34:13 443
原创 Sicily 4875. ROBOT
2012年每周一赛第二场第三题。看完题目大家都想到的那个办法肯定会超时,复杂度是O(MN)。仔细思考可以发现,其实我们关心的只是每次移动后,在X轴和Y轴上分别靠近和远离了多少个点,两者差值就是靠近或是远离了多少距离。所以,我们只需要确定x和y为某值时会靠近和远离多少个点即可,我是使用了upper_bound和lower_bound这两个函数,复杂度是O(Mlog2N)。Run Time: 0.
2012-03-04 20:13:06 768
原创 Sicily 4873. D’HONDT
2012年每周一赛第二场第一题,简单模拟问题。题目的意思是,对于票数大于5%的政党,将其总票数分别从1除到14,得出14个值,然后把每个政党的这些值混在一起排序,那么最大的14个值所属的政党中,将有一人被选举为代表,然后就是按字典序输出每个政党的代表人数。需要注意的是,即使这个政党没人当选为代表,也是要输出的,只要他的得票数大于总票数的5%。Run Time: 0secRun Memory
2012-03-03 22:41:19 574
原创 Sicily 4874. POGODAK
2012年每周一赛第二场第二题,高效模拟问题。说白了就是一个骰子转来转去的问题,每次翻转产生的变化可以自由模拟,这不是问题。问题是如果是直接模拟的话,时间复杂度是O(RC),而R和C分别都可以高达100000,它们的积就过于大了。而事实上,在每一行中翻转时,每翻转4次就会回到原位,那么实际上需要模拟的就只是R*C%4次而已,这样就可以把问题化简了。Run Time: 0.01secRun
2012-03-03 22:31:02 583
原创 Sicily 2409. Egyptian Fractions
很长的一道题目,说的是一个贪心减法的问题:对于一个M/N的分数,我们希望能够把它写成多个1/D相加的形式,并且每个D都要尽可能的大,不能超过1000000。题目已经说明要使用long long了,另外的话就按照贪心算法的一般思路去进行即可,无陷阱。Run Time: 0.29secRun Memory: 304KBCode Length: 1358Bytes SubmitTime:
2012-03-02 13:16:00 595
原创 Sicily 1426. Phone List
判断一系列字符串中,是否存在一个字符串是另一个字符串的前缀。可以按字典序排一个序,然后前后两个对比一下就行;虽然此法比较耗时,但胜在简单易懂,空间消耗小,代码短。Run Time: 0.27secRun Memory: 708KBCode Length: 601Bytes Submit Time: 2011-06-23 20:31:06// Problem#: 1426//
2012-03-01 22:05:52 1369
原创 Sicily 4834. Party Location
2012年每周一赛第一场第三题。由于希望尽可能多的点可以被一个以2.5km为半径的圆所容纳,所以可以从半径为2.5km的且至少有两点在圆上的的圆去考虑。这样的话就依次选择两个点来画圆(有2个),再逐一判断有多少个点在当前圆内,输出最大值即可。另外由于是double类型,还有精度的问题要注意。Run Time: 0.09secRun Memory: 304KBCode Length: 2
2012-03-01 21:08:51 586
原创 Sicily 4833. Octagons
2012年每周一赛第一场第二题。若然路径是闭合的,则整个路径是由若干个八边形构造而成,那么我们就可以把这些八边形逐一去掉,直至没有;若不能全部去掉,说明路径不是闭合的。至于去掉八边形的规则可以参考代码。Run Time: 0secRun Memory: 312KBCode Length: 775Bytes Submit Time: 2012-02-27 23:23:42// P
2012-02-27 23:24:30 545
原创 Sicily 4832. Paper Route
2012年每周一赛第一场第一题,注意到这是一棵树(因为N+1个节点只有N条边即可完全连通)。若选择第i个点作为终点,易知总长度为∑ci-di+si(就是赛时没观察到这点),其中c是一条路径的长度,d为起点到终点的长度,s为终点到学校的长度。换言之,只需要找出si-di的最小值即可。Run Time: 0.32secRun Memory: 6816KBCode Length: 1180B
2012-02-26 15:05:55 567
原创 Sicily 4836. Class Schedule
2012年每周一赛第一场第五题,原本想着有机会做出来的,想了个dp算法,但复杂度是O(CT2),觉得不太可能,就放弃去打DotA了。第二天一早试了下,居然是可以过的……首先,假设dp[i][j]表示第i目录下的第j课所需要的最小能量,那么状态转移方程就是dp[i][j]=min(dp[i-1][k]+abs(P[i-1][k]-P[i][j])+E[i][j]),理解为从第i-1目录下的第k课
2012-02-26 11:30:42 677
原创 Sicily 4835. Numbersrebmun
2012年每周一赛第四题,水题,我唯一的AC题,差距还是太大了……没什么好说的,模拟手机键盘,然后慢慢对比就可以了。Run Time: 0secRun Memory: 304KBCode Length: 1081Bytes Submit Time: 2012-02-26 00:06:33// Problem#: 4835// Submission#: 1220223//
2012-02-25 23:57:37 988
原创 Sicily 1180. Pasting Strings
看完题目和样例,觉得难以理解;反复看了几遍后,觉得可能出错了,最终在POJ上找到了,就是2813,而在这里已经更正了。题目说的是一个编写HTML的一个问题,希望我们提取text中的相关内容后,仍然保持着原来的格式规范,换言之就是需要在提取内容中添加必要的tags,以确保提取后的内容和原文的格式保持一致。方法多种多样了,只是有点麻烦而已,另外注意到出给的样例都是符合HTML编写规范的。我的方
2012-02-24 12:23:48 804
原创 匈牙利算法
匈牙利算法是常见的二分图最大匹配算法,核心在于寻找增广路径。 首先来说,设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别属于这两个不同的顶点集(i在A,j在B),则称图G为一个二分图(二部图)。如下图所示:
2012-02-21 22:08:20 727
原创 Sicily 1342. 开心的金明
最常见的01背包,就不多言了。另外内联函数的确高效,能从0.01sec下降到0sec。Run Time: 0secRun Memory: 304KBCode Length: 602Bytes Submit Time: 2012-02-21 19:03:45// Problem#: 1342// Submission#: 1213198// The source code i
2012-02-21 19:35:50 3927 1
原创 Sicily 1624. Cryptoquote
字符串处理,重点不在于解密,因为给出的对应字符串天然就是一个数组。关键在于整行读入的技巧,而之前就要吃掉多余的换行符。另外复制输入数据时,要注意不要把多余的空格弄进去。Run Time: 0secRun Memory: 312KBCode Length: 429Bytes Submit Time: 2012-02-20 13:50:03// Problem#: 1624//
2012-02-20 13:47:17 688
原创 拓展欧几里德算法
拓展欧几里德定理:对于不完全为0的非负整数a,b,必然存在整数对x,y,使得ax+by=gcd(a,b)。 利用拓展欧几里德定理,可以对形如ax+by=c的式子进行是否存在整数解的判断,以及存在时解为何值的运算,整个过程称为拓展欧几里德算法。 首先,对于ax+by=c这一式子,根据拓展欧几里得定理ax+by=gcd(a,b),若c%gcd(x,y)=0成立,则表
2012-02-19 23:59:38 838
原创 Sicily 1099. Packing Passengers
已知乘客总数n,A类飞机的运输费用cA、客容量pA,B类飞机的运输费用cB、客容量pB,设A类飞机有A架,B类飞机有B架,问是否存在pA*A+pB*B=n;若存在,还要满足cA*A+cB*B最小;若存在多种解,A应尽可能的大。根据拓展欧几里的定理,先求出gcd(pA,pB)并判断其能否整除n,不能则表示无解。若能,先求出a、b,使得pA*a+pB*b=gcd(pA,pB),可知A、B的特解为A
2012-02-19 23:53:03 1030
原创 Sicily 1256. Bingo!
做这道题的时候,数据是12S1A,看完题目后觉得是因为这道题太长又晦涩,而又缺乏足够详细的说明,所以问津者寥寥,所以就放手一试,没想到还真是能AC。题目意思是关于一个Bingo的游戏,首先给出7个数字,前5个数字分别表示每个对应列已经出现了的数字个数,第6个数字(X)表示pattern的数目,第7个数字(Y)表示winning pattern需要由X个pattern中的Y个组合而成,然后给出X
2012-02-16 21:35:19 564
原创 Sicily 1201. 01000001
两个二进制数的加法,类似于高精度。Run Time: 0secRun Memory: 312KBCode Length: 806Bytes Submit Time: 2011-06-12 12:38:10// Problem#: 1201// Submission#: 800058// The source code is licensed under Creative C
2012-02-16 20:49:28 635
原创 Sicily 1221. 数字游戏
直观上觉得应该优先选取b大的那个数字,这样a就不会下降的太快,但是这种情况仅仅适用于n=m的时候。因为我们需要的是m个数字的a值之和是最大的,当n>m时,如果直接选取了下降速度最快(即b最大)的那m个数字,有可能后面的数的a值可能仍然很大,但b值却很少,这样就不能保证这m个数的a值之和是最大的(而当n=m是却不存在这个问题)。从另一个角度看,问题的本质在于选取哪m个数字,也即是该不该选取某一个
2012-02-13 16:56:00 782
原创 Sicily 1177. Take Your Vitamins
看起来好像有点烦,其实只要区分各个变量其实也没什么问题,只是U要一般读入,V是整行读入就OK了,另外的那些输出格式也比较常见,弄妥就好。Run Time: 0secRun Memory: 304KBCode Length: 603Bytes Submit Time: 2012-02-12 21:27:46// Problem#: 1177// Submission#: 120
2012-02-12 21:34:19 570
原创 Sicily 2710. 运算符重载
基础加细节,无需多言。Run Time: 0secRun Memory: 308KBCode Length: 1170Bytes Submit Time: 2011-06-19 21:10:36 // Problem#: 2710// Submission#: 819075// The source code is licensed under Creative Com
2012-02-12 12:47:53 602
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人