首页 > 其他分享 >P3422 [POI2005] LOT-A Journey to Mars

P3422 [POI2005] LOT-A Journey to Mars

时间:2023-07-17 14:12:36浏览次数:40  
标签:2000010 POI2005 sum back pop int Journey front P3422

前言

传送门

blog

长沙市一中暑假第一次思维训练。

前置芝士

前缀和

单调队列

思路

在考试过程中突然发现与好消息,坏消息题目大致相同,不同之处只有这个可以往逆时针方向走,以此确定本题算法——前缀和与单调队列

首先我们可以算出每一个站点可以拿到的油 $p_i - d_i$,也就是油量 $-$ 到下一站的距离,然后我们就将其围成一个环,如下图。

这样在我们随意选取以 $x$ 开头的长度为 $n$ 的一段,这时候也就算我们走完一圈 。而我们所要知道的就是在这一段之中,有没有油量 $\le 0$ 的时候,我们可以使用前缀和算取某一段区间的油量的总合。

我们要把每一段都算一遍吗?不对,只需要用最小的减去当前的,如果最小的不行,那此方案肯定是不行的。

如何维护最小值呢?我们可以使用单调队列维护,接下来就可以写代码了。

AC Code

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

int n,p[2000010],d[2000010],sum[2000010];

bool ans[2000010];

signed main(){
	scanf("%lld",&n);
	for(int i = 1;i <= n;i++)
		scanf("%lld%lld",p + i,d + i);
	for(int i = 1;i < n;i++){
		sum[i + n] = sum[i] = p[i] - d[i];
	}
	for(int i = 1;i < 2 * n;i++){
		sum[i] += sum[i - 1];
	}
	deque<int>q;
	for(int i = 2 * n - 1;i;i--){
        while(!q.empty() && q.front() >= i + n)q.pop_front();
        while(!q.empty() && sum[q.back()] >= sum[i]) q.pop_back();
        q.push_back(i);
		if(i <= n){
			if(sum[q.front()] >= sum[i - 1]){
				ans[i] = 1;
			}
		}
	}

    d[0] = d[n];
    for(int i = 1;i < n;i++){
		sum[i + n] = sum[i] = p[i] - d[i - 1];
	}
	for(int i = 1;i < 2 * n;i++){
		sum[i] += sum[i - 1];
	}
    deque<int>x;
	for(int i = 1;i < n * 2;i++){
        while(!x.empty() && x.front() < i - n)x.pop_front();
		if(i > n){
			if(sum[x.front()] <= sum[i]){
				ans[i - n] = 1;
			}
		}
        while(!x.empty() && sum[x.back()] <= sum[i]) x.pop_back();
        x.push_back(i);
	}
    for(int i = 1;i <= n;i++){
        if(ans[i]){
            cout<<"TAK"<<endl;
        }else{
            cout<<"NIE"<<endl;
        }
    }
} 

标签:2000010,POI2005,sum,back,pop,int,Journey,front,P3422
From: https://www.cnblogs.com/JJL0610/p/17559929.html

相关文章

  • Restart the journey
    在开始新的旅途之前,明确一些事情。做题方法论比学习方法论重要。如何解题:泛化模型,寻找特殊性质。性质的发现:共性,特殊性,结构。考虑限制的松紧,为什么只在这个情况下能做。规约到之前遇见过的问题,需要对基本模型的认知。从简单的,边界的情况入手。利用几何/代数直观。考虑“......
  • BZOJ 3073: [Pa2011]Journeys 线段树优化最短路
    3073:[Pa2011]JourneysTimeLimit: 20Sec  MemoryLimit: 512MBSubmit: 243  Solved: 80[Submit][Status][Discuss]DescriptionSeter建造了一个很大的星球,他准备建造N个国家和无数双向道路。N个国家很快建造好了,用1..N编号,但是他发现道路实在太多了,他要一条条......
  • Midjourney 自动化流程
    1.批量获取Prompt描述这部分是可以让chatgpt来完成的,但是效果上还是需要调整建议的流程是自己描述想象中的角色造型,越详细越细节越好尝试多种美术风格,挑选出自己最喜欢的,之后的配置项就都统一一致即可下面主要介绍几个在使用Midjoureny中重要的小技巧>Midjoureny根据参考图......
  • 将ChatGPT变成Midjourney提示生成器
    已经有人总结过可以让ChatGPT作为Midjourney图像生成的模板。在本文中,我们将展示如何根据个人用例创建这些提示,这可以让ChatGPT生成的提示可控性更高。 https://avoid.overfit.cn/post/60d45f154b7943258f86f8bc7150e79b......
  • MidJourney v5.2 、Stable Diffusion XL 0.9 出图对比
    最近两个最流行的AI图像生成器,Midjourney和StableDiffusion,都发布了重大更新。Midjourneyv5.2引入了许多新功能,包括“缩小”功能、“/缩短”命令、改进的图像质量等。StableDiffusionXL(SDXL)0.9则专注于改善图像质量和构图。新模型使用更大的数据集和更强大的算法,生成的图......
  • AI向百万薪资 高级原画师开刀?!爆Midjourney入局3D模型生成
    现在AI向高级原画师和3D开刀了?网传爆料AI已入局3D模型生成...这进化速度放在整个行业都十分炸裂4月,Midjourney进一步宣布推出Niji-journeyV5这是MJ针对二次元动漫风格预训练好的模型可在其中添加提示词直接调用NijiV5模型据了解,Midjourney是由来自麻省理工的团队Spellbrush共同打......
  • 只限今日免费,Midjourney 5.1震撼更新!逼真到给跪,中国情侣细节惊艳,3D视频大片马上来
    【导读】全新升级的Midjourney让全网又疯狂了,创造力解禁,出图更逼真。重要的是,限时免费到今天,要玩的抓紧了。一个月前,MidjourneyV5画的一对中国完美情侣在网上爆火,让许多人纷纷惊呼画师要失业了。恰在今天,Midjourney官宣V5能免费用了,而且还是最新版本V5.1。但是,划重点:仅限一天,也就......
  • GPT速报!Midjourney镜像站 MJ镜像站选择可免费使用
    进入这里=》网站进入白泽AI:https://chatgpt.myqi.top/1.打开网站 选择Ai绘画2.输入提示词 3.确定直接生成,跟官网mj一样的操作方式生成一个在睡觉的美女,也是非常nice,哈哈 4.目前网站还有GPT3.4和GPT4.0欢迎大家使用......
  • midjourney国内版上线! 快来体验一下midjourney的强大功能
    最近大火的midjourney国内版上线了!该网站对接了midjourneyAPI,以文生图、以图生图功能都支持,下面我们来体验一下它的功能。网址:https://www.weijiwangluo.com/talk人像:卡通(cartoon)和高保真(highdetails)全身人像以下引用内容为对应的prompt关键词:acoolgirl--aspect1:......
  • ChatGPT4+Midjourney镜像网站汇总-6月19日更新
    如何在国内使用ChatGPT4和Midjourney?本文将给出多个无需注册,无需登录,无需梯子,即可在国内使用ChatGPT的套壳网站,也称为镜像网站。......