Problem List(其实这几场全是附中出的)

这场比赛的题目相当有价值,特别是前两题,相当的巧妙。

A.路径二进制

数据范围这么小,当然是搜索。

\(30pts:\)大力搜索出奇迹,最后统计答案的时候拿一个桶存一下已经统计了哪些数,由于\(d<=20\),所以\(result<=2^20\),所以还是存的下的。

\(60pts:\)我们发现重复状态其实非常之多,我们加上一个记忆化进行剪枝:\(vis[i][t][S]\)表示\(i\)号点、时间是\(t\)、当前数是\(S\)是否已经访问过,如果已经访问过那就可以回溯了。时间复杂度和空间复杂度都是\(O(nd2^d)\)的,时间上可以过满数据,但是空间会被卡。

\(100pts:\)相当巧妙的方法来优化空间:我们在搜索时进行折半,只从一开始搜索长度为\(\frac{1}{2}d\)的链并用状压存下是否可达存下来,然后分别在每个点往外搜索长度为\(\frac{1}{2}d\)的链并状压存下,最后遍历每个点暴力合并前后两段就可以了。空间复杂度是\(n^22^{\frac{1}{2}d}+2^d\)的,时间是\(n^22^d\)的。

B.停车场

\(20pts:\)悬线法可以解决静态的平面最大全0矩阵问题。当然也可以用\(DP\)解决:设\(f_{i,j}\)为在结点\((i,j)\)向左上能延伸的最大方形的边长,\(h_{i,j}\)为向上能有多少个空位,\(r_{i,j}\)是向左的空位,于是得到\(f_{i,j}=min\{r_{i,j},h_{i,j},f_{i-1,j-1}+1\$。复杂度\)O(n^2m)$。

\(70pts:\)你会发现没有这一档部分分,这个是我考场上乱搞搞出来的分数。你会发现一个神奇的性质:

假设我们要在\(now\)这个点放一辆车,那么它只会对它右下角的点的\(DP\)值产生影响,并且下面这种已经放过车的右下方的位置的\(DP\)值也没有影响,所以我们要更新的点的数量就比较有限了。关于如何遍历这个奇形怪状的东西,我们只需要一行一行枚举,存一下当前遇到的最左边的车的横坐标,以后便利的横坐标都要小于这个值就行了)。另外我们要动态查询\(f\)的最大值,这个东西用一棵权值线段树当成平衡树跑就可以实现\(log\)级别,所以总的时间复杂度最劣是\(O(n^2dlogn)\)的,但是只要随机它能飞起来。

\(100pts:\)简直精妙到不得了的,时间复杂度应该是最劣\(n^2logn+mn\)的。答案显然是递减的,并且答案的值域就只有\([1,2000]\),还是满足决策单调性的!这就使人浮想联翩了。由于加上一辆车可能会破坏很多答案,破坏性质不优美,即使用平衡树维护啥的都很吃力,所以我们反过来想:我们移走一辆车,看看包括它的矩形最大是多少的,这个时候两个答案取\(max\)是满足交换律的,相当优美。

但是光光这样还是相当困难。我们再加上一个小小的转换:记录上一次的答案是\(lastans\),那么我这次就依次验证有没有矩形包含这个新空格且大小为\(lastans+1\)、\(lastans+2\)······直到不合法为止。这个可以用平衡树来解决:设\(r1_{i,j}\)、\(r2\)、\(r3\)、\(r4\)分别是它向四个方向能延伸多少,那么我在指定空格的那个纵列上依次扫下来,看看这个高度为\(lastans+1\)的窗口内的向左、向右的最小值加起来是否能够大于等于\(lastans+1\)。显然一个空格只会影响它所在的那一横一竖的\(r\),暴力修改即可。

它的时间复杂度显然是均摊的,最劣是\(n^2logn+mn\),据说用并查集可以优化到\(n^2\alpha\)的。

这启发我们在答案值域很小、满足单调性和决策单调性的时候可以使用反过来的、判定性的方法解决问题。

