题目描述

轩轩和凯凯正在玩一款叫《龙虎斗》的游戏,游戏的棋盘是一条线段,线段上有 n n n 个兵营(自左至右编号 1 ∼ n 1∼n 1∼n),相邻编号的兵营之间相隔 1 1 1厘米,即棋盘为长度为 n − 1 n-1 n−1厘米的线段。 i i i号兵营里有 c i c_i ci​位工兵。 下面图 1 1 1为 n = 6 n=6 n=6的示例:
轩轩在左侧,代表“龙”;凯凯在右侧,代表“虎”。 他们以 m m m号兵营作为分界, 靠左的工兵属于龙势力,靠右的工兵属于虎势力,而第 m m m号兵营中的工兵很纠结,他们不属于任何一方。
一个兵营的气势为:该兵营中的工兵数 × 该兵营到 m m m号兵营的距离;参与游戏 一方的势力定义为:属于这一方所有兵营的气势之和。
下面图 2 2 2为 n = 6 n=6 n=6, m = 4 m = 4 m=4的示例,其中红色为龙方,黄色为虎方:

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

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

输入输出格式

输入格式:

输入文件的第一行包含一个正整数 n n n,代表兵营的数量。接下来的一行包含 n n n个正整数,相邻两数之间以一个空格分隔,第 i i i个正整数代 表编号为 i i i的兵营中起始时的工兵数量 c i c_i ci​。接下来的一行包含四个正整数,相邻两数间以一个空格分隔,分别代表 m m m, p 1 p_1 p1​, s 1 s_1 s1​, s 2 s_2 s2​。

输出格式:

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

输入输出样例

输入样例#1:
6
2 3 2 3 2 3
4 6 5 2
输出样例#1:
2
输入样例#2:
6
1 1 1 1 1 16
5 4 1 1
输出样例#2:
1

说明

输入输出样例 1 说明】

见问题描述中的图 2 2 2。
双方以 m = 4 m=4 m=4号兵营分界,有 s 1 = 5 s_1=5 s1​=5位工兵突然出现在 p 1 = 6 p_1=6 p1​=6号兵营。 龙方的气势为:

2 × ( 4 − 1 ) + 3 × ( 4 − 2 ) + 2 × ( 4 − 3 ) = 14 2×(4−1)+3×(4−2)+2×(4−3)=14 2×(4−1)+3×(4−2)+2×(4−3)=14

虎方的气势为:

2 × ( 5 − 4 ) + ( 3 + 5 ) × ( 6 − 4 ) = 18 2×(5−4)+(3+5)×(6−4)=18 2×(5−4)+(3+5)×(6−4)=18

当你将手中的 s 2 = 2 s_2=2 s2​=2位工兵派往 p 2 = 2 p_2=2 p2​=2号兵营时,龙方的气势变为:

14 + 2 × ( 4 − 2 ) = 18 14+2×(4−2)=18 14+2×(4−2)=18

此时双方气势相等。

【输入输出样例 2 说明】

双方以 m = 5 m=5 m=5号兵营分界,有 s 1 = 1 s_1=1 s1​=1位工兵突然出现在 p 1 = 4 p_1 =4 p1​=4号兵营。
龙方的气势为:

1 × ( 5 − 1 ) + 1 × ( 5 − 2 ) + 1 × ( 5 − 3 ) + ( 1 + 1 ) × ( 5 − 4 ) = 11 1×(5−1)+1×(5−2)+1×(5−3)+(1+1)×(5−4)=11 1×(5−1)+1×(5−2)+1×(5−3)+(1+1)×(5−4)=11

虎方的气势为:

16 × ( 6 − 5 ) = 16 16×(6−5)=16 16×(6−5)=16

当你将手中的 s 2 = 1 s_2=1 s2​=1位工兵派往 p 2 = 1 p_2=1 p2​=1号兵营时,龙方的气势变为:

11 + 1 × ( 5 − 1 ) = 15 11+1×(5−1)=15 11+1×(5−1)=15

此时可以使双方气势的差距最小。

