CH Round #46A 磁力块

还是一道好题的

对于一个磁石是否被吸引,有两个关键字:距离和质量。(二维偏序??)

好像是很厉害的分块姿势,先按第一关键字排序,在块中按第二关键字排

进行bfs,对于当前磁石,有1~k-1个块是第一关键字全部小于等于当前磁石的,那么暴力从块首往后,找到第一个第二关键字大于当前磁石属性的,那么前面都捡走,以后可以从这里开始找。

暴力枚举第k个块找答案。

一个优化就是找k的时候直接比较当前块的最大值就行了,因为当前的属性肯定是>kmin,<kmax滴

(垃圾CH本机AC提交WA幸好最后我搞对了)

#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long LL;int n;
struct node{LL dis,m,p,r;}a[310000];bool v[310000];
bool cmp1(node n1,node n2){return n1.m<n2.m;}
bool cmp2(node n1,node n2){return n1.dis<n2.dis;}int block,st[310000];
struct LIST
{LL p,r;
}list[310000];
int be[610];LL mx[610];int findk(LL p)
{for(int i=1;i<=block;i++)if(p<mx[i])return i;return block+1;
}int main()
{freopen("1.in","r",stdin);freopen("1.out","w",stdout);LL xx,yy,x,y;scanf("%lld%lld%lld%lld%d",&xx,&yy,&list[1].p,&list[1].r,&n);for(int i=1;i<=n;i++){scanf("%lld%lld%lld%lld%lld",&x,&y,&a[i].m,&a[i].p,&a[i].r);a[i].dis=(x-xx)*(x-xx)+(y-yy)*(y-yy);}sort(a+1,a+n+1,cmp1);block=(int(sqrt(double(n+1))))+1;for(int i=1;i<=n;i++)st[i]=(i-1)/block+1;for(int i=1;i<=block;i++){int St=(i-1)*block+1,Ed=min(i*block,n);mx[i]=a[Ed].m;if(St<=Ed)sort(a+St,a+Ed+1,cmp2);}for(int i=1;i<=block;i++)be[i]=1;memset(v,false,sizeof(v));int head=1,tail=2,ans=0;while(head<tail){LL p=list[head].p,r=list[head].r;int k=findk(p);for(int i=1;i<=k-1;i++){for(int j=be[i];j<=block&&(i-1)*block+j<=n;j++){int u=(i-1)*block+j;if(a[u].dis>r*r){be[i]=j;break;}{if(v[u]==false){v[u]=true;ans++;list[tail].p=a[u].p, list[tail].r=a[u].r;tail++;}}}}if(k!=block+1){for(int j=be[k];j<=block&&(k-1)*block+j<=n;j++){int u=(k-1)*block+j;if(a[u].dis>r*r)break;else if(a[u].m<=p){if(v[u]==false){v[u]=true;ans++;list[tail].p=a[u].p, list[tail].r=a[u].r;tail++;}}}}head++;}printf("%d\n",ans);return 0;
}

 

转载于:https://www.cnblogs.com/AKCqhzdy/p/9432686.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/366257.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CSS颜色代码

CSS颜色代码大全 FFFFFF#DDDDDD#AAAAAA#888888#666666#444444#000000#FFB7DD#FF88C2#FF44AA #FF0088 #C10066 #A20055 #8C0044 #FFCCCC#FF8888#FF3333 #FF0000 #CC0000 #AA0000 #880000 #FFC8B4#FFA488#FF7744 #FF5511 #E63F00 #C63300 #A42D00 #FFDDAA#FFBB66#FFAA33#FF8800 #…

js判断是否在iframe中

