20160410模拟
来源:互联网 发布:godaddy设置php 编辑:程序博客网 时间:2024/06/05 10:29
T1/T3我都不想写(会)就写写T2吧
T2 环游世界(around)
- 题目大意
- 给定一个
n 个点的环以及相邻两点间的距离,多次询问,从任意点出发,每次给定最远跳的距离s ,询问最少落地次数
- 给定一个
- 题解
- 考的时候我是这么做的
dp[i]=min{dp[j]+1} (sum[i]−sum[j]≤s) - 这个东西可以单调队列优化到
O(N) - 用判断条件从队尾踢人
- 用
dp 值从队头踢人 - 每次从队头取出元素更新当前
dp 值
- 枚举起点开始跳
- 这么做的复杂度为
O(N2Q),30pt - 当复杂度过大时随机4次开始位置
- 最终得分
60pt
- 题解是这么说的
- 环拆成链后,可以利用单调性
O(N) 求出每个点最远向后跳到哪个点 - 然后连一条从这个点到它最远到的点的边
- 由于每个点的最远点只有一个,所以这是棵树
- 原问题就转化为从一个点最少向上走几步使得到达的点的编号
≥i+n - 这个怎么求呢?我们记录每个点在树中的深度,每次向上查找
- 然而这个复杂度会退化
- 我们加个类似并查集路径合并的小优化
- 首先很明显
dep[i]≤dp[i+1] ,当我们依次查找i→n 的满足条件的节点的位置一定是不降的,所以每次将查找路径上的点全都指向该次查找的结果位置对之后的查找是不影响的 复杂度O(MNα(N)) (题解里就当成并查集的复杂度了……至于正确性我……)
- 环拆成链后,可以利用单调性
- 考的时候我是这么做的
- CODE
0 0
- 20160410模拟
- 模拟
- 模拟
- 模拟
- 模拟
- 模拟
- 模拟
- 模拟
- 模拟
- 模拟
- 模拟:
- 模拟
- 模拟
- 模拟
- 模拟
- 模拟
- 模拟
- 模拟
- 面向对象小结
- 并查集
- lintcode: Maximum Product Subarray
- 在eclipse中引入java程序的方法
- python:mysql查询
- 20160410模拟
- 程序员三年一跳,为什么越跳越好?
- Android_View和viewgroup测绘顺序
- hdu 1878 欧拉回路 解题报告
- 九度OJ练习笔记
- 如何降低自己的gcc版本_caffe_matlabconfigure
- hadoop生态系统学习之路(九)MR将结果输出到数据库(DB)
- VB.net机房收费系统小问题之变量赋值前被使用
- 从零开始学_JavaScript_系列(七)——jquery(复选框及互斥、div块、修改css、标签数组、ajax连续加载)