这道题是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. 跨平台信息获取小工具第三版本(增加了继承、多线程、异常处理模块、excel表格内容剔除空格)

    # coding=utf-8 import threadingimport paramikoimport osimport timeimport xlrdimport xlwtimport openp ...

  2. hdu 6377 : 度度熊看球赛

    题目链接 题解: 将原问题转换为 对于全部 (2n)! 种情况,每种情况对ans的贡献为 D^k,其中k表示该情况下有k对情侣座位相邻. 预处理好共有 i (1<=i<=N)对情侣时,出现 ...

  3. Windows 环境上域名配置

    1.Hosts位置 C:\Windows\System32\drivers\etc\hosts 2.Hosts内容 # Copyright (c) 1993-2009 Microsoft Corp. ...

  4. 利用word宏功能一键导出数据库表结构

    前言: 需求是: 为了完成<数据库设计文档>中的表结构展示,需要导出所有的表结构,包括字段名.长度.注释等必要标题. 数据库:MySQL 我选择的方法是——用word的宏功能导出.很多博客 ...

  5. java8 for循环了改为 流

    刚开始用java8的时候,很多都是替代for循环,因为java8推出了强大的流stream,关于流的用法很多,百度一下就可以搜到语法之类,所以这里我只想举一些简单替代for的例子,含义那些就自己去查吧 ...

  6. 关于项目中的一些经验:封装activity、service的基类,封装数据对象

    经验一,将几个页面公用的数据,和方法进行封装,形成一个baseActivity的类: package com.ctbri.weather.control; import java.util.Array ...

  7. 配置Nginx和Apache允许指定域名CORS跨域访问

    前后端分离开发,导致前端项目需要跨域请求后端接口,解决方法有很多,本文只介绍两个: 1. 修改后端程序代码实现允许跨域请求 2. 修改服务器配置文件实现允许跨域请求 正文: 方法1:修改后端程序代码实 ...

  8. &&的运算顺序

    先判断“&&”左侧的表达式,左侧的表达式为真时,再运算右侧的表达式.如左侧为假,则不运算右侧.

  9. jQuery file upload callback options

    autoUpload By default, files added to the widget are uploaded as soon as the user clicks on the star ...

  10. oracle之VARCHAR2(50 CHAR) 和VARCHAR2(50) 区别?

      首先要明白的是:根据字符集不同,varchar2(50)这样在gbk可存25个汉字,utf8可存16个汉字 这里的50相当于50BYTE,是按字节计数,50CHAR是按字符计数. 对于多字节字符( ...