学军中学csp-noip2020模拟5的更多相关文章

  1. 2016 Multi-University Training Contest 8 solutions BY 学军中学

    1001: 假设有4个红球,初始时从左到右标为1,2,3,4.那么肯定存在一种方案,使得最后结束时红球的顺序没有改变,也是1,2,3,4. 那么就可以把同色球都写成若干个不同色球了.所以现在共有n个颜 ...

  2. Java多线程 编写三各类Ticket、SaleWindow、TicketSaleCenter分别代表票信息、售票窗口、售票中心。 售票中心分配一定数量的票,由若干个售票窗口进行出售,利用你所学的线程知识来模拟此售票过程。

    package com.swift; import java.util.ArrayList; import java.util.HashMap; import java.util.List; impo ...

  3. 学军NOIP2016模拟赛1

    GTMD这么水的一套题没有AK T1:妥妥的二分答案,贪心check. T2:问题可以转化为最长上升(还是下降我记不住了)子序列. T3:发现点被覆盖上的顺序是一定的.求出这个顺序,第一个操作在线段树 ...

  4. 学军NOI训练13 T3 白黑树

    唉,大学军有自己的OJ就是好,无限orz 只有周六的比赛是开放的囧,这场比赛最后因为虚拟机卡住没有及时提交…… 否则就能让大家看到我有多弱了…… 前两题题解写的很详细,可以自己去看,我来随便扯扯T3好 ...

  5. 2019学军集训记&PKUWC2020游记

    题解:https://www.cnblogs.com/gmh77/p/12051260.html 集训(×) 被虐(√) Day1 二段考 Day2 绝对不鸽 没那回事 还在路上 其实就是咕了两天 晚 ...

  6. NOIP2020 模拟赛 B 组 Day6

    非常巧妙的一场模拟赛,比较偏向于 Atcoder 的风格,考场上做出了 A .C 两题. A. 礼物购买 排完序后一个个礼物地枚举时间复杂度是\(\Theta(nm)\)的,不能接受.但是注意到,若当 ...

  7. 从零开始学Python04作业思路:模拟ATM电子银行

    标签(空格分隔):Python 一,程序文件说明 程序分为5个组成部分 bin:放置Python程序的启动接口文件 通过Python命令启动文件夹内文件即正常执行Python程序 例如:ATM_sta ...

  8. 20150127 学军集训 day1

    day1 就直接考试... 和说好的不一样啊 第一题看都没怎么看就pass了,构造的题我一向没什么把握.然后瞟到第三题有30分可做,虽然要写的代码很大...反正我是写习惯了..期间纠结了一会还写了一个 ...

  9. ZJOI2019Round#1

    考的这么差二试基本不用去了 不想说什么了.就把这几天听课乱记的东西丢上来吧 这里是二试乱听课笔记ZJOI2019Round#2 ZJOI Round#1 Day1 M.<具体数学>选讲 罗 ...

随机推荐

  1. 脚本注入3(blind)

    布尔盲注适用于任何情况回显都不变的情况. (由此,可以看出,回显啥的其实都不重要,最重要的是判断注入点.只要找到注入点了,其他的都是浮云.) 在操作上,时间盲注还稍微简单一点:它不需要像布尔盲注那样, ...

  2. 2021 从零开始学Git【新版本Git - 8000字详细介绍】

    我写的这篇文章,主要是记录自己的学习过程,也希望帮助读者少踩坑(比如不同版本可能命令不兼容等).本文面向git零基础初学者,建议读者按照文中命令自己全部操作一遍(注意运行环境). 我的运行环境:win ...

  3. noj -> 跳马

    00 题目 描述: 在国际象棋中,马的走法与中车象棋类似,即俗话说的"马走日",下图所示即国际象棋中马(K)在一步能到达的格子(其中黑色的格子是能到达的位置). 现有一200*20 ...

  4. 【UE4 设计模式】命令模式 Command Pattern

    概述 描述 将一个请求封装为一个对象,从而使我们可用不同的请求对客户进行参数化:对请求排队或者记录请求日志,以及支持可撤销的操作. 命令模式是一种对象行为型模式,其别名为动作(Action)模式或事务 ...

  5. Java正则中"\\\\"表示普通反斜杠

    Java中"\"用于转义字符,"\\"表示普通无转义功能的反斜杠. 如果将字符串当做正则表达式来解析,那么"\\"也有了特殊意义,它与其后的 ...

  6. [no_code团队]项目介绍 & 需求分析 & 发布预测

    项目 内容 2020春季计算机学院软件工程(罗杰 任健) 博客园班级博客 作业要求 团队项目选择 我们在这个课程的目标是 在团队合作中提升软件开发水平 这个作业在哪个具体方面帮助我们实现目标 进行项目 ...

  7. Noip模拟78 2021.10.16

    这次时间分配还是非常合理的,但可惜的是$T4$没开$\textit{long long}$挂了$20$ 但是$Arbiter$上赏了蒟蒻$20$分,就非常不错~~~ T1 F 直接拿暴力水就可以过,数 ...

  8. 最容易出错的C语言指针

    C语言指针说难不难但是说容易又是最容易出错的地方,因此不管是你要做什么只要用到C指针你就跳不过,今天咱们就以 十九个例子来给大家简单的分析一下指针的应用,最后会有C语言视频资料提供给大家更加深入的参考 ...

  9. 微信公众号H5跳转小程序

    其实就是用 官方的组件wx-open-launch-weapp <div style="position:relative;"> <img class=" ...

  10. 稳了!我准备了1个晚上的CMS垃圾收集器

    面试官:今天还是来聊聊CMS垃圾收集器呗? 候选者:嗯啊... 候选者:如果用Seria和Parallel系列的垃圾收集器:在垃圾回收的时,用户线程都会完全停止,直至垃圾回收结束! 候选者:CMS的全 ...