码迷,mamicode.com
首页 > 其他好文 > 详细

poi2015 bzoj4377-4386训练

时间:2016-04-04 18:11:40      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:

就按时间顺序写吧

完成度:8/10

3.30

bzoj4385 首先一定是删去连续d个数,然后枚举终点,起点显然有单调性,用单调队列乱搞搞就可以啦

bzoj4378 首先才结论:可行当且仅当把所有大于s的数全变成s然后看所有的数的和大于等于c*s,然后两个树状数组分别维护<=s的和及个数即可,注意需要离散化

3.31

bzoj4377 设一段的起点处的数为x,则m个限制条件就可以转化为x在若干个区间(或两个区间的并)里面,然后把这些区间交起来就得到了x的范围,算出个数然后减去最后m-1个数(没有连续m个数在之后)即可。

bzoj4379 显然,枚举断开的边,然后最短的就是把两边的直径中点连起来,最长的就是把两边的直径端点连起来。然后dp一发算出每个点为根的子树直径和把这个子树删去后的直径,然后直接计算即可

4.1

bzoj4380 dp[i][j][k]表示[i,j)区间内最小值不小于k的答案(只考虑走的路在[i,j)内的人),预处理出每个区间内最大费用限制>=x的人的数量,然后是否有k及k的位置即可,方案就是记录当前是否有k及k的位置然后dfs即可

4.2

bzoj4382 显然,对于每种字符,它们把圆环分为若干段,两个位置可行当且仅当对于每个字符这两个位置在同一段内,然后给每个字符的每个段编一个号,hash即可

4.3

bzoj4381 算法复合,先预处理出每个点开始每次往上走z步到达的点和一直走下去的和,取一个lim,对于z<lim的直接由预处理回答即可,z>=lim的直接暴力在树上跑即可,取lim=sqrt(n),则复杂度为预处理n*sqrt(n),询问最大sqrt(n)*log(n)。要注意各种细节,被细节wa在第一个点了一晚上。。。

bzoj4383 首先建出一些虚点表示第i个限制,比其他点大的点连一条有向边到这个限制,权值为1,然后这些限制向区间内其他点连边,权值为0。用线段树优化后一个连边过程,即k个限制把区间分为至多k+1段,每次暴力询问一段即可。然后进行拓扑排序,若有环则无解,记录每个点的最小值即可,若不符合各方面题目条件则无解。

poi2015 bzoj4377-4386训练

标签:

原文地址:http://www.cnblogs.com/shanquan2/p/5352339.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!