求助!
  • 板块学术版
  • 楼主cute_chuanpu
  • 当前回复0
  • 已保存回复0
  • 发布时间2021/11/20 21:17
  • 上次更新2023/11/3 23:55:12
查看原帖
求助!
484007
cute_chuanpu楼主2021/11/20 21:17

奇葩题目,求解

【题目描述】

马奇诺防线 (Maginot Line) 是法国在第一次世界大战后,为防德军入侵而在其东北边境地区构筑的筑垒配系。 作为司令官的你,现在得到了德军的军事作战情报,你需要根据这个作战情报,来检查某些位置、某些范围的防御是否可靠 假设马奇诺防线是一条长度为N公里的直线,每公里都有Pi个士兵驻守; 德军的情报如下: 从第L公里到第R公里,会有k个德军进攻 你的检查方法如下: 对于上述L和R,统计L1,L2...R-2,R-1,R的士兵人数sum,即为L~R范围的战斗力总和,若此总和sum大于进攻人数k,则认为防御是可靠的,否则认为是不可靠的 军事作战情报是无数爱国人士用生命换过来的,所以根据情报制定下一步的作战计划至关重要,关乎战局的扭转和人民的胜利,聪明的你一定可以实现!

【输入格式】

第一行有两个正整数N和另M,N表示马奇诺防线的长度,M表示德军的情报数量 第二行有N个数字Pi,表示第i公里有Pi个士兵驻守 接下来M行,每行有3个正整数L、R、k,表示第L到第R公里会有k个德军进攻

【输出格式】 M行,若防守是可靠的输出No Problem;否则输出Need Add,表示L~R范围需要增加士兵驻守

【样例输入】
4 3
4 2 3 6
1 2 7
2 3 5
3 4 8
【样例输出】
Need Add
Need Add
No Problem

【样例解释】 第1个情报,表示1~2范围内会有7个德军进攻,而防线的1~2范围内驻守士兵数量为4+2=6个,6<7,会被德军突破,故防御是不可靠的,输出Need Add 第2个情报,表示2~3范围内会有5个德军进攻,而防线的2~3范围内驻守士兵数量为2+3=5个,5=5,和德军打平,防御依然是不可靠的,输出Need Add 第3个情报,表示3~4范围内会有8个德军进攻,而防线的3~4范围内驻守士兵数量为3+6=9个,9>8,可以战胜德军,故防御是可靠的,输出No Problem

【数据范围】

对于20%的数据:2<=N<=10,M=1,1<=Pi<=10,1<=k<=100
另有20%的数据:2<=N,M<=10,1<=Pi<=10,1<=k<=100
另有60%的数据:10<=N,M<=100,10<=Pi<=10^40(10的40次方),100<=k<=10^50
对于100%的数据:1<=N,M<=100,1<=Pi<=10^40,1<=k<=10^50,且保证1<=L<=R<=N

10^50!!!!!!!!

这么大的数?吃奥利给? 咋办? 求助解法!

我的cpp:

#include<iostream>
using namespace std;
long long a[105],k,sum;
int l,r,n,m,l1,r1;
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	for(int i=1;i<=m;i++){
		cin>>l1>>r1>>k;
		sum=0;
		for(int j=l1;j<=r1;j++){
			sum+=a[j];
		}
		if(sum>k){
			cout<<"No Problem"<<endl;
		}else{
			cout<<"Need Add"<<endl;
		}
	}
	return 0;
}
2021/11/20 21:17
加载中...