摘要: 略有一点点思维的题。 首先,如果一个点上,下,左,右分别有$a,b,c,d$棵树,那这个点的十字架方案为$C_{a}^{k}C_{b}^{k}C_{c}^{k}C_{d}^{k}$。 按x坐标扫一遍,同时树状数组维护每个y坐标的$C_{a}^{k}C_{b}^{k}$,直接统计答案。复杂度$O(nl 阅读全文
posted @ 2018-10-17 22:16 菜狗xzz 阅读(186) 评论(0) 推荐(0) 编辑
摘要: sb状压dp。 设f[i][j]表示字符串前i位和集合为j的串匹配的方案数。 枚举哪个字母直接转移就好了。 (话说为啥这种水题都有紫色难度 cpp include define il inline define vd void define mod 1000003 typedef long long 阅读全文
posted @ 2018-10-17 22:12 菜狗xzz 阅读(294) 评论(0) 推荐(0) 编辑
摘要: 比较显然的拆点费用流。 按照套路,网络流跑两个关键字的最优化问题时,可以把所有的第一个关键字都乘第二个关键字的和,最后计算答案时直接取膜即可。 cpp include define il inline define vd void typedef long long ll; il int gi(){ 阅读全文
posted @ 2018-10-17 22:10 菜狗xzz 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 洛咕 P2155 [SDOI2008]沙拉公主的困惑 有个结论,就是如果$gcd(a,b)=1$,那么$gcd(a+kb,b)=1$。证明比较显然。 所以这个题目要问的$n!$就可以分成$\frac{n!}{m!}$段,每一段和$m!$互质的数量都相同,那么显然就是$\phi(m!)$ 所以答案是$ 阅读全文
posted @ 2018-10-17 22:08 菜狗xzz 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 裸的状压dp。 设f[i][j]表示在i字数内放j集合的分部,直接sb转移。 cpp // luogu judger enable o2 include define il inline define vd void typedef long long ll; il int gi(){ int x= 阅读全文
posted @ 2018-10-17 15:30 菜狗xzz 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 哈希水过。 首先这是一段delta相同的序列,按照套路差分一下,b[i]=a[i] a[i 1],然后就是这些序列的最长公共子段 由于数据范围很小,就可以二分,枚举第一个序列的子段然后每个子序列暴力check,跑得飞快。 阅读全文
posted @ 2018-10-17 15:28 菜狗xzz 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 终于把考试题清完了。。。又复活了。。。 树上差分,合并用线段树合并,但是空间会炸。 某大佬:lca和fa[lca]减得时候一定已经存在这个节点了,所以放进vector里,合并完之后减掉就好了。。。 玄学优化就过了。。 cpp // luogu judger enable o2 include def 阅读全文
posted @ 2018-10-17 15:24 菜狗xzz 阅读(227) 评论(0) 推荐(0) 编辑