二模 (6) day2
第一题:
题目大意:50*50的格子里玩贪吃蛇。给出N步扭头的操作,判断贪吃蛇会在第几步挂掉。(蛇初始向东)
解题过程:
1.一开始的方法是:为了加快速度,只保存头和尾的坐标,然后保存尾巴的方向,每次move先头运动,然后尾巴按照之前的方向运动直到需要改变方向(继续按之前的方向运动将撞到墙壁或者走到一个map[x][y]==0的地方)。。事实证明这样是错误的。有可能尾巴继续走会到一个map[x][y]==0的地方,但是还不需要改变方向。。 运气不错,竟然还拿到了60分。
2.AC算法:保存所有点的坐标,然后模拟。。 对于这种数据很小的题目,不必去追求速度,AC才是王道额。
第二题:
题目大意:平面上给定 n 个两两不同的整数点,统计以给定的点为顶点,其直角边平行于坐标轴的直角三角形的个数。 0<n≤100,000
解题过程:
1.首先肯定是要做个离散化,排个序。。然后想到可以枚举直角顶点,然后分别计算下面4种直角三角形:
X X XXX XXX
XX XX XX XX
XXX XXX X X
那么就要用到一个点 正左方的点的个数A,正右方点的个数B,正上方点的个数C,正下方点的个数D。
那么上面4种情况 的个数 分别为 A*C,B*C,B*D,A*D, 合并一下就是 (A+B)* (C+D)。。
所以只要统计出 每条直线上有多少个点,然后对于每个点,二分找到它属于那两条直线,乘起来 累加到ans即可。
初始得分100. 感觉会有更好的处理方法,我的方法跑出来貌似有些慢了。。常数较大。
第三题:
题目描述:
阿兰是某机密部门的打字员,出于保密的需要,该部门用于输入密码的键盘是特殊设计的,键盘上没有数字键,而只有以下六个键:Swap0, Swap1, Up, Down, Left, Right。为了说明这六个键的作用,我们先定义录入区的 6 个位置的编号,从左至右依次为 1,2,3,4,5,6。下面列出每个键的作用:
Swap0:按 Swap0,光标位置不变,将光标所在位置的数字与录入区的 1 号位置的数字(左起第一个数字)交换。如果光标已经处在录入区的 1 号位置,则按 Swap0 键之后,录入区的数字不变;
Swap1:按 Swap1,光标位置不变,将光标所在位置的数字与录入区的 6 号位置的数字(左起第六个数字)交换。如果光标已经处在录入区的 6 号位置,则按 Swap1 键之后,录入区的数字不变;
Up:按 Up,光标位置不变,将光标所在位置的数字加 1(除非该数字是 9)。例如,如果光标所在位置的数字为 2,按 Up 之后,该处的数字变为 3;如果该处数字为 9,则按 Up 之后,数字不变,光标位置也不变;
Down:按 Down,光标位置不变,将光标所在位置的数字减 1(除非该数字是 0),如果该处数字为 0,则按 Down 之后,数字不变,光标位置也不变;
Left:按 Left,光标左移一个位置,如果光标已经在录入区的 1 号位置(左起第一个位置)上,
则光标不动;
Right:按 Right,光标右移一个位置,如果光标已经在录入区的 6 号位置(左起第六个位置)
上,则光标不动。
当然,为了使这样的键盘发挥作用,每次录入密码之前,录入区总会随机出现一个长度为 6 的初始密码,而且光标固定出现在 1 号位置上。当巧妙地使用上述六个特殊键之后,可以得到目标密码,这时光标允许停在任何一个位置。
现在,阿兰有一个 6 位的数字密码,请编写一个程序,求出录入一个密码需要的最少的击键次数。
解题过程:
1.这题貌似只能BFS爆搜了。。。用双向BFS会快一些,但是还是过不了000000 999999的极限数据。需要3s左右。。老师的测试数据有点弱了。。裸的BFS竟然最多只跑了0.8s。。 然后加了个剪枝, 就是先处理出target的最大数字和最小数字,如果当前数字不在它们之间就不需要up,down操作了。瞬间变成0.2s。。
2.还有2个错误的剪枝:如果当前某一位数字和target对应位上的数相等,就不用改变他的值。。 还有 放弃左移操作。。 当然都是错的。。 不过本人实在太弱。在POJ1184提交了N次TLE,就猥琐的加了第二个错误的剪枝,并且000000 999999 直接输出59,结果就900MS AC了说。
3.如果有什么好的剪枝欢迎大神提出。
二模 (6) day2的更多相关文章
- 二模 (8) day2
第一题: 题目描述: 有 n 个炸弹,有些炸弹牵了一根单向引线(也就是说引线只有在这一端能被炸弹点燃),只要引爆了这个炸弹,用引线连接的下一个炸弹也会爆炸.每个炸弹还有个得分,当这个炸弹被引爆后就能得 ...
- 二模13day1解题报告
二模13day1解题报告 T1.发射站(station) N个发射站,每个发射站有高度hi,发射信号强度vi,每个发射站的信号只会被左和右第一个比他高的收到.现在求收到信号最强的发射站. 我用了时间复 ...
- 二模 (9) day2
第一题: 题目大意:求满足条件P的N位二进制数的个数.P:该二进制数有至少3个0或者3个1挨在一起.. N<=20000 解题过程: 1.一开始直接写了个dfs把表打了出来,不过没发现什么规律, ...
- 二模 (16) day1&day2
第一题:题目大意: 数列a[0]=a[1]=1, a[n]=a[n-2]*a[n-1]*n,求a[n]的因子个数 mod 1000000007. n<=1000000 解题过程: 1.递推式还 ...
- 二模 (15)day2
第一题:Alice和Bob两个人正在玩一个游戏,游戏有很多种任务,难度为p的任务(p是正整数),有1/2p 的概率完成并得到2p−1分,如果完成不了,得0分.一开始每人都是0分,从Alice开始轮流做 ...
- 二模 (13)day2
第一题: 题目大意: 给出一个N*M的矩阵,定义一条路径的权值为经过的所有点权值的最大值.求一条从第一行到第N行的路径,使得路径权值最小. N,M<=1000 矩阵内点的权值小于1000. 解题 ...
- 又是一个二模02,不过day2
话说比较简单.除了第三题不会写平衡树啊你妹!!边做边写吧. 机智的链接~机智的链接~机智的链接~机智的链接~机智的链接~机智的链接~机智的链接~机智的链接~机智的链接~机智的链接~机智的链接~机智的链 ...
- 二模Day2题解
小明搬家 题目描述 小明要搬家了,大家都来帮忙. 小明现在住在第N楼,总共K个人要把X个大箱子搬上N楼. 最开始X个箱子都在1楼,但是经过一段混乱的搬运已经乱掉了.最后大家发现这样混乱地搬运过程效率太 ...
- 二模 (12)day2
第一题: 题目大意: 有N颗糖,两个人轮流取,每次只能取质数颗,不能取的输.求先取者若必胜,最少需要多少步胜利.(N<=10000) 解题过程: 1.看到N的范围比较小,先打个素数表,然后dp即 ...
- 二模 (11) day2
第一题: 题目大意: 有一本n个单词的字典,其中每个单词的长度不超过4且大于0.现在给你一篇文章,文章中没有分隔符,只有小写字母.现在需要你修改最少的字母,使文章(长度为m 是由字典中的单词构成. n ...
随机推荐
- 【转】分析Linux和windows动态库
原文地址:http://www.cnblogs.com/chio/archive/2008/11/13/1333119.html 摘要:动态链接库技术实现和设计程序常用的技术,在Windows和Lin ...
- linux学习笔记2-命令总结2
权限管理命令 chmod 其他权限管理名 chgrp chown umask ========================================================= ...
- django的安装和搭建
一.先下载pyton,配置下python的环境变量,这个很重要,然后下载django,解压到与python同一个根目录底下,进入django目录,运行python setup.py install安装 ...
- extern 关键字
1 http://baike.baidu.com/view/963932.htm?fr=ala0_1_1 extern可置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量和 ...
- D3.js 完整的柱形图
一个完整的柱形图包含三部分:矩形.文字.坐标轴.制作一个实用的柱形图,内容包括:选择集.数据绑定.比例尺.坐标轴等内容. 1. 添加 SVG 画布 //画布大小 var width = 400; va ...
- OpenGL的gluLookAt观察变换函数详解
void gluLookAt(GLdouble eyex, GLdouble eyey, GLdouble eyez, GLdouble center ...
- Linux命令(1) - 查看内存使用情况: free -hm
使用"free -hm"命令查看linux服务器的内存使用状况,其中-h表示人性化显示,-m表示将内存显示为M:
- 深入理解PHP原理之变量作用域
26 Aug 08 深入理解PHP原理之变量作用域(Scope in PHP) 作者: Laruence( ) 本文地址: http://www.laruence.com/2008/08/26 ...
- 推荐两篇Unity与Android交互的文章
http://www.xuanyusong.com/archives/676 里面18,19介绍
- mac 下获取 os x 的系统版本,使用 oc cocoa
mac 下获取 os x 的系统版本,使用 oc cocoa 1: #import <CoreServices/CoreServices.h> SInt32 major, minor, b ...