【数据规模与约定】
1 &lt; m &lt; n , 1 ≤ p 1 ≤ n 1&lt;m&lt;n,1≤p_1≤n 1<m<n,1≤p1​≤n。
对于 20 % 20\% 20%的数据, n = 3 , m = 2 , c i = 1 , s 1 , s 2 ≤ 100 n=3,m=2,c_i=1,s_1,s_2≤100 n=3,m=2,ci​=1,s1​,s2​≤100
另有 20 % 20\% 20%的数据, n ≤ 10 , p 1 = m , c i = 1 , s 1 , s 2 ≤ 100 n≤10,p_1=m,c_i=1,s_1,s_2≤100 n≤10,p1​=m,ci​=1,s1​,s2​≤100
对于 60 % 60\% 60%的数据, n ≤ 100 , c i = 1 , s 1 , s 2 ≤ 100 n≤100,c_i=1,s_1,s_2≤100 n≤100,ci​=1,s1​,s2​≤100
对于 80 % 80\% 80%的数据, n ≤ 100 , c i , s 1 , s 2 ≤ 100 n≤100,c_i,s_1,s_2 ≤ 100 n≤100,ci​,s1​,s2​≤100
对于 100 % 100\% 100%的数据, n ≤ 1 0 5 , c i , s 1 , s 2 ≤ 1 0 9 n≤10^5 ,c_i,s_1,s_2≤10^9 n≤105,ci​,s1​,s2​≤109

思路

其实这一道题还是比较简单的。
读到这里应该已经有人握紧拳头了
因为 m m m是要后面读入的,所以我是读入完后再一个 f o r for for语句算出 l l l和 r r r( l l l带表左方的气势, r r r带表右方的气势)(还有气势也可以用前缀和算,但当时没有想到),然后根据两个判断和公式即可求出。

#include<iostream>
#include<cstdio>
using namespace std;
long long n,m,k,a[10000005];
int main()
{//  freopen("fight.in","r",stdin);
//  freopen("fight.out","w",stdout);scanf("%lld",&n);for(int i=1;i<=n;++i)scanf("%lld",&a[i]);long long x,y;scanf("%lld%lld%lld%lld",&m,&x,&y,&k);if(m==1 || m==n)//因为都大于0,所以如果在1或n就可以直接输出m{printf("%d",m);fclose(stdin);fclose(stdout);return 0;}a[x]+=y;//把后来要加的加上long long l=0,r=0;for(int i=1;i<=n;++i)//算气势{if(i<m)l+=(long long)a[i]*(m-i);else r+=(long long)a[i]*(i-m);}if(l<r)//如果右边的气势比左边大,把“救兵”放左边{long long t=m-((r-l)/k);//这个程序的精华if((r-l)%k>k/2)t--;//精华#2,因为要算最近的,所以一波骚操作。还有考试的时候,就错这,t--写成t++了,对了就一等了.[哭][哭][哭]printf("%lld",max(t,(long long)1));//防止超界}else if(l>r)//如果左边的气势比右边大,把“救兵”放右边{long long t=m+((l-r)/k);//精华if((l-r)%k>k/2)t++;//精华#2printf("%lld",min(t,(long long)n));//防止超界}elseif(l==r)printf("%lld",m);//如有两边气势相同,就放在分界点
//  fclose(stdin);
//  fclose(stdout);return 0;
}

