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)\)。

纪中集训2020.02.09【NOIP提高组】模拟B 组总结反思的更多相关文章

  1. 纪中集训2020.02.05【NOIP提高组】模拟B 组总结反思——【佛山市选2010】组合数计算,生成字符串 PPMM

    目录 JZOJ2290. [佛山市选2010]组合数计算 比赛时 之后 JZOJ2291. [佛山市选2010]生成字符串 比赛时 之后 JZOJ2292. PPMM 比赛时 之后 JZOJ2290. ...

  2. 纪中集训2020.02.03【NOIP提高组】模拟B 组总结反思——登机(board),游戏(game),分组(group)

    T1 JZOJ5535. 登机(board) 比赛时 一在题目列表里看到题目标题,就热血沸腾了,不知道为什么,老师居然放了一道之前做过的题目.我清楚地记得这题是DP,于是很快码了出来.讲一讲我的思路, ...

  3. 「中山纪中集训省选组D1T1」最大收益 贪心

    题目描述 给出\(N\)件单位时间任务,对于第\(i\)件任务,如果要完成该任务,需要占用\([S_i, T_i]\)间的某个时刻,且完成后会有\(V_i\)的收益.求最大收益. 澄清:一个时刻只能做 ...

  4. 纪中集训总结 && 新学期目标

    于是紧接着又发了第二篇. 关于这次去完纪中以后的感想,写完后总觉得少了些什么,因此就发一篇小目标集合来凑数补充一下吧. Part I:图论 这方面我去之前就是很有自信,事实证明像基础的最短路.生成树什 ...

  5. 纪中集训 Day 0?

    好吧昨天的等到今天才来写,现在超不想刷题,来写下blog吧= = 坐了近10H的火车终于来到了中山市 火车上在看空之境界,等有时间补下动画吧= = 到了宿舍各种不习惯(现在才发现还是母校好QAQ)然后 ...

  6. 纪中集训 Day 2

    今天(其实是昨天= =)早上起来发现好冷好冷啊= = 吃完饭就准备比赛了,好吧B组难度的题总有一道不知到怎么写QAQ 太弱了啊!!! 蒟蒻没人权啊QAQ 今天第4题不会写,在这里说说吧 题目的意思就是 ...

  7. 纪中集训 Day1

    今天早上起来吃饭,发现纪中伙食真的是太差了!!!什么都不热,早餐的面包还好,然后就迎来了美好的早晨= = 早上做一套题,T1T2果断秒,T3一看就是noi原题,还好看过题解会写,然后就愉快的码+Deb ...

  8. 【纪中集训】2019.08.02【NOIP提高组】模拟 A 组TJ

    \(\newcommand{\RNum}[1]{\uppercase\expandafter{\romannumeral #1\relax}}\) T1 一道可以暴力撵标算的题-- Descripti ...

  9. 纪中OJ 2019.02.15【NOIP提高组】模拟 B 组 梦回三国 比赛题解(第一个)

    声明 旁边的同学小 H(胡)对我说: “哟,比赛拿了 140,强!要知道,如果哥第三题 AC 了,哥就 230 了,你个废柴!!!(比赛实际分数 130 额呵)” 顿时,千万草泥马从我心中奔腾而过:你 ...

随机推荐

  1. CentOS 7 上安装 Django 2.2.4,解决报错:No module named ‘_sqlite3′

    1.首先下载最新版的sqlite :https://www.sqlite.org/download.html 下载源码包: 配置和编译方法如下: ./configure --prefix=/usr/l ...

  2. 娱乐往事,年初捡到1G PAR,平淡的日子泛起波澜

    常听说这样的故事 垃圾佬捡到蓝牙键盘,于是配了一台上万的电脑 垃圾佬捡到机箱,于是配了一台带遥控的HTPC 垃圾佬捡到假NAS,于是组了20+T的RAID 而我,不是垃圾佬,更没有捡到过U盘,对突如其 ...

  3. Django面试集锦(51-65)

    目录 51.Django中filter和exclude的区别? 52.Django中values和values_list的区别? 53.如何使用django orm批量创建数据? 54.Django的 ...

  4. [Python]逻辑运算符 and or

    复习老男孩全栈二期视频的时候 圆号老师测试的用例两个集合and 和or操作的时候的问题 >>> a = set("what") >>> b = ...

  5. Codeforces_712_A

    http://codeforces.com/contest/712/problem/A 水题,写出来就看到规律了. #include<iostream> #include<cstri ...

  6. 【原创】为什么Mongodb索引用B树,而Mysql用B+树?

    引言 好久没写文章了,今天回来重操旧业.毕竟现在对后端开发的要求越来越高,大家要做好各种准备. 因此,大家有可能遇到如下问题 为什么Mysql中Innodb的索引结构采取B+树? 回答这个问题时,给自 ...

  7. Spark中的RDD和DataFrame

    什么是DataFrame 在Spark中,DataFrame是一种以RDD为基础的分布式数据集,类似于传统数据库中的二维表格. RDD和DataFrame的区别 DataFrame与RDD的主要区别在 ...

  8. Python实现IOC控制反转

    思路: 用一个字典存储beanName和资源 初始化时先将beanName和资源注册到字典中 然后用一个Dscriptor类根据beanName动态请求资源,从而实现控制反转 # -*- coding ...

  9. Force removing ActivityRecord no saved state问题的原因分析

    关键字,crash Force removing ActivityRecord,app died, no saved state的原因 相机拍摄的过程中断电,拍了一张黑图 I/ActivityMana ...

  10. Red Team 指南--第2章开源情报(OSINT)侦察

    第2章开源情报(OSINT)侦察 贡献者:伊恩·巴维斯翻译:BugMan 哇,慢点牛仔吧!在我们深入探讨“做性感时光”(笑话)红队闻名的黑客冒险,还有一些作业要做.五分之一的专业人士从未学习或做过任何 ...