zoukankan      html  css  js  c++  java
  • CSPS_109

        T1

          状压+位运算解决

        T2

          打完暴力后感到了迷茫..

          不过看这张表里1的数目占了一半之多,应该合法情况挺多的

          拿出了从未用过的srand(time(0));

          结果撞上正解了(笑)(rp--)

          现在$Lrefrain$教会我正解了

          解释下题解式子

          设$c_i$为含有第i个元素的集合数量

          已知$sumlimits_{i=1}^{2*n} c_i=n*(n+1)$

          求$sumlimits_{i=1}^{2*n} frac{C(c_i,2)}{C(n+1,2)}$即任选两个集合的交的大小的期望

          考虑上式取min值的情况,由于组合数增长很快,$c_i$应是平均分配。

          则$c_i=(n+1)/2$上式为$2*n* frac{((n+1)/2)^2}{n*(n+1)} -1$这里拆了个组合数

          即$frac{n+1}{2}-1=frac{n-1}{2}$

          精彩继续,为什么是$O(n)$对

          我们已经知道,最劣情况下,交集总大小为$C_{n+1}^2 * frac{n-1}{2}$

          而“存在一对集合交集>n/2"要求的最低限度为$C_{n+1}^2 * frac{n-2}{2}$

          最劣情况下,会多出来的交集大小为$C_{n+1}^2 *frac{1}{2}$

          也就是$frac{(n+1)*n}{4}$

          考虑多出来的大小最劣时能使多少对合法

          那显然是让合法的消耗的交集大小最大,也就是完全匹配

          每对匹配,消耗$O(n)$个大小,那么也会有最少对数为

          $O(n)$

          随便随

        T3

          想了会dp,不可做。

          也许只能贪心了,贪心好像挺对的。

          到了不放不行的地步再放,能辐射到一片最大的区域,有包容性。

          考虑在有根树里dfs,一个灭火器可以向儿子方向或向父亲方向灭火

          肯定是优先去灭深度最大的儿子,这点在回溯的过程中解决了

          剩余的可以回头去消他的父亲叔叔兄弟啥的,记录在数组里。

          第二种情况一定可以在lca处被枚举到,所以这个灭火器的贡献不怕遗漏了

          upd:非常侥幸..使用了比较降智的累加避免了我没想到的向上取整把0取成1的情况

  • 相关阅读:
    存储过程学习笔记
    重新学习struts
    ANT打包J2EE项目war包
    08 | 递归:如何用三行代码找到“最终推荐人”?
    基于Flask 实现Web微信登陆
    基于轮询实现实时的在线投票系统
    Flask 微信公众号开发
    微信公众号开发
    爬虫之正则案例
    爬虫之正则表达式的应用爬取
  • 原文地址:https://www.cnblogs.com/yxsplayxs/p/11832682.html
Copyright © 2011-2022 走看看