UOJ Easy Round #7 天路 简单的近似算法
来源:互联网 发布:淘宝放单主持的利弊 编辑:程序博客网 时间:2024/05/16 15:45
题目大意
给定一个长度为
解题思路
一眼看上去这题并不可做,但是有个很关键的信息就是答案允许有
程序
//YxuanwKeith#include <cstring>#include <cstdio>#include <algorithm>using namespace std;const int MAXN = 1e5 + 5;int n, l1, r1, l2, r2, a[MAXN], Max[MAXN], Min[MAXN], ans[MAXN];int main() { scanf("%d", &n); for (int i = 1; i <= n; i ++) scanf("%d", &a[i]); memset(ans, 60, sizeof ans); for (int d = 0; d < 1000000; d = max(d + 1, (int)(1.05 * d) - 2)) { l1 = l2 = 1, r1 = r2 = 0; int l = 1; for (int r = 1; r <= n; r ++) { while (l1 <= r1 && a[Min[r1]] > a[r]) r1 --; while (l2 <= r2 && a[Max[r2]] < a[r]) r2 --; Min[++ r1] = Max[++ r2] = r; while (a[Max[l2]] - a[Min[l1]] > d) { if (Min[l1] == l) ++ l1; if (Max[l2] == l) ++ l2; l ++; } ans[r - l + 1] = min(ans[r - l + 1], a[Max[l2]] - a[Min[l1]]); } } for (int i = n; i >= 2; i --) { ans[i] = min(ans[i], ans[i + 1]); if (ans[i] == ans[0]) ans[i] = 1000000; } for (int i = 2; i <= n; i ++) printf("%d\n", ans[i]);}
1 0
- UOJ Easy Round #7 天路 简单的近似算法
- UOJ Easy Round #7 短路
- uoj 245. 【UER #7】天路 (近似算法)
- [UOJ#245][UER#7B]天路(数学相关:近似算法)
- 【UOJ 测试】B. 【#245 UER #7】天路(近似算法+RMQ)
- [UOJ Easy Round #2]简要题解
- UOJ Easy Round #6 题解(待续)
- UOJ12暨(UOJ EASY ROUND 1)T3
- [算法]简单的字符串近似匹配算法实现
- [近似算法 分治] UER #7 B.天路
- 简单的字符串近似匹配
- 求点到线段的近似算法
- LIRS算法的近似实现
- LIRS算法的近似实现
- 组合方程的近似算法
- 近似算法
- 近似算法
- [UOJ 118][UOJ Round #8]赴京赶考
- 【STM32】STM32之DRV8834电机驱动(IO方式)
- UVA 12235 Help Bubu(状压dp)***
- Intellij IDEA 连接并提交项目到GitHub仓库(图解)
- 51nod 1381 硬币游戏
- UEFI启动和BIOS启动
- UOJ Easy Round #7 天路 简单的近似算法
- 协调作用域不同步的Bean
- 批处理实现两个数的相加
- Android毛玻璃效果实现
- 关于C++中的友元函数的总结
- TensorFlow Introduction_中英文对照
- 浅谈Java中父类与子类的加载顺序详解
- SpringMVC学习系列-后记 解决GET请求时中文乱码的问题
- Java中==和equal有什么区别