zoukankan      html  css  js  c++  java
  • 模拟测试71

    T1:

      直接搜索子集复杂度太高,考虑meet in the mid。

      先将两段内部的答案处理出来,暴力枚举子集即可。

      将所有数分成两半,在前一半里枚举集合和子集,在后一半里枚举集合,判断前一半的子集是否为并集的一半,再反过来枚举一遍。

      时间复杂度$O(6^{frac{n}{2}})$。

    T2:

      先判断无解情况。

      考虑逆序关系,每个数只能接受一个方向的逆序关系,且不能不接受逆序关系。

      然后就可以DP了。

      设$dp[i][j]$为在前$i$个数中$i$的排名为$j$的方案数。

      当$i$存在向右的逆序关系,$dp[i][j]=sum limits_{k=1}^{j-1}dp[i-1][k]$。

      反之,$dp[i][j]=dp[i-1][j-1]$。

      前缀和优化一下即可。

      时间复杂度$O(n^2)$。

    T3:

      一道正解是随机化的题。

      将所有的$x$random_shuffle一下,然后枚举,先判断当前值是否比之前更优,若不能让答案更优,直接continue掉。

      如果能使答案更优,在二分答案。

      能让答案变优的$x$的期望个数为$logp$个,所以时间复杂度为$O(nlognlogp)$。

  • 相关阅读:
    图像的余弦变换
    图像的傅里叶变换
    图像的频域变换
    数字图像处理基本运算
    数字图像处理基本概念
    推荐几款提升效率的神器
    机器学习中常用的距离及其python实现
    打造自己的图像识别模型
    使用Colaboratory的免费GPU训练神经网络
    学霸修炼的秘籍
  • 原文地址:https://www.cnblogs.com/hz-Rockstar/p/11678456.html
Copyright © 2011-2022 走看看