以下都可以判断代码是否在iframe中. 1.方式一 if (self.frameElement && self.frameElement.tagName "IFRAME") {   alert(在iframe中); } 2.方式二if (window.frames.length ! parent.frames.length) {   alert(在iframe中); } 3.方式三if (self ! top…

Java:逐步读取/流式传输CSV文件

我一直在做一些涉及读取CSV文件的工作&#xff0c;而我一直在使用OpenCSV &#xff0c;而我的最初方法是逐行读取文件&#xff0c;解析内容并将其保存到地图列表中。 当文件的内容适合内存时&#xff0c;此方法有效&#xff0c;但对于较大的文件来说是个问题&#xff0c;在这种…

mac 配置java adb环境_MAC 配置android adb命令的环境变量

1,打开终端&#xff0c;敲入命令&#xff1a;sudo vi .bash_profile (如果有密码就为本机登录密码)(如果没有这个文件就会创建一个新的)默认终端目录如图&#xff0c;生成的文件为隐藏文件&#xff1a;(显示隐藏文件命令&#xff1a;defaults write com.apple.finder AppleSho…

mac懒人版_这些实用的Mac软件你迟早会用到,建议收藏!

日常使用mac&#xff0c;遇到不同的问题可以通过不同的应用进行来进行处理&#xff0c;所以称手的工具是必不可少的。然而这些问题也会引导我们去发现更多实用优秀的软件&#xff0c;今天macdown就把自己在使用Mac过程中遇到的一些实用的Mac软件推荐给大家&#xff0c;相信你迟…

第一节 理解单元测试

在查看代码之前&#xff0c;最好提一下编写单元测试和使用单元测试的一些基本信息和规则。 记住这些基本规则并理解单元测试的重点非常重要。 单元测试不仅仅是一个很好的功能&#xff0c;而且是任何正规软件项目中绝对必要的部分。 1.什么是单元测试 一个简单的问题&#xff0…

Metro风格的Java组合框(JMetro)–重新介绍

我上一篇有关JMetro的文章–我的都市风格的Java外观&#xff08;或外观&#xff09;是关于日历选择器控件的外观 。 我本打算使用Tom Eugelink不错的日历选择器&#xff0c;但是当时我了解到它是由Oracle创建并随Java 8一起交付的&#xff0c;因此出于时间的考虑&#xff08;几…

弹性盒模型--新版与旧版比较(2)

弹性空间与元素具体位置设置是加在子元素身上的 <style> body{   margin: 0; } #box{   height: 300px;   border: 1px solid #000;   新版弹性盒模型   /*display: flex;*/ 老版弹性盒模型   display: -webkit-box; } #box div{   /*新版*/   /*flex-g…

KNNClassifier

import numpy as npfrom math import sqrtfrom collections import Counterfrom .metrics import accuracy_scoreclass KNNClassifier: def __init__(self, k): """初始化kNN分类器""" assert k > 1, "k must be valid…

左斜杠和右斜杠有什么区别_「斜杠云」SEO推广和SEO优化有什么区别?

1&#xff0c;首先&#xff0c;从概念上来说&#xff0c;网络推广就是企业从开始申请域名、租用空间、网站备-案、建立网站、直到网站正式上线开始就算是介入了网络推广活动&#xff0c;而通常我们所指的网络推广是指通过互联网的种种手段&#xff0c;进行的宣传推广等活动&…

python算两个时间之间的天数,将天数转成int型

import time import datetime#计算两个日期相差天数&#xff0c;自定义函数名&#xff0c;和两个日期的变量名。 def Caltime(date1,date2):#%Y-%m-%d为日期格式&#xff0c;其中的-可以用其他代替或者不写&#xff0c;但是要统一&#xff0c;同理后面的时分秒也一样&#xff1…

并发编程-concurrent指南-阻塞队列BlockingQueue

阻塞队列BlockingQueue&#xff0c;java.util.concurrent下的BlockingQueue接口表示一个线程放入和提取实例的队列。 适用场景&#xff1a; BlockingQueue通常用于一个线程生产对象&#xff0c;而另一个线程消费对象的场景。 一个线程往里面放&#xff0c;另一个线程从里面取的…

博主自制丨免费下载丨免费使用丨仅用于测试

链接&#xff1a;点我立即下载 提取码&#xff1a;0j6h

使用JSTL视图探索Spring Controller

让我们通过对Spring MVC的Controller开发的更多探索来改进以前的Spring JDBC应用程序 。 我将展示另一种编写新的Controller的练习&#xff0c;该Controller处理HTML表单并在JSP视图页面中使用JSTL标签。 要在Spring MVC应用程序中启用JSTL&#xff0c;您需要将以下内容添加到…

CSS 小结笔记之em

1、为什么使用em em也是css中的一种单位&#xff0c;和px类似。很多人会疑惑为什么有了px之后还要使用em&#xff0c;而且em使用起来相对于px来讲比较麻烦。 em主要是应用于弹性布局&#xff0c;下面给出一个小栗子说明em的强大之处 <!DOCTYPE html> <html lang&quo…

java 向父类_Java基础——面向对象(Object父类)

原标题&#xff1a;Java基础——面向对象(Object父类)声明&#xff1a;本栏目所使用的素材都是凯哥学堂VIP学员所写&#xff0c;学员有权匿名&#xff0c;对文章有最终解释权&#xff1b;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。Object 父类&#xff1a;Object的方法…

fedora 不在sudoers文件中_COPR 仓库中 4 个很酷的新软件(2019.4) | Linux 中国

COPR 是个人软件仓库集合&#xff0c;它不在 Fedora 中。这是因为某些软件不符合轻松打包的标准。或者它可能不符合其他 Fedora 标准&#xff0c;尽管它是自由而开源的。-- Dominik TurecekCOPR 是个人软件仓库集合[1]&#xff0c;它不在 Fedora 中。这是因为某些软件不符合轻松…

解决小程序里面的图片之间有空隙的问题???

1、将图片转换为块级对象 即&#xff0c;设置image为display:block; image {display:block;}2、设置图片的垂直对齐方式 即&#xff0c;设置图片的vertical-align属性为"top,text-top,bottom,text-bottom" image {vertical-align: top;vertical-align: text-top;…

使用Cassandra和Nutch爬网

因此&#xff0c;您想从互联网上收集大量数据吗&#xff1f; 有什么比Cassandra更好的存储机制&#xff1f; 使用Nutch可以轻松做到这一点。 人们经常在Nutch后面使用Hbase。 这可行&#xff0c;但是如果您是&#xff08;或想成为&#xff09;Cassandra商店&#xff0c;则可能…

弹性盒布局实例

今天给大家搞一个弹性盒布局的实例&#xff0c;最近一直在复习一些基础的东西&#xff0c;所以一直会跟大家分享一些基础的东西 说实话&#xff0c;最近感觉被掏空了&#xff0c;别问我为什么&#xff0c;谁去保健谁知道&#xff0c;哈哈&#xff0c;注意安全&#xff0c;好了步…