JZOJ.1747【NOIP2014模拟11.5】无穷迷宫

比赛时

比赛时没多想,随便打了一个BFS,把迷宫复制成五份——上下左右中,然后跑BFS,如果能从1个S跑到另1个S,就可以无尽走下去否则不可以,WA30。

之后

其实,有一种特殊情况没有考虑例如下面这个:

##.#######.#
#..#......S#
#.#..#######
..#.###.....
##..##..####
#..##..#####
..##..#.....
###..##.####
##..#...####
#..##.######
..##..####..
##...#####.#

我们发现,如果按照我的方法复制5份,是无法到达另一个S点的,但是在下面多复制几份,就发现可以。正解:也是BFS,可以无尽走下去就说明出现了环(相对位置——小矩阵,形成的环。也就是说相对位置形成的以S点路径上有两个相同的点),而且绝对位置——大矩阵不出现重复,由于相对位置不同的点只有\(NM\)个所以时间复杂度为\(O(Tnm)\)。这个正解我现在还没看太懂,呵呵呵

总结

手模很有用,可以出一些坑的数据来测试程序。做题时要仔细想清楚特殊情况!!!


JZOJ1478.【NOIP2014模拟11.5】近似乘积

比赛时

我最讨厌这种数学题,尤其是这种涉及到优化循环的数学题,很显然,如果不加优化地枚举\(x\),\(y\),\(z\),会在\(40\)~\(70\)分左右,于是决定先干完T3再回来打暴力。可惜:最后没来得及。

之后

这题的做法同学们有两个

  1. 同样是枚举\(x\),\(y\),\(z\)。但是要加上一些判断条件来优化。第一个——\(x*x*x<=n\),因为我们枚举的时候是\(x \leq y \leq z\),而\(x*x*x>n\)的时候,当前\(x\)的最优答案必定是\(x*x*x\),后面两重循环枚举的顶多相等或是越来越大,差值也就越来越大。第二个——\(x*y*y \leq n\),其实这个式子和上面的原理是差不多的。所以说,这个方法的上限时间复杂度是\(O(\sqrt[3]{n}*\sqrt{n}*n)\),但实际上会小很多,可以过(不只是数据太水还是算法本身够快,有兴趣打大佬可以来仔细算算时间复杂度)

  2. 这是一个稳定的算法,虽然实际时间没有上面的快。处理出一个\(B\)数组,表示可用的数字,范围是\(1\)~\(n\),再加上第一个\(>n\)且可用的数字。两重循环枚举\(x\),\(y\)(当然是在\(B\)里面枚举),保证\(x<=y\&\&x*y \leq n\),然后二分求出第一个使得\(x*y*z \geq n\)的\(z\),那么答案有可能是\(z\),也有可能是\(z-1\),判断一下即可,还需要注意的是这里求出的\(z\)有可能比\(x\)或\(y\)小。时间复杂度的上限是\(O(\sqrt n*n*\log_2n)\),同样的,我们也可运用上面的判断条件加以优化,上限即\(O(\sqrt[3] n* \sqrt n*\log_2n)\),看起来超快?实际我们求\(B\)数组也需要一些时间最多是需要\(2000000\)(如果人家故意卡你的话),\(O(\sqrt[3] n* \sqrt n*\log_2n*2n)\),这才是真的!!!当然,这个算法可以过!!!

总结

看到我最讨厌的这种题,也不要灰心丧气,可以从中找出一些优化的方法,拿高分就不在话下了。


JZOJ3926. 【NOIP2014模拟11.5】开关灯

比赛时

我老以为这题很难,在哪儿又想DP又想网络流,最后没想到,打了个暴力——统计每一列0的个数(初始状态和期望状态都要),对于每一列判断是否相等或者与期望状态这一列的0的个数相加等于\(n\),如果相等直接跳过,相加等于\(n\)就按一下按钮,如果两个条件都满足,就递归按或不按,到递归出口时,\(n*nl\)的暴力看一下两行交换是否能达到最终状态。

之后

这题可以用二进制来做,对于每行用一个\(long \ long\)来存,我们枚举原本状态的第一行与目标状态的第几行匹配,异或代表这两行的数,得到一个数\(c\),每\(i\)位为1就表示第\(i\)列要按,否则不按。然后把原本状态的每行异或一下这个数,这样就可以求出按后的状态,再把按后的与目标的进行匹配,匹配成功且按的次数少的就更新答案,注意要把按后的状态再按回来。时间复杂度\(O(n^3)\)。

最新文章

  1. Windows共享作为公司文件服务器的案例
  2. 慕课网__CSS_网页图标制作
  3. 捉襟见肘之gestureRecognizer:shouldBeRequiredToFailByGestureRecognizer
  4. 给WordPress Page页面添加摘要输入框
  5. HOWTO:制作 Windows 7 加速部署映像(作者:苏繁)
  6. 【CSS3】Advanced10:Gradient
  7. 【转】virtualbox安装增强包及配置共享文件夹
  8. Trac的使用思考
  9. 创建SDE表空间
  10. 中国IT武林大会暨中国首席技术官2016年度人物颁奖盛典概况
  11. TortoiseGit保存用户名密码的方法
  12. APP测试中iOS和Android的区别
  13. tomcat 配置本地路径映射
  14. win7,win10系统激活工具下载
  15. 《Visual C# 从入门到精通》第三章使用判断语句——读书笔记
  16. Intellij IDEA2017.3永久激活方法
  17. input type=&#39;number&#39;时,maxlength属性无效
  18. Kubernetes学习-基础架构
  19. Alpha 冲刺一
  20. javascript设计模式开篇:Javascript 接口的实现

热门文章

  1. 集合详解之 Collection
  2. 通过openjdk源码分析ObjectMonitor底层实现
  3. 二、Shell变量
  4. 场景6:具有OpenvSwitch的提供商网络
  5. Servlet乱码问题解决
  6. 每日一练_PAT_B1001
  7. CCF_ 201512-4_送货
  8. MainActivity中R为红色
  9. ARTS Week 11
  10. Mysql 5.7.18:主从复制,io优化