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

    $morning$

    $T1:最大异或和$

    设$sum$=$a_{1}$^$a_{2}$^......^$a_{n}$,

    转化题意,相当于小$T$初始权值为$sum$,小$Q$初始权值为$0$,可以选不相连的点两个人同时异或这个点的权值

    从高到低$sum$二进制下某一位,如果是$0$,那么小$Q$和小$T$在这一位上一定相等

    如果是$1$,那么必须选一个这一位上是$1$的点小$Q$才能大于小$T$

    而如果$sum$这一位是$1$,那么至少一个点这一位上是$1$

    则题意转化为如果$sum>0$,则输出$Q$,反之输出$D$

     

    $T2:简单的括号序列$

    设$pre_{i}$表示$i$即之前(的个数,$nxt_{i}$表示$i$之后)的个数

    很容易得到$O(n^{2})$的柿子:

    $$sum_{s{i}=='('}sum_{j=1}^{pre_{i-1}}{pre_{i-1}choose j } imes {nxt_{i}choose j+1}$$

    稍化一下

    $$sum_{s_{i}=='('}sum_{j=1}^{pre_{i-1}}{pre_{i-1}choose j } imes {nxt_{i}choose j+1}$$

    $$=sum_{s_{i}=='('}sum_{j=1}^{pre_{i-1}}{pre_{i-1}choose j } imes {nxt_{i}choose nxt_{i}-j-1}$$

    $$=sum_{s_{i}=='('} {nxt_{i}+pre_{i-1}choose nxt_{i}-1}$$

     

    $T3:旅行计划$

    很容易得到$O(n^{3}k)$的暴力算法

    利用分块思想优化,设$dp[i][j][k]$表示从$i$到$j$刚好走了$k imes 100$步的最短路

    配合暴力的$dp$就可以$AC$了

    $afternoon$

    $T1:Smooth$

    类似蚯蚓的思想

    维护$15$个队列,每次取出最小的队头来更新每个队列

    为了避免有的数被重复更新,我们利用类似线性筛的思想,只让每个数被他的最小质因子筛出就好了

    $T2:Six$

    显然我们只关心每次加入的数含有哪些质因子而不是他是谁

    对于相同的质因子集合他的贡献可以预处理出来

    于是我们可以进行搜索,每次枚举这一位放的是哪个集合

    然后我们发现合法的状态非常之少,只有$20$多万个

    那么我们可以记忆化搜索,把之前选的所有集合看成一个字符串压入$hashmap$中

    记得要把集合排序后$hash$

    $T3:Walker$

    随机化都是好题(大声bb

    首先我们发现任意选两组点可以解出一组特解

    然而暴力枚举点对的话复杂度是$O(n^{3})$的

    考虑随机化

    观察题目中的一句话:不正确的结果坐标数量严格不超过一半

    这句话有什么意义呢

    其实就是说任选两个点得不到正解的概率是$frac{3}{4}$

    那么如果我们$rand50$组点对,则不得到正解的概率只有$(frac{3}{4})^{50}< 10^{-5} $

  • 相关阅读:
    将自己写的经常复用的类封装成dll/lib的方法
    Mat 和 CvMat,IplImage相互转化
    制作VB安装程序问答(Package & Deployment)
    NTDDI_VERSION,_WIN32_WINNT,WINVER,_WIN32_IE定义宏的含义
    解决"cvCreateVideoWriter保存视频帧压缩格式只能用1"的问题
    100条道理,看完后请留下你的感言
    世界上最著名的24幅奇图
    字节对齐
    齐次坐标的理解
    在OpenCV中自适应确定canny算法的分割门限
  • 原文地址:https://www.cnblogs.com/mikufun-hzoi-cpp/p/11729038.html
Copyright © 2011-2022 走看看