#include <iostream>
#include <algorithm>
typedef long long ll;
using namespace std;
const int maxn = 1e5+10;
int monster[maxn];
//第一个模块,结构体
struct mon{
	int num;
	int minpower;
}a[maxn];
//第二个模块,对每一个洞穴进行维护,找到其中的最小伤害
void minnn(int t){
	int k;
	int power=0;
	scanf("%d",&k);
	for(int i=0;i<k;i++){
		scanf("%d",&monster[i]);
		if(monster[i]-i>power){
			power = monster[i] - i;
		}
	}
	a[t].minpower = power + 1;
	a[t].num = k;//从0开始的
}
//第三个模块,排序需要用到的cmp
bool cmp(struct mon a,struct mon b){
	return a.minpower<b.minpower;
}
int main() {
	int t,n,ans,len;
	scanf("%d",&t);
	while(t--){
		ans=0,len=0;
		scanf("%d",&n);
		for(int j=0;j<n;j++){
			minnn(j);
		}
	
		sort(a,a+n,cmp);
		for(int i=0;i<n;i++){
			ans = max(ans,a[i].minpower-len);
			len+=a[i].num;
		}
		printf("%d\n",ans);
	}
	return 0;
}

题解:

这个题最主要的两个模块是求一个洞穴里minpower,以及在求完单个洞穴后考虑总体的时候搞的Max,高中不等式知识。

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