问题 A: Kill

时间限制: 1 Sec  内存限制: 256 MB

题面


题面谢绝公开。

题解


80%算法

赛时并没有想到正解,而是选择了另一种正确性较对的贪心验证。

对于每一个怪,我们定义它的权值为到结算点的距离。

二分答案,对于每一个人,考虑他能打的所有怪,选择权值最大的怪去打。这样可以尽量将权值小的怪留给后面的人。

然而这样会挂掉。考虑假如结算点在中间,右边怪少人多,左边怪多人少,

而左边一个距离结算点比较近的人可能会抢掉右边一个怪,造成答案不优。

复杂度$O(nmlog)$

100%算法

正解二分加贪心验证。对人的位置和怪的位置分别排序。

二分最终答案。check的时候顺序扫每一个人,顺序打怪即可。可以保证每个人都有怪打。

复杂度$O(nlog)$

代码:

#include<bits/stdc++.h>
#define rint register int
#define ll long long
#define read(A) A=init()
using namespace std;
inline int init()
{
int a=,b=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')b=-;ch=getchar();}
while(ch>=''&&ch<=''){a=(a<<)+(a<<)+ch-'';ch=getchar();}
return a*b;
}
int n,m,s,ans=0x7fffffff;
int p[],q[],w[];
bool vis[];
inline ll get_dis(int x,int y)
{
return 1ll*abs(q[y]-p[x])+abs(q[y]-s);
}
inline bool check(ll mid)
{
int j=;
for(rint i=;i<=n;++i)
{
while(j<=m)
{
if(get_dis(i,j)<=mid){j++;break;}
j++;
}
if((j==m+)&&(i<n))
return false;
if((j==m+)&&(i==n)&&get_dis(n,m)>mid)
return false;
}
return true;
}
int main()
{
read(n),read(m),read(s);
for(rint i=;i<=n;++i)read(p[i]);
for(rint i=;i<=m;++i)read(q[i]);
ll l=,r=0x7fffffffffffffff;
sort(p+,p+n+);sort(q+,q+m+);
while(l<=r)
{
ll mid=(l+r)>>;
if(!check(mid))l=mid+;
else r=mid-;
}
printf("%lld\n",l);
return ;
}

最新文章

  1. DirectDraw创建Windows窗口
  2. MySQL学习记录--操作时间数据
  3. Java多线程系列--“基础篇”06之 线程让步
  4. KVM 介绍(6):Nova 通过 libvirt 管理 QEMU/KVM 虚机 [Nova Libvirt QEMU/KVM Domain]
  5. NET中的规范标准注释(二) -- 创建帮助文档入门篇
  6. mORMot 数据库操作
  7. 从决策树学习谈到贝叶斯分类算法、EM、HMM --别人的,拷来看看
  8. win10 mysql详尽安装教程
  9. Jenkins +git +python 进行持续集成进行接口测试(接口测试jenkins持续集成篇)
  10. Myeclipse10破解版安装包
  11. 字符串转义为HTML
  12. Python序列的一点用法
  13. 445. Add Two Numbers II 链表中的数字求和
  14. 【SQL】小心在循环中声明变量——浅析SQL变量作用域
  15. 《全栈性能Jmeter》-2性能测试初体验
  16. php函数总结2
  17. ISCSI测试
  18. 完成向后台添加用户的ssm项目,完整版
  19. 使用JQuery插件Jcrop进行图片截取
  20. Mac 设置终端中使用 sublime 打开文件

热门文章

  1. 笔记63 Spring Boot快速入门(三)
  2. windows线程函数必须为全局函数或者静态函数(转)
  3. Python的历史及介绍
  4. Android开发笔记之ArrayAdapter
  5. push declined due to email privacy restrictions
  6. 使用cordova,使html5也能像IOS,Android那样可以 调取手机的相机拍照功能
  7. pom.xml解释
  8. 阿里云HBase全新发布X-Pack NoSQL数据库再上新台阶
  9. sql 聚合查询
  10. 【LeetCode 4】寻找两个有序数组的中位数