2023 Hubei Provincial Collegiate Programming Contest TJ

最开始的思路想错了:

把所有是负数段的连成一块,发现下一步会走到这些负数区域的时候,就算出来需要差了多少,然后在当前这个正数块停留一段时间。

但有可能我们当前踩着的这一块正数非常小,导致我们要等很长时间,所以正确的贪心应该是:

记录最大值的位置,先不停往后走,当发现结果变为负数的时候,就算出需要在之前那个最大的位置停留多久,然后把时间补上。

复制代码
#include <bits/stdc++.h>
#define int long long
using namespace std;

const int N = 1e6 + 9, p = 998244353;

int a[N], prefix[N];

signed main()
{
    ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
    int n;cin >> n;
    for(int i = 1;i <= n; ++ i)cin >> a[i];
    for(int i = 1;i <= n; ++ i)prefix[i] = prefix[i - 1] + a[i];

    if(prefix[n] < 0)
    {
        cout << -1 << '\n';
        return 0;
    }
    //遇到的第一个是负数
    for(int i = 1;i <= n; ++ i)
    {
        if(prefix[i] != 0)
        {
            if(prefix[i] < 0)
            {
                cout << -1 << '\n';
                return 0;
            }
            break;
        }   
    }

    int ans = 0, res = 0, mx = 0;
    //前面一步步推进
    for(int i = 1;i <= n; ++ i)
    {
        mx = max(mx, prefix[i]);
        res += prefix[i];
        ans ++;//走一秒
        if(res < 0)//说明走快了,应该在前面多停留一段时间的
        {
            //补几秒钟
            int ti = (-res + mx - 1) / mx; // 除以mx向上取整,所以需要+mx - 1
            ans += ti;
            res += ti * mx;
        }
    }
    cout << ans << '\n';
    return 0;
}
复制代码

 

本文作者:Gold_stein

本文链接:https://www.cnblogs.com/smartljy/p/18090649

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Gold_stein  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
历史上的今天:
2020-03-23 震惊
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起
🔑
  1. 1 逃离地面 RAD & 三浦透子
逃离地面 - RAD & 三浦透子
00:00 / 00:00
An audio error has occurred.

作词 : 野田洋次郎

作曲 : 野田洋次郎

空飛ぶ羽根と引き換えに 繋ぎ合う手を選んだ僕ら

それでも空に魅せられて 夢を重ねるのは罪か

夏は秋の背中を見て その顔を思い浮かべる

憧れなのか、恋なのか 叶わぬと知っていながら

重力が眠りにつく 1000年に一度の今日

太陽の死角に立ち 僕らこの星を出よう

彼が眼を覚ました時 連れ戻せない場所へ

「せーの」で大地を蹴って ここではない星へ

行こう

もう少しで運命の向こう もう少しで文明の向こう

もう少しで運命の向こう もう少しで

夢に僕らで帆を張って 来たるべき日のために夜を超え

いざ期待だけ満タンで あとはどうにかなるさと 肩を組んだ

怖くないわけない でも止まんない

ピンチの先回りしたって 僕らじゃしょうがない

僕らの恋が言う 声が言う

「行け」と言う