P5016龙虎斗
这道题是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龙虎斗的更多相关文章
- NOIP2018普及T2暨洛谷P5016 龙虎斗
题目链接:https://www.luogu.org/problemnew/show/P5016 分析: 这是一道模拟题.看到题目,我们首先要把它细致的读明白,模拟题特别考察细节,往往会有想不到的坑点 ...
- P5016 龙虎斗
链接:P5016 ------------------------------------ 作为2019年的模拟,还是有必要写一些的 --------------------------------- ...
- 洛谷 P5016 龙虎斗(模拟)
嗯... 题目链接:https://www.luogu.org/problem/P5016 这道题是一道模拟,不要考虑复杂,直接暴力枚举每一个点,看看加上s2之后两个势力的差值,找最小,记录下标. 注 ...
- P5016 龙虎斗 题解
这题真是*到家了QAQ 我在考场上调了将近75min,总算过了大样例. 首先,我们可以简化这一题,这道题的本质就是让我们找出一个点p2,往那个点上面加上s2个单位的重量,使得以m为中的两边的权值和的差 ...
- 洛谷 P5016 龙虎斗
输入兵营总数.兵营人数.以m分界. 然后输入s1个兵到了p1兵营. 最终我们要求的是把s2个兵放到哪个兵营使龙虎双方气势差距最小. 第一要把每个兵营的气势算出来,并且加到它所属的阵营里(<m是龙 ...
- 题解 P5016 【龙虎斗】
首先祝各位大佬noip有个好成绩吧 当时比赛有个大数据,蒟蒻我暴力居然过了,好激动 这题一定要注意开long long (那个大数据就是我开long long才过的) 还有刚开始应设置答案为m(见解析 ...
- bzoj P5016[Snoi2017]一个简单的询问——solution
Description 给你一个长度为N的序列ai,1≤i≤N和q组询问,每组询问读入l1,r1,l2,r2,需输出 get(l,r,x)表示计算区间[l,r]中,数字x出现了多少次. Input ...
- 2018年NOIP普及组复赛题解
题目涉及算法: 标题统计:字符串入门题: 龙虎斗:数学题: 摆渡车:动态规划: 对称二叉树:搜索. 标题统计 题目链接:https://www.luogu.org/problem/P5015 这道题目 ...
- 《阿Q正传》读后感
kindle大法好. 利用坐车的时间阅读完了鲁迅先生写的<阿Q正传>, 心中感慨良多, 记下等以后翻看这些摸不着的回忆吧. 我没看过实体书版, 电子书版的<阿Q正传>注解很详细 ...
随机推荐
- JAVA笔记26-网络编程(不等于网站编程)
一.网络基础(TCP/IP详解) 1.IP协议(Internet Protocol):网络层,支持网间数据报通信.无连接数据报传送,数据报路由选择和差错控制. IPv4 32位(4字节),IPv6 1 ...
- 解决SonarQube启动时直接挂掉问题
症状:启动SonarQube时,系统启动,但是马上关闭 查看日志,提示ElasticSearch启动有问题ClusterBlockException[blocked by: [FORBIDDEN/12 ...
- The Preliminary Contest for ICPC Asia Shanghai 2019 B. Light bulbs
题目:https://nanti.jisuanke.com/t/41399 思路:差分数组 区间内操作次数为奇数次则灯为打开状态 #include<bits/stdc++.h> using ...
- php实现hashTable
Hash表作为最重要的数据结构之一,也叫做散列表.使用PHP实现Hash表的功能.PHP可以模拟实现Hash表的增删改查.通过对key的映射到数组中的一个位置来访问.映射函数叫做Hash函数,存放记录 ...
- 苹果手机上input的button按钮颜色显示问题
在苹果手机上的input按钮自带效果,需要加上outline:0px; -webkit-appearance:none; 清除原有样式,同时苹果手机上的input按钮自带圆角需要按需要去掉 input ...
- 【canvas学习笔记五】使用图片
在canvas里画图有两个步骤: 获得图片源. drawImage()画图. 图片源 canvas支持以下几种图片资源: HTMLImageElement 可以使用Image()方法构造的图片,也可以 ...
- (52)LINUX应用编程和网络编程之七Linux线程
3.7.1.再论进程 3.7.1.1.多进程实现同时读取键盘和鼠标 3.7.1.2.使用进程技术的优势 (1)CPU时分复用,单核心CPU可以实现宏观上的并行.微观上的串行 (2)实现多任务系统需求( ...
- web编辑器的快捷键
alt 键:可以同时选中多个光标 .box 按住 tab 键 可以快速的 <div class="box"></div> #box 按住 tab 键 可以快 ...
- leetcode-mid-array-sorting and searching - 215 Kth Largest Element in an Array
mycode 77.39% class Solution(object): def findKthLargest(self, nums, k): """ :type n ...
- ls -i
ls的不同选项有不同的含义: -l 是用long的长格式显示 条目信息 -a 显示所有的文件, 包括隐藏文件 -i: 是显示inode, 主要是用来查看硬链接的