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. spring5.0源码项目搭建

    一.准备相应环境以及下载spring项目 Ps:此处只讲解安装gradle 1.JDK安装 2.Idea安装 3.gradle安装 Gradle下载路径:https://services.gradle ...

  2. java编写杨辉三角

    import java.util.Scanner; /* *计算杨辉三角: * 规律:两边都是1 * 从第三行开始,上一行的前一个元素+与其并排的元素等于下面的元素 * 例如: * 1 * 11 * ...

  3. 二、Linux系统硬链接和软链接详细介绍与实践

    链接的概念 在linux系统中,链接可分为两种:一种被称为硬链接(Hard LinK),另一种被称为软链接或符号链接(Symbolic Link).在默认不带参数的情况下,执行ln命令创建的链接是硬链 ...

  4. 最大连续和(dp复习)

    最大连续和:给出一段序列,选出其中连续且非空的一段使得这段和最大. stdin: 7 2 -4 3 -1 2 -4 3 stdout: 4 状态转移方程:dp[i]=max(dp[i-1]+a[i], ...

  5. CLion在项目里编译不同文件

    1. 在完整的项目下找到CMakeList.txt(项目配置文件) 2. Build 和 Run的目标在add_executable参数中 3. 将其修改为如下格式:add_executable(pr ...

  6. HDU 6599 I Love Palindrome String (回文树+hash)

    题意 找如下子串的个数: (l,r)是回文串,并且(l,(l+r)/2)也是回文串 思路 本来写了个回文树+dfs+hash,由于用了map所以T了 后来发现既然该子串和该子串的前半部分都是回文串,所 ...

  7. Go语言实现:【剑指offer】数组中出现次数超过一半的数字

    该题目来源于牛客网<剑指offer>专题. 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组 ...

  8. Java 添加、读取、删除Excel文档属性

    在文档属性中,可以设置诸多关于文档的信息,如创建时间.作者.单位.类别.关键词.备注等摘要信息以及一些自定义的文档属性.下面将通过Java程序来演示如何设置,同时对文档内的已有信息,也可以实现读取和删 ...

  9. Ubuntu 18.04下用户的创建、修改权限及删除用户的方法

    1. 创建用户 2. 修改用户权限 3. 删除用户 1. 创建用户useradd命令 //命令一:这种命令会在登录界面显示用户名sudo useradd -m XXX -d /home/XXX -s ...

  10. php面试笔记(5)-php基础知识-自定义函数及内部函数考点

    本文是根据慕课网Jason老师的课程进行的PHP面试知识点总结和升华,如有侵权请联系我进行删除,email:guoyugygy@163.com 在面试中,考官往往喜欢基础扎实的面试者,而函数相关的考点 ...