首页 > 其他分享 >AT_abc333_e [ABC333E] Takahashi Quest 题解

AT_abc333_e [ABC333E] Takahashi Quest 题解

时间:2023-12-17 13:13:00浏览次数:34  
标签:cnt int 题解 abc333 Quest 一瓶 药水

AT_abc333_e [ABC333E] Takahashi Quest 题解

思路解析

可以发现一瓶药水无论什么时候拿被使用掉的时间都是不会变的,所以如果我们想让一瓶药水再背包里待得时间尽可能的短就要让它尽可能的被晚拿起来,于是我们就可以想到使用栈存下每一瓶同类的药水分别出现的时间,此时每遇到一只怪物那么它对应的栈顶就是最晚出现的药水,使用该瓶药水并打上标记。如果栈空则说明药水不够,高橋就寄了。最后统计每时每刻背包容量最大值输出即可。

AC code

#include<bits/stdc++.h>
using namespace std;
const int N = 2e5 + 10;
int n;
int t[N], x[N];
stack<int> st[N];	//stack[i] 代表 i 种类的药水分别出现的时间
int flag[N];
int main() {
	cin >> n;
	for(int i = 1; i <= n; i++) {
		cin >> t[i] >> x[i];
		if(t[i] == 1) {
			st[x[i]].push(i);	//存入每瓶药水出现的时间
		}
		else if(t[i] == 2) {
			if(st[x[i]].size() <= 0) {	//药水不够了
				cout << "-1";
				return 0;
			}
			flag[st[x[i]].top()] = 1;	//打上标记,记为使用该瓶药水
			st[x[i]].pop();	//药水被用掉了
		}
	}
	int cnt = 0, maxn = 0;
	for(int i = 1; i <= n; i++) {
		if(flag[i] > 0) {	//背包里多进一瓶药水
			cnt++;
			maxn = max(maxn, cnt);	//记录最大值
		}
		else if(t[i] == 2) {	//用掉一瓶药水
			cnt--;
		}
	}
	cout << maxn << "\n";
	for(int i = 1; i <= n; i++) {
		if(t[i] == 1) {
			cout << flag[i] << " ";
		}
	}
	return 0;
}

标签:cnt,int,题解,abc333,Quest,一瓶,药水
From: https://www.cnblogs.com/2020luke/p/17908957.html

相关文章

  • 2022年RHCE认证考题解析最新版—RH294环境【转】
    由于本人10.17已成功考过CSA,经过两周所学的ansible并结合题库整理出来的CE解析版我也是11月月底就要考了,不过这套解析也是可以满足今年的redhat8题库文中可能涉及一些命令的参数解释,如有不懂的伙伴可参考我的笔记Ansibleps:一切模板似的题库考试,都需要经过大脑的理解方可顺利上......
  • VMware workstation中安装的centos虚拟机ip自动获取可以上网,设置静态ip不能上网问题解
    一、需求   linux中我们会设置hosts文件,这会涉及ip和域名的设置,但是如果虚拟机自动获取ip地址的话,这就意味着之前设置的hosts文件需要重新修改,所以我们需要设置虚拟机为静态ip地址。二、故障现象   我linux虚拟机最开始是自动获取的ip地址,用的nat模式,是可以上网的,......
  • 一道很不错的高中数学题的题解解析
    引:上周六上午把一道高中的数学竞赛题(一道8分的填空题,原题如下图所示)当成一道大题(如上)郑重其事地和孩子以互动的方式探讨了这个题的题解分析. 这是一道出得很好的题.其题解所涉及的知识不超出高一目前所学内容,因此高一的学生也是可能做得出来的.但这题是一道很综合的题,涉......
  • 【理论篇】SaTokenException: 非Web上下文无法获取Request问题解决 -理论篇
    在我们使用sa-token安全框架的时候,有时候会提示:SaTokenException:非Web上下文无法获取Request错误截图:在官方网站中,查看常见问题排查:错误追踪:跟着源码可以看到如下代码:从源码中,我们可以看到,由于非Web上下文中无法直接获取HttpServletRequest对象,因此无法直接在子线程中使用SA-Token......
  • ABC311G One More Grid Task 题解
    给出\(n\timesm\)的矩阵\(a\)。求权值最大子矩形的权值。一个矩形的权值定义为它里面全部数的和乘上最小值。\(n,m\leq300,0\leqa_{i,j}\leq300\)。枚举最小的数\(a_{i,j}\)。则在满足\(a_{i,j}\)是最小值时,包含\((i,j)\)的矩形一定是极大的。这些矩形不好枚举,......
  • SP21690 POWERUP - Power the Power Up 题解
    题目传送门前置知识扩展欧拉定理解法直接对\(a\)和\(b^c\)分讨,跑一遍扩展欧拉定理就行了。另外由于本题的特殊规定\(0^0=1\),故需要在当\(a=0\)时,对\(b^c\)进行判断。手模几组样例,发现结论挺显然的。代码#include<bits/stdc++.h>usingnamespacestd;#definell......
  • [Codeforces] CF1760F Quests
    CF1760FQuests题意有\(n\)个任务,你每一天都可以选择其中的一个任务完成或不选。当你完成了第\(i\)个任务,你将获得\(a_i\)元。但是如果你今天完成了一个任务,那么你之后\(k\)天内都不能再完成这个任务。给出两个数\(c\),\(d\),要求求出满足在\(d\)天内可以收集至少\(c......
  • SP10050 POWTOW - Power Tower City 题解
    题目传送门前置知识扩展欧拉定理解法本题幂塔是有限层的,这里与luoguP4139上帝与集合的正确用法中的无限层幂塔不同,故需要在到达递归边界\(n+1\)时进行特殊处理,对于处理\(\varphi(p)\)在递归过程中等于\(1\)的情况两题基本一致。回忆扩展欧拉定理中的\(b\)和\(\v......
  • P1405 苦恼的小明 题解
    题目传送门前置知识扩展欧拉定理解法本题幂塔是有限层的,这里与luoguP4139上帝与集合的正确用法中的无限层幂塔不同,故需要在到达递归边界时进行特殊处理,对于处理\(varphi(p)\)在递归过程中等于\(1\)的情况两题基本一致。回忆扩展欧拉定理中的\(b\)和\(\varphi(p)\)......
  • CF1804F Approximate Diameter 题解
    题目链接点击打开链接题目解法很有意思的题,但不难首先一个显然的结论是:算着边的加入,直径长度递减第一眼看到误差范围是2倍,可以想到二分可以观察到如果取答案为\(\frac{n}{2}\)可以覆盖到\(\frac{n}{4}\)(上下取整不重要),那这样每次可以把值域范围缩小4倍,然后只要二分直......