这题真是*到家了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. macOS在使用音视频通话时会降低其他音频声音的解决方法

    在使用QQ进行通话时,背景无法播放音乐(声音过小),并且在QQ for mac中也没有进行调整的设置选项. Solution: printf "p *(char*)(void(*)())Au ...

  2. 如何搜索 git 提交记录

    如何搜索 git 提交记录 git log -p --all -G '可通过正则搜索' --pretty=format:'%ci' # 可跨分支搜索 # -S '通过文本搜索' git branch ...

  3. 2019 面试准备 - JS 防抖与节流 (超级 重要!!!!!)

    Hello 小伙伴们,如果觉得本文还不错,记得给个 star , 你们的 star 是我学习的动力!GitHub 地址 本文涉及知识点: 防抖与节流 重绘与回流 浏览器解析 URL DNS 域名解析 ...

  4. 处理npm publish报错问题

    上传项目到npm-->为社会做贡献 首先你得有一个项目 npm init 生成package.json 来设置相信息 注册登录npm:npm adduser 输入你的一些信息 查看当前npm登录 ...

  5. webpack学习笔记 (三) webpack-dev-server插件和HotModuleReplacementPlugin插件使用

    webpack-dev-server插件 webpack-dev-server是webpack官方提供的一个小型Express服务器.使用它可以为webpack打包生成的资源文件提供web服务. we ...

  6. HDU 6521 Party

    6521 思路: 线段树玄学剪枝, 俗称吉司机线段树. 代码: #pragma GCC optimize(2) #pragma GCC optimize(3) #pragma GCC optimize ...

  7. 实验性质的JIT compiler(Ruby2.6)

    Ruby2.6的一个新的功能:Just in time complier 特点: 和传统的JIT编译器不一样之处:把代码写成C并存储在磁盘,并使用一个C编译器来生成native code.这样就节省了 ...

  8. Altium Designer添加元件库文件

    1 默认元件库路径 C:\Users\Public\Documents\Altium\AD 10.0.0.20340\Library 2 创建元件原理图库 图2.1 新建schlib 图2.2 绘制元 ...

  9. python-文件读写

    python对文件的操作对文件操作的步骤:1.打开文件2.读写文件3.关闭文件 一.读取文件的方法有三种:read(),readline(),readlines()f.readline() #每次读出 ...

  10. .NET 控件的认识。

    四单元的题目里面,涉及了很多之前没有用过的控件的使用,前12道题都不是很难,所以很快做完了 ,但是后面的因为timer控件找不到,有些操作无法实现,所以就没做,但是也是认真的看了的. 等什么时候把ti ...