zoukankan      html  css  js  c++  java
  • 2018/3/26

    今天T1 T2都是思路不错的题

    T1 divisor 

      如果只考虑两个数之间的关系就是$$sum_{i=1}^{A}sum_{j=1}^{B}d(i*j)=sum_{(i,j)=1}^{}lfloor frac{A}{i} floorlfloor frac{B}{j} floor$$

      然后拓展到三个之间就是$$sum_{(i,j)=1,(j,k)=1,(i,k=1)}^{}lfloor frac{A}{i} floorlfloor frac{B}{j} floorlfloor frac{C}{k} floor$$

      然后我们就是考虑如果直接枚举i,j,k的话,很难保证他们两两互质,那我们就先保证(i,j)==1,(i,k)==1,这个在枚举的时候就可以与用预处理的gcd来判断,然后我们在用通常的套路加一个mu来保证j,k互质,然后在把mu提到前面来最终的式子就是$$sum_{i=1}^{A}lfloor frac{A}{i} floorsum_{t=1}^{C}mu(t)sum_{j=1,(i,t*j)=1}^{lfloor frac{B}{t} floor}lfloor frac{B}{t*j} floorsum_{k=1,(i,t*k)=1}^{lfloor frac{C}{t} floor}lfloor frac{C}{t*k} floor$$

      然后就可以O(n^2log) 解决了

    T2 isn

      这个题其实有很显然的结论,就是如果如果我们还可以删除一个元素,那么现在的序列中一定存在逆序的数,那么我们考虑,每次构造出来一个不降的序列,我们都可以枚举最后删除了哪些数,假设我们构成的不降的长度是j,然后有k个逆序的数,那么构成这个答案的方案数就是(n-j-1)!*k,那么我们就可以构造一个DP来计算,设计f[i][j][k],表示强制以i结尾的不降序列,长度是j,有k个逆序的存在,然后这么n^4DP就可以得到72分(主要是有用的状态数很少),然后我们考,虑优化这个DP,可以观察到,每次的j是很难去掉的,因为是(n-j-1)! 然后我们就可以考虑优化掉这个k,然后我们重新定义一下两个DP数据组,就是f[i][j]表示方案数,g[i][j]表示所有方案中k的和,然后我们就成功的优化掉了k,可以拿到92分

      正解就更神了,就是先找出所有我们能构造出来的不降序列,设f[i]是长度为i的不降序列的方案数,那么构造他的全部方案(先不考虑不合法的)就是f[i]*(n-i)!,然后我们在考虑怎么减去不合法的方案数,其实就是,如果到i不合法,那么到i+1这一步就已经是不降序列了,那么我们要减去的方案数就是f[i+1]*(n-i-1)!*(i+1)。 至于f[i],就随便DP一下,然后用树状数组优化一下就好了

    T3 tower

      这个题看懂了显然就是可以二分,然后我们换一个方向,就是考虑最少用多少个tower能使他们围出的面积有交,这个其实就很好弄了,就是每次选择连续的K个tower,然后半平面交一发,就好了

  • 相关阅读:
    postman:模拟发送一个需要 cookie 认证的请求
    TCP/IP体系结构-测试人员必须理解的
    软件测试基本方法_之验收测试
    软件测试基本方法_之集成测试和系统测试
    聊天类APP功能测试点
    软件测试中的测试数据准备
    兼容性测试
    测试面试题集合
    Python3连接数据库,读取数据
    Python3读取Excel数据
  • 原文地址:https://www.cnblogs.com/FOXYY/p/8652487.html
Copyright © 2011-2022 走看看