这题真是*到家了QAQ

我在考场上调了将近75min,总算过了大样例。

首先,我们可以简化这一题,这道题的本质就是让我们找出一个点p2,往那个点上面加上s2个单位的重量,使得以m为中的两边的权值和的差尽量的小。

其中权值和的计算方法是:对于第i号节点(i!=m),令mi为它的权值,则有mi=|i-m|*ai,其中ai为输入时的该兵营的兵力总量。

明白了这一点后,剩下的就好办了。我们只要用一个bl_l来存储轩轩一方的权值总和,用bl_r来存储凯凯一方的权值总和;(注意,要用bl_l和bl_r 要开unsigned long long)

最后,计算cha = |bl_l-bl_r|;再用cha 来除以输入的s2(你手中拥有的兵力),就是answer 了

此时,还有一个要注意的地方,如果answer超过了n或者小于了1,那么就要相应地将其变成n或者1,因为答案必须在1~n之间。

而且answer需要四舍五入。

下面是代码:

 #include <cstdio>
#include <algorithm>
using namespace std;
#define ll unsigned long long
int a[],n,m,p1,s1,s2;
ll bl_l,bl_r;
int main()
{
// freopen("fight.in","r",stdin);
// freopen("fight.out","w",stdout);
scanf("%d",&n);
for (int i=;i<=n;i++)
scanf("%d",&a[i]);
scanf("%d %d %d %d",&m,&p1,&s1,&s2);
a[p1]+=s1;
for (int i=;i<m;i++) bl_l+=(ll)(m-i)*a[i];
for (int i=(int)m+;i<=n;i++) bl_r+=(ll)(i-m)*a[i];
// printf("%llu %llu\n",bl_l,bl_r);
if (bl_l==bl_r) printf("%d\n",m);
else if (bl_l<bl_r)
{
ll cha=bl_r-bl_l;
// printf("%lld\n",cha);
double mm=(double)cha/(double)s2;
// printf("%lf\n",mm);
ll dis_m=(mm*+)/;
if (m-dis_m<=) printf("1\n");
else printf("%lld\n",m-dis_m);
}
else
{
ll cha=bl_l-bl_r;
// printf("%lld\n",cha);
double mm=(double)cha/(double)s2;
// printf("%lf\n",mm);
ll dis_m=(mm*+)/;
if (m+dis_m>n) printf("%d\n",n);
else printf("%lld\n",m+dis_m);
}
fclose(stdin);
fclose(stdout);
return ;
}

P5016 龙虎斗 题解的更多相关文章

  1. NOIP2018普及T2暨洛谷P5016 龙虎斗

    题目链接:https://www.luogu.org/problemnew/show/P5016 分析: 这是一道模拟题.看到题目,我们首先要把它细致的读明白,模拟题特别考察细节,往往会有想不到的坑点 ...

  2. P5016 龙虎斗

    链接:P5016 ------------------------------------ 作为2019年的模拟,还是有必要写一些的 --------------------------------- ...

  3. 洛谷 P5016 龙虎斗(模拟)

    嗯... 题目链接:https://www.luogu.org/problem/P5016 这道题是一道模拟,不要考虑复杂,直接暴力枚举每一个点,看看加上s2之后两个势力的差值,找最小,记录下标. 注 ...

  4. 洛谷 P5016 龙虎斗

    输入兵营总数.兵营人数.以m分界. 然后输入s1个兵到了p1兵营. 最终我们要求的是把s2个兵放到哪个兵营使龙虎双方气势差距最小. 第一要把每个兵营的气势算出来,并且加到它所属的阵营里(<m是龙 ...

  5. P5016龙虎斗

    这道题是2018年普及组的第二题,是一个模拟题. 首先计算出双方各自的势力,然后将增援的队伍势力加上,比较此时双方势力,并且作差,最后枚举将公平兵加在哪一个兵营.看似简单的题被我20分钟就写完了,但是 ...

  6. 题解 P5016 【龙虎斗】

    首先祝各位大佬noip有个好成绩吧 当时比赛有个大数据,蒟蒻我暴力居然过了,好激动 这题一定要注意开long long (那个大数据就是我开long long才过的) 还有刚开始应设置答案为m(见解析 ...

  7. 2018年NOIP普及组复赛题解

    题目涉及算法: 标题统计:字符串入门题: 龙虎斗:数学题: 摆渡车:动态规划: 对称二叉树:搜索. 标题统计 题目链接:https://www.luogu.org/problem/P5015 这道题目 ...

  8. [Noip 2018][标题统计 龙湖斗 摆渡车 对称二叉树]普及组题解

    啊喂,都已经9102年了,你还在想去年? 这里是一个Noip2018年PJ第二题打爆的OIer,错失省一 但经过了一年,我学到了很多,也有了很多朋友,水平也提高了很多,现在回看当时: 今年的Noip ...

  9. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

随机推荐

  1. Java 问题定位工具 -- jps

    概览 最近老大布置的任务就是质量加固,偶然看到了一些对于 Java 性能分析的介绍,因此,有了此篇学习笔记. JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jCons ...

  2. Nilearn 小记

    4.绘制脑图像 4.1 绘图功能 当打开了太多图像而不关闭时,会出现如下问题: 每次调用绘图函数都会创建一个新图像.当在非交互式设置(例如脚本或程序)中使用时,这些图像不会显示,但会常驻于内存中并最终 ...

  3. vim 翻页命令

    整页翻页 ctrl-f:向下翻一页    f含义:forword ctrl-b:向上翻一页    b含义:backward 翻半页 ctrl-d:向下翻半页  d含义:down ctlr-u:向上翻半 ...

  4. Python自动发送邮件提示:smtplib.SMTPServerDisconnected: please run connect() first

    参考:http://blog.csdn.net/leven_change/article/details/66976695

  5. Ajax+setInterval定时异步刷新页面

    这个是之前一个项目中用到的功能,现在记录一下他的使用步骤. 现在讲解一下具体的关键代码: 1.   window.onload:是指等待页面html和css都执行完毕以后才开始执行js文件,因为我这个 ...

  6. 『高性能模型』卷积复杂度以及Inception系列

    转载自知乎:卷积神经网络的复杂度分析 之前的Inception学习博客: 『TensorFlow』读书笔记_Inception_V3_上 『TensorFlow』读书笔记_Inception_V3_下 ...

  7. 在mac os10.12上安装mysql5.7.18

    搜了全网都是各种坑,没能解决我的问题.最后自己琢磨出来了. 安装好以后,会弹出临时密码 ,copy住.如果手点快了,在通知栏还有一次机会,通知栏的就只能看着手打了.如果通知栏也x了,那就GG最快方法只 ...

  8. sql server中的varchar和Nvarchar有什么区别?

    很多开发者进行数据库设计的时候往往并没有太多的考虑char, varchar类型,有的是根本就没注意,因为存储价格变得越来越便宜了,忘记了最开始的一些基本设计理论和原则,这点让我想到了现在的年轻人,大 ...

  9. 2n字符

    有2n字符挨个排成一排,前n个是'1',后n个是'0'.如 11110000(此时2n=8),现在交换字符的位置,使之按照 10101010 的模式排列.而且要使字符移动的次数最少,编程计算最少的移动 ...

  10. 如何正确可视化RAW(ARW,DNG,raw等格式)图像?

    为了正确可视化RAW图像,需要做好:白平衡.提亮以及色彩映射. import numpy as np import struct from PIL import Image import rawpy ...