http://acm.timus.ru/problem.aspx?space=1&num=2064

题意:有n只虫子在爬树,每个虫子往上爬ti距离后会往下掉落ti距离,每爬一个单位距离耗费一个单位时间,然后重新往上爬。有q个询问,询问当前的x时刻,爬的最高的虫子所在的最高位置。

思路:画个以时间为x轴,距离为y轴的图,可以清楚知道整个图是类似于一座座山峰的。我们只要处理每个时刻的最高点。

只考虑最高点所在的位置,处理出虫子能达到的最高点的时刻的最高点arrive[]。

考虑每个时刻要得到最优的两种情况:假设当前时刻为x。

1、第一种是某只虫子正在往上爬。这种情况可以考虑成时间逆流地往下掉。时间从后往前扫,对于每个时刻求出最大的arrive[i] - (i - x)。i代表之前某只虫子某个能达到的最高点的时刻。

2、第二种是某只虫子正在往下掉。这种情况将时间从前往后扫,对于每个时刻求出最大的arrive[i] - (x - i)。i的含义同上。

因为时间只有1e6,可以从后往前扫(处理出往上爬的情况)再从前往后(处理往下掉的情况)扫所有时间,处理出ans[]表。对于询问O(1)回答。

而且这题用scanf超时,用读入外挂偶尔超时,看别人代码用了“ios::sync_with_stdio(false);”取消同步,不会超时。

玄学。不懂。

 #include <bits/stdc++.h>
using namespace std;
#define N 1000100
#define M 1000004
#define INF 0x3f3f3f3f
int arrive[N], ans[N]; int main() {
ios::sync_with_stdio(false);
int n, t, tid, q;
cin >> n;
bool flag = ;
for(int i = ; i <= n; i++) {
cin >> t; if(t >= M) flag = ;
for(tid = t; tid <= M; tid += * t)
if(arrive[tid] < t) arrive[tid] = t; // arrive[tid]记录tid时刻能达到的最大高度
if(arrive[M] < t - (tid - M)) arrive[M] = t - tid + M; // 终点向下掉
}
for(t = , tid = -INF; t <= M; t++) {
// 时间正着往下掉: (i < t)ans[t] = max(ans[t], arrive[i] + i - t);
if(tid < arrive[t] + t) tid = arrive[t] + t; // 记录目前最大的arrive[i]+i
if(ans[t] < tid - t) ans[t] = tid - t;
}
for(t = M, tid = -INF; t >= ; t--) {
// 时间逆着往下掉(向上爬): (t < i)ans[t] = max(ans[t], arrive[i] - i + t);
if(tid < arrive[t] - t) tid = arrive[t] - t; // 记录之前最大的arrive[i]-i
if(ans[t] < tid + t) ans[t] = tid + t;
}
cin >> q;
while(q--) {
cin >> t;
if(flag) cout << t << '\n';
else cout << ans[t] << '\n';
}
return ;
}

Ural 2064:Caterpillars(思维暴力)的更多相关文章

  1. ural 2064. Caterpillars

    2064. Caterpillars Time limit: 3.0 secondMemory limit: 64 MB Young gardener didn’t visit his garden ...

  2. Nikita and string [思维-暴力] ACM

    codeforces Nikita and string time limit per test   2 seconds memory limit per test   256 megabytes O ...

  3. codeforce 429D. Tricky Function (思维暴力过)

    题目描述 Iahub and Sorin are the best competitive programmers in their town. However, they can't both qu ...

  4. ZOJ - 3983 - Crusaders Quest(思维 + 暴力)

    题意: 给出一个字符串,长度为9,包含三种各三个字母"a","g","o",如果一次消除连续三个一样的分数+1,消完自动向左补齐 其中可以消 ...

  5. codeforces 768 C. Jon Snow and his Favourite Number(思维+暴力)

    题目链接:http://codeforces.com/contest/768/problem/C 题意:给出n个数,k个操作,和一个x,每次操作先排序然后对奇数位数进行xor x操作,最后问k次操作后 ...

  6. CodeForces - 1244D (思维+暴力)

    题意 https://vjudge.net/problem/CodeForces-1244D 有一棵树,有3种颜色,第i个节点染成第j种颜色的代价是c(i,j),现在要你求出一种染色方案,使得总代价最 ...

  7. CodeForces - 1248D1 (思维+暴力)

    题意 有一个括号序列,你可以选择两个位置i,j(i可以等于j),进行交换.使得最后的循环位置(i的数目)最大. 循环位置:i(0<=i<len),将前i个字符移到最后,得到的新序列是合法的 ...

  8. URAL 1957 Wrong Answer 暴力

    Wrong Answer 思路: 1.先枚举4的全排列,即球赛的所有可能结果,一共4!=24种情况 2.对于每种情况,DFS 未确定的比赛 的结果,判断这种情况是否可达. 剪枝: 1.对于每种全排列, ...

  9. hdu 4970 Killing Monsters (思维 暴力)

    题目链接 题意: 有n座塔,每座塔的攻击范围为[l,r],攻击力为d,有k个怪兽从这些塔前面经过,第i只怪兽初始的生命力为hp,出现的位置为x,终点为第n个格子.问最后有多少只怪兽还活着. 分析: 这 ...

随机推荐

  1. WPF 代码实现动画

    <Window x:Class="wpf180709.Window2"        xmlns="http://schemas.microsoft.com/win ...

  2. BackgroundWorker使用

    using System.ComponentModel; private BackgroundWorker worker;  worker = new BackgroundWorker(); work ...

  3. 【msdn wpf forum翻译】如何在wpf程序(程序激活时)中捕获所有的键盘输入,而不管哪个元素获得焦点?

    原文:[msdn wpf forum翻译]如何在wpf程序(程序激活时)中捕获所有的键盘输入,而不管哪个元素获得焦点? 原文链接:http://social.msdn.microsoft.com/Fo ...

  4. laravel 报错SQLSTATE[HY000] [2002] No such file or directory

    在mac中执行php artisan migrate时报错 SQLSTATE[HY000] [2002] No such file or directory (SQL: select * from i ...

  5. discuz电脑访问手机版域名怎么跳转到电脑版本

    用discuz论坛访问手机版本的域名不会自动跳转到电脑版本,而是会跳转到域名+misc.php?mod=mobile体验很不好.现提供修改方法:打开论坛根目录找到文件./source/class/di ...

  6. wpf 路由事件 代码片段

    <?xml version="1.0" encoding="utf-8" ?> <CodeSnippets xmlns="http: ...

  7. WinForm 清空界面控件值的小技巧

    原文:WinForm 清空界面控件值的小技巧 在WinForm里面有时候需要清空自己输入内容或是选择的选项,以便重新操作流程,那么一般你是怎么清空界面各个控件值的呢?如果窗体里面控件,尤其是TextB ...

  8. 零元学Expression Blend 4 - Chapter 35 讨厌!!我不想一直重复设定!!『Template Binding』使用前後的差异

    原文:零元学Expression Blend 4 - Chapter 35 讨厌!!我不想一直重复设定!!『Template Binding』使用前後的差异 因为先前写到自制Button时需特别注意T ...

  9. 【Windows10 IoT开发系列】PowerShell的相关配置

    原文:[Windows10 IoT开发系列]PowerShell的相关配置 可使用 Windows PowerShell 远程配置和管理任何 Windows 10 IoT 核心版设备.PowerShe ...

  10. A simple in-process HTTP server for UWP

    原文 http://www.dzhang.com/blog/2012/09/18/a-simple-in-process-http-server-for-windows-8-metro-apps 简单 ...