zoukankan      html  css  js  c++  java
  • BNU-2017.7.3排位赛1总结

    比赛链接:https://www.bnuoj.com/v3/contest_show.php?cid=9146#info

    A题

    国际象棋棋盘,黑白相间染色。

    B题

    最大值只取决于每个连通块的大小,一个连通块大小是k,它就会让结果乘以2^(k-1)。

    C题

    概率dp。居然第二天又考到没看出来。设dp[i]表示i变成1的的期望次数。

    dp[i]=(1/k)Σ(dp[i/j]+1)。j是i的因子。

    D题

    本来以为是数学公式题,后半场才发觉可以状态转移。dp[n][g][k]表示n个人分成g组,每组人数在[1,k]之间的方案数。先memset(dp,0),然后dp[1][1][k]=1。

    然后dp[n][g][k]=Σdp[n-i][g-1][k], 1<=i<=k。然后用这个dp可以推出结果。

    更具体一点,两个兵种的分组数量只有四种情况,ababa,babab,abab,baba。然后枚举分组数量,根据刚才的dp推一下结果。

    E题

    以重心为原点做极角序。

    F题

    对于每个查询,枚举最短边,然后做Kruskal,直到源点到汇点连通。注意多组数据。

    G题

    因为置换满足结合律,所以可以求出一次置换,然后做m次方的快速幂。

    H题

    贪心的策略模拟打牌。

    I题 

    网上找的题解没看懂,还是用自己的笨办法吧。

    能组成三角形的分为三种情况:三条边互不相等的,有两条边相等的,三条边都相等的。

    对于三条边互不相等的,长度为i的有几个可以处理出来,然后用卷积处理处和为k的有几个。然后减去有相等的方案数,然后除以2,变成组合数。然后枚举最大边的长度,用卷积结果的后缀和减去不合要求的方案数(不合要求的方案数包括有一条边比这条边大、有两条边比这条边大的情况)。

    对于有两条边相等的,枚举相等的两条边的长度,用树状数组求对应区间的和,然后扣除自己那一个点。

    对于三条边都相等的,直接枚举边的长度。

  • 相关阅读:
    【LeetCode-字符串】重构字符串
    【LeetCode-二叉树】填充每个节点的下一个右侧节点指针
    【LeetCode-回溯】分割回文串
    【LeetCode-字符串】最后一个单词的长度
    【LeetCode-数组】生命游戏
    【LeetCode-链表】奇偶链表
    【LeetCode-字符串】反转字符串
    【LeetCode-数学】打乱数组
    Java中实现多线程的3种方法介绍和比较
    oracle 临时表空间、数据表空间、创建用户名与密码、赋予用户权限
  • 原文地址:https://www.cnblogs.com/acmsong/p/8157334.html
Copyright © 2011-2022 走看看