BZOJ 100x 做题记录

#1000. A+B Problem#

太难了,不会。

#1001. [BeiJing2006]狼抓兔子#

印象很深刻,接触对偶图的第一题,跳过。

#1002. [FJOI2007]轮状病毒#

可以看出,一个轮状病毒满足将外部的环断成若干段,每段向中心点连恰好一条边。

可以先考虑一条链的做法。设 f(n) 为长度为 n 的链的答案,则满足 f(n)=if(ni)i

放到环上就是枚举一条链的位置后,乘以剩下的一段的长度。Code(注意高精度实现有误,因为数据水所以过了)

#1003. [ZJOI2006]物流运输#

注意到码头数量很小,所以用状态压缩 DP 出只经过某个集合中的点时的最短路径长度。然后再 DP 出每天选择每种路径的最小花费。Code

#1004. [HNOI2008]Cards#

复习一下 Burnside 引理。

|X/G|=1|G|gG|Xg|

X 是一些从 AB 的映射组成的集合。当时我因为没有弄清映射的概念,在这道题上卡了很久。

有了这个公式题目就简单了。把每种洗牌法拆成不相交的循环置换,那么循环置换内的点颜色必须相同。所以答案只与每个循环置换的大小有关。用类似背包的东西,每次加入一个置换,就能统计出每一种洗牌法的方案数。不要忘记每个点都不动也算一种洗牌法。所以最终答案就是所有洗牌法的答案相加除以 m+1Code

#1005. [HNOI2008]明明的烦恼#

直接用 prufer 序列做。一个点度数为 d 就得在序列中出现恰好 d1 次。故答案为

Tu(n2u)(n2u)!di>0(di1)!

其中 u=n2di>0(di1),即度数没有确定的点占用的位置总数;T=i[di=1],即度数没有确定的点的总数。

一个细节在于如何做除法。高精度除法是可以避免的。只需要把所有除数分解质因数,然后做乘法时尝试用所有质数去消除它再乘入答案即可。然而当时我忘记了很久以前写的 阶乘分解质因数技巧,而是集中分解,速度也很快。Code

#1006. [HNOI2008]神奇的国度#

关于 弦图 的科技题,挖个坑,有时间再来学。

#1007. [HNOI2008]水平可见直线#

猜测最上面的折线形状为一个凸包,用反证法不难(?)证明。于是用一个单调栈就水过去了。Code

#1008. [HNOI2008]越狱#

究极大水题。正难则反。Code

#1009. [HNOI2008]GT考试#

先考虑 n105 时怎么做。设 f(i,j) 表示有 i 个位置,其长为 j 的后缀中填上了不吉利数字的前缀的答案。

f(i,j)={f(i1,j1)cjf(i1,m1)j>010f(i1,0)f(i1,m1)j=0

其中 ci 表示不吉利数字是否存在长为 i 的 border。

然后矩阵加速。Code

posted @   hihihi198  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示
主题色彩