这道题是2018年普及组的第二题,是一个模拟题。

首先计算出双方各自的势力,然后将增援的队伍势力加上,比较此时双方势力,并且作差,最后枚举将公平兵加在哪一个兵营。看似简单的题被我20分钟就写完了,但是调了整整16次!对于“坑”值得警惕!

三个坑点:要用long long;当我copy龙的代替虎的时候一定要注意不再是m-p了,而是p-m了(m-ansp1与ansp2-m同理);当把公平兵全部加在一方时势力差可能要大于原有差,所以这时候也要加在中间。

1.复制代码时一定要考虑两个对象的不同计算,所以不多的话就不要复制前面的。

2.注意看运算结果的数据范围,小心被卡double ,long long...

3.一定要把整体过程把握好

4.不要把简单的题做简单了,想想还有什么情况,切忌盲目自信。

代码:

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#define MAXN 100000
using namespace std;
int n;
int m;//中间阵营
long long force_d=;
long long force_t=;
long long soldier[MAXN+];
long long p1,s1,p2,s2;
long long disparity=;
long long ansp1;
long long ansp2;
long long fabs(long long x){
if(x>=) return x;
else return -x;
}
int main(){
cin>>n;
for(int i=;i<=n;i++){
cin>>soldier[i];
}
cin>>m>>p1>>s1>>s2;
ansp1=;
ansp2=m+;
for(int i=;i<=m-;i++){//龙的势力
force_d=force_d+soldier[i]*(m-i);
}
for(int i=m+;i<=n;i++){//虎的势力
force_t=force_t+soldier[i]*(i-m);
}
if(p1<=m-&&p1<=n){//天降奇兵
force_d=force_d+s1*(m-p1);
}
else if(p1>=m+&&p1<=n){
force_t=force_t+s1*(p1-m);
}
else if(p1==m&&p1<=n){
force_t=force_t;
force_d=force_d;
}
//cout<<"气势"<<force_d<<" "<<force_t<<" ";
if(force_t>force_d){//虎大,加在龙营
disparity=force_t-force_d;
for(int i=;i<=m-;i++){
if(fabs(s2*(m-i)-disparity)<fabs(s2*(m-ansp1)-disparity)){
ansp1=i;
}
}
//cout<<endl;
//cout<<abs(s2*(m-ansp1[cnt])-disparity);
if(disparity>fabs(s2*(m-ansp1)-disparity)) cout<<ansp1;
else cout<<m;
return ;
}
else if(force_t<force_d){//龙大,加在虎营地
disparity=force_d-force_t;
for(int i=m+;i<=n;i++){
if(fabs(s2*(i-m)-disparity)<fabs(s2*(ansp2-m)-disparity)){
ansp2=i;
}
}
// cout<<abs(s2*(m-ansp2[cnt])-disparity);
if(disparity>fabs(s2*(ansp2-m)-disparity)) cout<<ansp2;
else cout<<m;
return ;
}
else if(force_t==force_d){
cout<<m;
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 龙虎斗 题解

    这题真是*到家了QAQ 我在考场上调了将近75min,总算过了大样例. 首先,我们可以简化这一题,这道题的本质就是让我们找出一个点p2,往那个点上面加上s2个单位的重量,使得以m为中的两边的权值和的差 ...

  5. 洛谷 P5016 龙虎斗

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

  6. 题解 P5016 【龙虎斗】

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

  7. bzoj P5016[Snoi2017]一个简单的询问——solution

    Description 给你一个长度为N的序列ai,1≤i≤N和q组询问,每组询问读入l1,r1,l2,r2,需输出   get(l,r,x)表示计算区间[l,r]中,数字x出现了多少次. Input ...

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

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

  9. 《阿Q正传》读后感

    kindle大法好. 利用坐车的时间阅读完了鲁迅先生写的<阿Q正传>, 心中感慨良多, 记下等以后翻看这些摸不着的回忆吧. 我没看过实体书版, 电子书版的<阿Q正传>注解很详细 ...

随机推荐

  1. APIview的请求生命周期源码分析

    目录 APIview的请求生命周期源码分析 请求模块 解析模块 全局配置解析器 局部配置解析器 响应模块 异常处理模块 重写异常处理函数 渲染模块 APIview的请求生命周期源码分析 Django项 ...

  2. 牛客网 Chess ( 博弈 && 奇异局势 )

    题目链接 分析 : 发现如果一开始就在边界或者位于对角线的位置上肯定是必胜态 从终点逆推,画出胜负表格,填一填,就会发现和奇异局势的前几项一样 然后打个奇异局势的表就能 AC 了 #include&l ...

  3. C/C++中的转义字符

    在C语言中有三种转义字符,它们是:一般转义字符.八进制转义字符和十六进制转义字符. 1.一般转义字符 这种转义字符,虽然在形式上由两个字符组成,但只代表一个字符.常用的一般转义字符为: \a \n \ ...

  4. 将Emacs Org mode用于GTD任务管理

    在上一篇日志中,我简要介绍了如何围绕Emacs Org mode构建个人任务管理系统的基本思路与方法.因为Org mode体系庞大.功能繁杂,本文仅以提纲契领的方式介绍不同环节在Org mode中的操 ...

  5. 【canvas学习笔记三】样式和颜色

    上一节我们学习了如何用路径绘制各种形状,但我们只能用默认的颜色和线条.这节就来学习设置不同的颜色和线条样式. 颜色 设置颜色主要有两个属性: fillStyle = color 设置填充颜色 stro ...

  6. 满减 HRBUST - 2455

    https://vjudge.net/problem/HRBUST-2455 有两种优惠方式,一是满400减100,另外一种是商品自带折扣,二者不可叠加 dp[i][j]表示前i种商品,(参与满400 ...

  7. 5.并发编程-synchronized 细节说明

    并发编程-synchronized 细节说明 1. synchronized-锁重入 & 异常释放锁 说明 * 关键字synchronized 拥有锁重入的功能,也就是在使用synchroni ...

  8. JavaScript难点笔记

    前言 由于工作需求重新回顾了一下JavaScript,以下内容是我以前的学习笔记和其他参考资料整理完善后的内容,都是常用到的,使用频率比较高的,自己必须得精通的知识点的总结,便以后再复习参考. 第一章 ...

  9. numpy库简单使用

    numpy简介 NumPy(Numerical Python)是python语言的一个扩展程序库,支持大量维度数组与矩阵运算,此外,也针对数据运算提供大量的数学函数库. NumPy是高性能科学计算和数 ...

  10. C#程序自动安装数字证书

    using System.Security.Cryptography.X509Certificates; MessageBox.Show("开始"); //添加个人证书 X509C ...