近期刷题总结 [19 03 30]

目录

P2495 [SDOI2011]消耗战 [ 虚树 ]

P5002 专心OI - 找祖先

P4562 [JXOI2018]游戏 [ 组合数学 ]

P1505 [国家集训队]旅游  [ 树剖模板 ]

P4317 花神的数论题  [ 数位DP ]

P3107 [USACO14OPEN]里程表Odometer [ 数位DP ]

P3527 [POI2011]MET-Meteors [ 整体二分 ]

bzoj2989 [CDQ 分治]

P4064 [JXOI2017]加法 [ 贪心 + 树状数组 + 优先队列]


P2495 [SDOI2011]消耗战 [ 虚树 ]

学习虚树构造方法, 主要就是用栈维护树上的一条链

 

P5002 专心OI - 找祖先

考虑每个点的贡献

Ans=\sum size[son]*(size[u]-size[son])+size[u]

 

P4562 [JXOI2018]游戏 [ 组合数学 ]

如果一个数, 它不能被前面任何数筛出来, 我们称它为特征数

发现一种组合的 f 就是最后一个特征数的位置

我们考虑枚举特征数的位置来讨论贡献, 不妨设有cnt 个特征数

Ans=\sum_{i=cnt}^n (i-1)!*(n-i)!*cnt*C(n-cnt, n-i)

特征数可以枚举倍数来筛

 

P1505 [国家集训队]旅游  [ 树剖模板 ]

 

P4317 花神的数论题  [ 数位DP ]

Ans=\prod _{i=1}^{31}i^{\sum_{j=1}^n[s(j)=i]} 

数位DP就完了

 

P3107 [USACO14OPEN]里程表Odometer [ 数位DP ]

枚举需要的那个数, 然后枚举算重的两个数, 记忆化搜索就完了

 

P3527 [POI2011]MET-Meteors [ 整体二分 ]

二分答案是肯定的, 我们考虑整体二分

每次将1 - mid 的插入树状数组, 然后查询每一个树, 如果值大于需要的, 就丢到右边, 否则丢到左边

插入的时候维护一个全局指针就可以了

 

bzoj2989 [CDQ 分治]

放到二维平面上, 就是求到一个点曼哈顿距离不超过k的点的个数

发现这些点都在一个正方形内, 把这个正方形转45度就是垂直的了

然后就是查一个矩阵点的个数, 加上插入点, CDQ分治解决

 

P4064 [JXOI2017]加法 [ 贪心 + 树状数组 + 优先队列]

首先将操作进行排序, 然后二分答案, 如果当前点必须要选, 就选左端点在它之前, 右端点最大的那个 

然后要区间加单点求值, 树状数组解决, 右端点最大优先队列解决

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FSYo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值