zoukankan      html  css  js  c++  java
  • 考试总结 模拟83

    T1以为是大神题就没敢想??

    T2T3自以为想出了暴力很NB。然而只是可怜的大众分。你轻松想到的东西,别人也能轻松想到!!

    T1【贪心】【二进制】

    将每一个二进制位分开考虑,从高位向低位去考虑,

    先手一定会尽量让自己这一位是1,让对手是0,但是由于最终每个点都会被选,

    那么对于所有点在某一位上的值异或后==0的情况,显然先手无法选出自己是1,对手是0的情况

    而只要有一位的异或值为1,那么先手就会赢

    T2【组合数学】

    定义f[i]表示考虑到第i位已经有的(数量,g[i] 是从后往前考虑到第i位有的)数量

    那么每一个(的贡献== i前( 数量  *  i后 )数量

    显然强制i位的(必选后再算贡献不会算重或漏

    那么考虑优化

    从实际意义考虑优化$$sum_{j=1}^{j<=min(f[i],g[j])} C(f[i]-1,j-1)*C(g[i],j)$$

     $C(f[i]-1,j-1)==C(f[i]-1,f[i]-j)$

    那么原式子就变成了在f[i]-1里选f[i]-j个+在g[i]个里面选j个

    也就是在f[i]-1+g[i]里面选f[i]个

    T3【DP】【最短路】【分块】

    其实感觉就是个DP

    定义f[x][y][k]表示从x出发到y,恰好经过k条边的最短距离

    转移复杂度O(n^3*k)

    枚举k的复杂度很高,用分块思想

    定义g[x][y][k]表示从x到y,经过k*100的最短距离

    转移$$g[s][x][k]=g[s][y][k-1]+f[y][x][100]$$

    最后把f[x][y][k]从前往后扫一遍取最小值,变成至少

    每次询问枚举中间点 $$min{g[s][i][k/100]+f[i][t][len\%100}$$

  • 相关阅读:
    GO 语言使用copy 拷贝切片的问题
    ggplot 局部放大
    R语言hist重叠图作法
    illumina SNP 芯片转基因型矩阵
    Shell 变量嵌套
    JVM指令
    VUE—CLI学习
    Gradle 项目打开自动下载Zip问题及相关配置
    MySQL8服务无法启动,服务没有报告任何错误
    SpringMVC相关
  • 原文地址:https://www.cnblogs.com/casun547/p/11730097.html
Copyright © 2011-2022 走看看