【NOIP2018普及组】龙虎斗相关推荐

  1. 信息学奥赛一本通 1979:【18NOIP普及组】龙虎斗 | 洛谷 P5016 [NOIP2018 普及组] 龙虎斗

    [题目链接] ybt 1979: [18NOIP普及组]龙虎斗 洛谷 P5016 [NOIP2018 普及组] 龙虎斗 [题目考点] 1. long long类型使用 已知变量a, b是int类型的变 ...

  2. [NOIP2018 普及组] 龙虎斗

    今天就讲讲普及组的题目吧(本菜狗今年就差0.5分就晋级了呜呜呜) 进入正题 先上题目 轩轩和凯凯正在玩一款叫<龙虎斗>的游戏,游戏的棋盘是一条线段,线段上有 nn 个兵营(自左至右编号1∼ ...

  3. P5016 [NOIP2018 普及组] 龙虎斗

    题目描述 轩轩和凯凯正在玩一款叫<龙虎斗>的游戏,游戏的棋盘是一条线段,线段上有 nn 个兵营(自左至右编号 1 \sim n1∼n),相邻编号的兵营之间相隔 11 厘米,即棋盘为长度为  ...

  4. 信息学奥赛一本通 1981:【18NOIP普及组】对称二叉树 | 洛谷 P5018【NOIP2018 普及组】 对称二叉树

    [题目链接] ybt 1981:[18NOIP普及组]对称二叉树 洛谷 P5018[NOIP2018 普及组] 对称二叉树 [题目考点] 二叉树 [解题思路] 先求出二叉树中各子树的结点数 遍历二叉树 ...

  5. 信息学奥赛一本通 1978:【18NOIP普及组】标题统计 | 洛谷 P5015 [NOIP2018 普及组] 标题统计

    [题目链接] ybt 1978:[18NOIP普及组]标题统计 洛谷 P5015 [NOIP2018 普及组] 标题统计 [题目考点] 1. 字符串 读入带空格的字符串 将带空格的字符串读入字符数组 ...

  6. P5017 NOIP2018 普及组 摆渡车

    P5017 NOIP2018 普及组 摆渡车 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 显然要把人按照到达时间排序.然后考虑 dp. 设 \(f(i)\) 表示前 \(i\) ...

  7. NOIP2018普及组初赛题解

    展开全文 第24届全国青少年信息学奥林匹克联赛初赛 普及组C++语言试题 竞赛时间:2018 年 10 月 13 日 14:30~16:30 选手注意: 1.试题纸共有 7 页,答题纸共有 2 页,满 ...

  8. NOIp2018普及组-摆渡车

    (作为一名已经离开了普及组的退役选手感到万分庆幸) 题目链接:https://www.luogu.org/problemnew/solution/P5017 1.感觉就是一个类似线性的以时间作为维度的 ...

  9. 【NOIP2018普及组】对称二叉树

    @对称二叉树@ @题目描述@ @题解@ @代码@ @end@ @题目描述@ 一棵有点权的有根树如果满足以下条件,则被轩轩称为对称二叉树: 二叉树: 将这棵树所有节点的左右子树交换,新树和原树对应位置的 ...

最新文章

  1. 从0学人脸识别,我花3小时复现了Eigenfaces For Recognition
  2. MySQL执行外部sql脚本
  3. C#中枚举类型的声明与使用举例
  4. 解决SecureCRT中文版数据库里没找到防火墙'无'的错误提示
  5. 很有用的X264和ffmpeg的设置
  6. Angular 自定义属性指令-禁止input框输入空格-以及删除复制内容中的空格
  7. Nginx核心模块ngx_http_proxy_module与nginx反向代理、负载均衡详解
  8. SpringCloud工作笔记088---SpringBoot启动报错:启动后的端口是8080但是明明配置文件中是8000_Request execution error_ java.net.Conn
  9. rocketmq linux环境下载地址,Linux下RocketMQ下载安装教程
  10. 给定一个区间寻找三角形_计算给定图片中的三角形数量–程序化解决方案
  11. MAC使用find命令的正确办法
  12. 【STM32H7的DSP教程】第18章 DSP控制函数-更好用的SIN,COS计算
  13. 手机下载的Termux如何利用you-get 下载视频
  14. 8.单链表实现与反转
  15. 微信屏蔽网址解决办法 怎么样才能让被微信屏蔽的网址正常访问
  16. [树莓派 PICO(基于MicroPython)]基础教程02-按键测试、按键控制外设LED开关
  17. Boost程序库完全开发指南——深入C++“准”标准库(第3版)
  18. 2014年计算机专业硕士研究生好就业吗?一位计算机专业硕士毕业生的求职经历和感想
  19. java 刻度尺_GitHub - yhongm/ScaleView: ArcScaleView,ScaleView,刻度尺选择器,包括弧形刻度尺选择器和直尺形刻度尺选择器...
  20. 2017-18赛季NBA常规赛十大事件盘点

热门文章

  1. 如何查询微博主页地址是什么?
  2. 车路协同先导试验平台
  3. 最全英豪工具箱(LvyhTools)PPT插件教程(前篇)
  4. antd中reset为啥点击两次
  5. mapgis矢量化怎么打分数_Mapgis矢量化方法
  6. 为什么canal数据只推送到kafka topic的其中一个分区中
  7. work-notes(15):私服报错401,Sonatype Nexus Repository Manager,may not contain non-url-safe chars如何解决?
  8. arcgis通俗易懂教程(一)------入门教程
  9. 映射、单射、满射、双射
  10. 酷派android最新版本,酷云手机版下载