Hackerearth: August Circuits 比赛记录
来源:互联网 发布:90年代中国电影 知乎 编辑:程序博客网 时间:2024/05/03 12:01
Hackerearth上每个月会举办一次为期一周的比赛,此次是第一次参加比赛。赛题难度由易到难,各种类型的题目都有。在没有其它参考的情况解解决算法问题,算是对自己算法实现能力的一次检验。
赛题1:Dual issue
题目:由两个素数的的乘积构成的数乘积称为dual numbers。给定一个数组,求由这个数组能组成的最大的dual number。数组中的数可重复使用。
思路:找出最大的素数,输出其平方。
赛题2:Killing Assistants
题目:有n个学生在进行射击,学生分两种类型。普通学生每次设计有1/2的概率中靶,优秀学生每次射击有2/3的概率中靶。其中普通学生有m个。
现有一个学生进行了两次射击,一次射中,一次miss,求该生为普通学生的概率。
思路:直接依据概率论的公式进行计算即可。
赛题3:Detroying houses
题目:
在二维平面上分布有多所房子,房子的坐标由(xi,yi )给出。在以原点为圆心,半径为R的圆内均匀随机地放置一个炸弹。炸弹的杀伤半径为D,所有在杀伤范围内的房子都会被摧毁。求最后被摧毁的房子的数量的期望。
思路:等价于求圆(0,0)-R,与圆(xi,yi)-D的相交部分的面积。因为在圆(0,0)-R内,只要炸弹落在这个区域内,房子必定被摧毁。因此对每个房子而言,被摧毁的概率为相交部分的面积占圆(0,0)-R的面积的比例。原问题转化为求圆相交面积的问题。
赛题4:Game with Xor
有n个数字,Alice和Bob轮流从中取出数字,Alice先手。获胜的条件是所有手中的数字的异或值比对方大。两个人都极聪明,因此他们都会用最佳策略来选择数字。给定这n个数字,求游戏结果。并且如果Alice获胜,请输出她第一个数该选什么。
思路:将所有数字以二进制表示,并对齐成一个矩阵,考察每一列中1的个数。
首先,对最高位进行考察,即对矩阵的第一列进行考察。如果最高为的1的的个数为偶数,那么最终两个人手上的数字中最高为为1的个数必然都是偶数,最终两人异或得到的数字这一位都是0,无法判断胜负,需要再根据次高位的数字进行判断是否能分出胜负。
如果最高为的1的的个数奇数,那么最终两个人手上的数字中最高为为1的个数是一奇一偶,那么在异或之后,两个人的最终得到的数字的最高为必然一个为0,一个为1(偶数个1异或之后为0)。那么,只要能保证自己在这一轮,能拿到奇数个1,Alice即可获胜。
如果这一列1的个数为4k+1型,那么Alice有必胜策略。4k+1个数,需要保证自己比对方对一个数即可。那么Alice只需要先拿一个1,之后Alice只要跟着Bob拿,保证后来两个人拿到的1个数相等就行了。Bob拿0,Alice就拿0,反之亦然。如果0的个数为偶数,自然没问题。如果为奇数,那么到最后剩下1个0,Bob拿了之后Alice没有可拿的了。但是剩下的都是1,且为偶数个,最终两人拿到的1的个数仍然相等。Alice最终那个奇数个1,Alice胜。至于拿的方法,只要开始拿1就行了,具体哪个无所谓。
如果这一列的1的个数为4k+3型,那么胜负结果需要根据余下的0的个数来判断。因为4k+3平分之后为奇数,所以多拿的人会输。因此,只要保证对方比自己多拿一个,自己就能获胜。
如果0的个数为奇数,Alice有必胜策略。Alice先拿一个0。由于0的个数为奇数,因此Bob不得不比Alice先拿1。等Bob拿到1之后,如果还有0,Alice就拿1。直至没有0为止,然后两人平分剩下的1。Bob多了一个,Alice胜。Alice先拿一个0即可。
如果0的个数为偶数,Bob有必胜策略。他只需要跟着Alice拿即可。无论如何,Alice必然比Bob先拿1,Alice必败。
如果这一位的1的个数为偶数,则依次考察下一位。直至考察结束,如果仍没分出胜负,那么二人打平。
原题目为英文版,详见:Hackerearch:August Circuits
本人Hackearth账号:Hansyang’s Hackearth Count
- Hackerearth: August Circuits 比赛记录
- 比赛记录
- 比赛记录
- August
- CF 比赛记录
- 参加比赛记录
- codeforces比赛记录
- 第一次的比赛记录
- 比赛记录contest13
- aoj某比赛记录
- circuits hdoj4285
- 王伟奇个人比赛记录----无人机
- 记录下kaggle比赛经验
- 2017研究生乒乓球比赛记录
- [Haskell on HackerEarth] Factorial!
- HackerEarth The Grass Type
- 天池大数据比赛-菜鸟仓库比赛-第一赛季记录
- 天池大数据比赛-菜鸟仓库比赛-第二赛季记录
- 为什么使用koa2搭建微信第三方公众平台
- hello,world
- 【Leetcode】之 Binary Tree Level Order Traversal II
- 微信公众平台开发(120) 微信支付报关接口
- 图形界面笔记
- Hackerearth: August Circuits 比赛记录
- 循环结构:do - while循环
- 剑指-求链表中间结点
- IntelliJ Idea开发spark程序及运行
- Android之虚线的实现
- Failure [INSTALL_FAILED_CONFLICTING_PROVIDER]
- 程序员常用网址和工具
- uvalive 6800 - The Mountain of Gold? 判负环
- java计算两个日期相差多少天小时分钟等