zoukankan      html  css  js  c++  java
  • 模拟21 题解

    A. 折纸

    考虑$O(nm)$暴力,

    对于每次操作,暴力修改n个点的下标,

    同时维护左右端点下标,最后相减就是答案。

    对于后40分,n的范围很大。

    恰好我们并不关注每个点的下标。

    对于每次翻折,

    $O(m)$查询并记录下翻折操作时的下标即可。

    注意每次操作不能单纯向一个方向翻折。

    在极端数据下可能被卡爆longlong。

    B. 不等式

    大力推式子:

    1.$l<=s*x$%$mod<=r$

    2.$l<=s*x-mod*y<=r$

    3.$-l>=mod*y-s*x>=-r$

    4.$-l$%$s>=mod*y$%$s>= -r$%$s$

    发现第四步的形式与第一步相同,递归可以解决。

    Q:递归边界是什么?

    A:当$[l,r]$范围内存在s的一个倍数,直接返回这个数是x的多少倍。

    Q:为什么由3到4可以直接取模?

    A:因为递归没有到达边界,$[l,r]$内不存在s的倍数,也就是说l,r对于s向下整除取得相同的值,

       因为中间的数夹在两者之间,三者对于s向下整除取得相同的值。

          将$a%b$改写成$a- lfloor frac{a}{b} floor *b$的形式,显然是正确的。

    Q:为什么复杂度是正确的?

    A:观察递归式,发现问题规模的缩小与辗转相除求gcd相同。

    C. reverse

    数位dp,但关注翻转后的状态。

    设$dp[i][j][0/1/2][0/1/2]$表示到第i位,前缀长度为j(为了忽略前导0),

    前缀翻转后与l比较为小于/等于/大于,前缀翻转后与r比较为小于/等于/大于。

    dfs+记忆化搜索。

  • 相关阅读:
    Android防止手动添加的本地库文件被NDK工具清理掉
    将驱动编译进Linux内核
    cocos2d-x入门学习笔记——Hello world分析
    linux内核开发入门学习
    makefile工程管理
    GDB程序调试工具
    ios学习笔记_20140308
    Mac Os学习笔记-下载黑屏
    时间过得好快
    做一个关于预防接种的app
  • 原文地址:https://www.cnblogs.com/skyh/p/11354819.html
Copyright © 2011-2022 走看看