zoukankan      html  css  js  c++  java
  • 省选模拟2 题解

    A. 铁轨建设

    暴力插头dp+网络流判断可行性,可以拿到85分。

    然而这个题看起来就很像无限之环,只要稍微改一下建图就好了。

    然而这个建图还蛮难想到的。

    B. 圈地游戏

    因为不会做+看不懂题解+std太长,所以咕掉了。

    C. 组合数学

    70分部分分:考虑到状态数很少,直接暴力状压dp就好了(可以用vector+map记录状态)。

    然而题解第一步的转化题意就很神仙:

    考虑n种球,并且第i种有$a_i$个,每个球有不同的编号,总共有m个球。

    现在将m个球排成一行,要求对于每种球,1号球应当排在2~$a_i$号球中每一个球的前面。

    显然这个玩意等于m的阶乘除掉每个$a_i$,表示只对一号球在最前面施加限制。

    然而上述简单的式子与题中给出的式子并不贴近,还要继续进行拟合。

    考虑枚举一个长度为n的排列,表示每种球的1号的球出现的位置的排名。

    因为确定了一个排名,限制可以继续进行施加,这个时候我们发现已经成功拟合出了前缀和的效果。

    然而与题中的式子还差了一点,也就是对于最后一种球,并不需要施加限制。

    所以问题可以转化为求m个球,满足除了最后一种球,其他种球标号为1的球在其他标号的球前面的方案数。

    这个玩意可以通过容斥来求。

    因为最后一种球不受限制的特殊性,现在枚举最后一种球,设为$last$,这种球的第一次出现的位置称为$pos$。

    设$f_i$表示钦定$i$种球放到了$pos$的后面。

    $g_i$表示恰好$i$种球放到了$pos$的后面。

    显然我们只要求$g_0$,这个玩意容斥就好了。

    枚举钦定放到$pos$后面的组合$b$,可能放到左面的集合为$c$。

    有$f_i=a_{last}frac{(t+a_{last}-1)!}{prod b_j}*inom{m-pos}{t+a_{last}-1}*frac{(m-t-a_{last})!}{prod c_j}$。

    两边的项分别表示内部的排序,中间乘的组合数表示将两部分合并。

    然而枚举组合的复杂度仍然没戏,然而本题中组合的贡献较为简单,所以考虑背包处理这个玩意就好了。

  • 相关阅读:
    android学习十四(android的接收短信)
    C/C++知识要点4——printf函数以及cout的计算顺序
    HDU 5355 Cake(2015多校第六场,搜索 + 剪枝)
    微信错误提示code= -4/微信发送被拒绝
    struts2的validate在使用过程中的一个问题
    28.字符串的排列
    Redis入门经典——The Little Redis Book (翻译)
    POJ 3155 Hard Life(最大密度子图)
    BZOJ 1798 AHOI2009 Seq 维护序列 线段树
    RT-Thread开篇
  • 原文地址:https://www.cnblogs.com/skyh/p/12093511.html
Copyright © 2011-2022 走看看