信息学奥赛一本通 1979:【18NOIP普及组】龙虎斗

【题目描述】

轩轩和凯凯正在玩一款叫《龙虎斗》的游戏,游戏的棋盘是一条线段,线段上有n�个兵营(自左至右编号1∼n1∼�),相邻编号的兵营之间相隔 11 厘米,即棋盘为长度为n−1�−1厘米的线段。i�号兵营里有ci��位工兵。

下面图1为n=6�=6的示例:

图 1. n=6的示例

轩轩在左侧,代表“龙”;凯凯在右侧,代表“虎”。他们以m�号兵营作为分界,靠左的工兵属于龙势力,靠右的工兵属于虎势力,而第m�号兵营中的工兵很纠结,他们不属于任何一方。

一个兵营的气势为:该兵营中的工兵数××该兵营到m�号兵营的距离;参与游戏一方的势力定义为:属于这一方所有兵营的气势之和。

下面图2为n=6,m=4�=6,�=4的示例,其中红色为龙方,黄色为虎方:

图 2. n=6,m=4�=6,�=4的示例

游戏过程中,某一刻天降神兵,共有s1�1位工兵突然出现在了p1�1号兵营。作为轩轩和凯凯的朋友,你知道如果龙虎双方气势差距太悬殊,轩轩和凯凯就不愿意继续玩下去了。为了让游戏继续,你需要选择一个兵营p2�2,并将你手里的s2�2 位工兵全部派往兵营p2�2,使得双方气势差距尽可能小。

注意:你手中的工兵落在哪个兵营,就和该兵营中其他工兵有相同的势力归属(如果落在m�号兵营,则不属于任何势力)。

【输入】

输入的第一行包含一个正整数n�,代表兵营的数量。

接下来的一行包含n�个正整数,相邻两数之间以一个空格分隔,第i�个正整数代表编号为i�的兵营中起始时的工兵数量ci��。

接下来的一行包含四个正整数,相邻两数间以一个空格分隔,分别代表m,p1,s1,s2�,�1,�1,�2。

【输出】

输出有一行,包含一个正整数,即p2�2,表示你选择的兵营编号。如果存在多个编号同时满足最优,取最小的编号。

【输入样例】

6
2 3 2 3 2 3
4 6 5 2

【输出样例】

2

代码:

#include<iostream>
#include<cmath> 
using namespace std;
int main(){
long long a[100001],n,m,p1,s1,s2;
cin >> n;
for(int i = 1; i <= n; i++){
cin >> a[i];
}
cin >> m >> p1 >> s1 >> s2;
a[p1] += s1;
long long lpower = 0,rpower = 0;
for(int i = 1; i < m; i++){//龙气势 
lpower += a[i] * (m - i);
}
for(int i = m + 1; i <= n; i++){//虎气势 
rpower += a[i] * (i - m);
}
long long grap = abs(lpower - rpower);//龙虎气势差 
long long p2 = m;//默认 
for(int i = 1; i <= n; i++){
if(i < m){
if(abs(lpower + s2 * (m - i) - rpower) < grap){
grap = abs(lpower + s2 * (m - i) - rpower);
p2 = i;
}
}else if(i > m){
if(abs(rpower + s2 * (i - m) - lpower) < grap){
grap = abs(rpower + s2 * (i - m) - lpower);
p2 = i;
}
}
}
cout << p2;


return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
信息学奥赛一本通 NOIP500 第1部分》是一本参考书籍,其主要目的是为了帮助准备参加NOIP(全国青少年信息学奥林匹克的省级选拔赛)的学生进行备考。这本书的内容丰富多样,涵盖了计算机科学和编程的各个方面。 在这本书的第1部分,主要介绍了NOIP500比赛的背景和要求。它首先详细解释了NOIP500的含义和意义,以及为什么要参加这样的比赛。它还介绍了NOIP500的考试形式和内容,包括必考的算法、数据结构和编程语言等。此外,它还介绍了评分标准和考试日期等重要信息。 第1部分还包括了一些备考的重要指导和技巧。它解释了如何正确准备和安排备考时间,以及如何理解和解答常见的考试题型。此外,书中还提供了一些实用的练习题和例子,帮助学生加深对知识点的理解和掌握。 这本书的语言简洁明了,结构清晰,非常适合初学者使用。它过大量的例子和习题,帮助学生从基础知识开始逐步提高。此外,书中还附有一些重要的参考资料和学习资源,让学生能够更加全面地了解和学习计算机科学和编程。 总体而言,《信息学奥赛一本通 NOIP500 第1部分》是一本非常有价值的参考书籍,它能够为准备参加NOIP500的学生提供全面和系统的知识,帮助他们在竞赛中取得良好的成绩。对于对信息学感兴趣的学生,这本书也是一本很好的自学教材。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值