摘要:
解题方法: 难点在于模型转化 $a_{i}^2$可以被转化为在$a_i$个格子里放2个不同的小球(两个小球可以放在同一个格子里)的总方案数 然后我们设$dp[i][0/1/2]$表示在i所属的区间内放置0/1/2个小球的方案数,转移比较显然 然后我们发现这个转移是可以用矩阵快速幂处理的 由于m的值较 阅读全文
摘要:
题解: 我们可以将大于号当成从左向右的边,将小于号当成一条从右向左的边 首先忽略大于号,只考虑小于号,那么图显然应该由一个个只包含同向边的连通块所构成 此时满足要求的排列方法显然为$\frac{n!}{\sum siz_i!}$ 我们只能用这种方法解决同向边约束的图,那么怎么解决包含大于号即图中边不 阅读全文
摘要:
解题方法: 先考虑一个经典问题: 对于一颗全部是白色节点的树,要求将某些节点染成黑色,且每一次染色操作为任选一边将两端点染成与其原来颜色相反的颜色,求方案数 容易推得,当黑色节点数为奇数个时,方案数为0,即无解;黑色节点为偶数个时,方案数为1 那么把问题放到图上时,我们发现我们只要随机搞出来一颗生成 阅读全文
摘要:
思路: 两端点至少选一个点作为关键点的问题用2-SAT进行连边处理即可 本题的难点在于如何维护第二个条件 朴素建边显然是不行的,我们用设置前缀节点$pre_i$的方法优化建边 $pre_i$ 表示在x组中的前i个数已经存在关键点$pre_i'$表示在x组中的前i个数不存在关键点 我们连接$(a,pr 阅读全文
摘要:
/* 如代码所示 设p(x)表示x二进制拆分后1的个数 题目要求维护的i&j==0 且 i|j=k 实际上就是 就是i|j=k 且p(i)+p(j)=p(k) 很容易理解 然后我们考虑将FMT拆成两维来同时维护这两个要求 把a[i]插入f[p(i)][i]中,b[i]插入g[p(i)][i]中 然后 阅读全文
摘要:
题解: $n\leq 2000$ ,考虑$O(n^2)$的算法 n^2的解决字符串问题大概率要使用Dp,由于要进行两个字符串的匹配,那么我们试图设$dp[i][j]$表示s串的前i位与t串的前j位匹配的最小代价 怎么进行状态转移? 胡乱搞一搞 规定$i < j$,由于一次操作是把一个数扔到一个数的前 阅读全文
摘要:
题解: 不错的期望题 要求的是概率,但是两个人在同一房间相遇后不再移动了 所以我们希望利用这个特殊的性质将概率问题转化为期望问题,那么就是设$dp[i][j]$表示Petya在i房间Vasya在j房间这种状态的期望出现次数 由于$dp[x][x]$这样的情况最多出现1次,所以此时概率=期望 考虑转移 阅读全文
摘要:
由于操作的区间互不重叠,所以我们将区间以相互包含的关系建树 $n^2$树状dp,设$dp[i][j]$表示第i个区间最大值小于等于$max(a[l[i]],…,a[r[i]])+j$的概率 设d[i]为$max(a[l[i]],…,a[r[i]])$ 转移还是比较好推的:$dp[i][j]=p_i\ 阅读全文
摘要:
很不错的期望题 先设i号节点到达n号节点的期望步数为E[i] 由于每次选择的都是最优策略 所以得到一个性质:若在某一时刻i号节点到j号、k号节点的道路都存在时,一定选择E数组较小的那个 由此可以得到一个小柿子: $E[i]=\sum\limits_{E[j]<E[i]} E[j]*p(i,j) * 阅读全文