背景:

考场上30分,后来听说是FFT,觉得好高级,感觉这种问题好神仙。
改用MarkdownMarkdownMarkdown。

题意:

在平面直角坐标系给nnn个点,每个点有一个对应的类型(012012012),求两个相同类型夹中点为不同类型的点的方案数。

思路:

由数学知识可以知道,对于三个点(x1,y1)(x_1,y_1)(x1​,y1​),(x2,y2)(x_2,y_2)(x2​,y2​),(x3,y3)(x_3,y_3)(x3​,y3​),当(x2,y2)(x_2,y_2)(x2​,y2​)为另外两点中点时,必然有x2=x1+x32,y2=y1+y32x_2=\dfrac{x_1+x_3}{2},y_2=\dfrac{y_1+y_3}{2}x2​=2x1​+x3​​,y2​=2y1​+y3​​,同理,知道后者也可推出前者。

考虑将二维问题转化为一维问题。

对于每一个点的坐标(xi,yi)(x_i,y_i)(xi​,yi​)变为1000∗xi+yi1000*x_i+y_i1000∗xi​+yi​。那么对于三个点1000∗x1+y11000*x_1+y_11000∗x1​+y1​,1000∗x2+y21000*x_2+y_21000∗x2​+y2​,1000∗x3+y31000*x_3+y_31000∗x3​+y3​,若1000∗x2+y21000*x_2+y_21000∗x2​+y2​为其它两点的中点,必然有1000∗x2+y2=1000∗x1+y1+1000∗x3+y321000*x_2+y_2=\dfrac{1000*x_1+y_1+1000*x_3+y_3}{2}1000∗x2​+y2​=21000∗x1​+y1​+1000∗x3​+y3​​,即(1000∗x2+y2)∗2=1000∗x1+y1+1000∗x3+y3(1000*x_2+y_2)*2=1000*x_1+y_1+1000*x_3+y_3(1000∗x2​+y2​)∗2=1000∗x1​+y1​+1000∗x3​+y3​。也就是说当前仅当满足y∗2=x+zy*2=x+zy∗2=x+z时,yyy为x,zx,zx,z的中点。同理,知道后者也可推出前者。

问题就变得简单了。
考虑设yyy的类型为000,其它类型同理。
构造Ai=[typei=0]A_i=[type_i=0]Ai​=[typei​=0],然后另Si=Ai∗AiS_i=A_i*A_iSi​=Ai​∗Ai​。我们有上面可以知道,若yyy点为x,zx,zx,z中点,其结果必然是偶数,而x,zx,zx,z,z,xz,xz,x为一种情况,因此结果需要除以222。所以由SiS_iSi​来计算结果即可。

时间复杂度Θ(nlogn)\Theta(nlogn)Θ(nlogn)。

代码:

// luogu-judger-enable-o2
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
const double pai=acos(-1.0);
struct comp
{double x,y;comp(double xx=0,double yy=0):x(xx),y(yy) {}friend comp operator+(const comp &x,const comp &y) {return comp(x.x+y.x,x.y+y.y);}friend comp operator-(const comp &x,const comp &y) {return comp(x.x-y.x,x.y-y.y);}friend comp operator*(const comp &a,const comp &b) {return comp(a.x*b.x-a.y*b.y,a.x*b.y+b.x*a.y);}
}a[2500000];int limit=1,n,l=0,ma=0;int r[2500000],ans[2500000],id[2500000];int type[2500000];
void init(int ma)
{while(limit<=(ma<<1))limit<<=1,l++;for(int i=1;i<=limit;i++)r[i]=((r[i>>1]>>1)|((i&1)<<(l-1)));
}
void FFT(comp *now,int ty)
{for(int i=0;i<limit;i++)if(i<r[i]) swap(now[i],now[r[i]]);for(int mid=1;mid<limit;mid<<=1){comp wn(cos(pai/mid),ty*sin(pai/mid));for(int j=0,R=(mid<<1);j<limit;j+=R){comp w(1,0);for(int k=0;k<mid;k++,w=w*wn){comp x=now[j+k],y=w*now[j+k+mid];now[j+k]=x+y;now[j+k+mid]=x-y;}}}
}
void work(int x)
{for(int i=0;i<=limit;i++)a[i]=(comp){0,0};for(int i=0;i<=ma;i++)if(type[i]==x) a[i].x=1; else a[i].x=0;FFT(a,1);for(int i=0;i<=limit;i++)a[i]=a[i]*a[i];FFT(a,-1);for(int i=0;i<=(ma<<1);i+=2)if(type[i/2]&&type[i/2]!=x) ans[i/2]+=(int)floor(a[i].x/limit+0.001)/2;
}
int main()
{int x,y,z;scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d %d %d",&x,&y,&z);type[x*1000+y]=z+1;id[i]=x*1000+y;ma=max(ma,x*1000+y);}init(ma);work(1),work(2),work(3);for(int i=1;i<=n;i++)printf("%d\n",ans[id[i]]);
}

GODI2018基站相关推荐

  1. 手机自带的显示基站命令

    安卓手机自带快捷指令显示当前的网络信息,不过手机厂商不同,命令也不一样.每次要用时总想不起来命令,记下备用. (1) HTC 安卓手机 在拨号键盘输入 *#*#4636#*#* , 选择 " ...

  2. android 获取手机GSM/CDMA信号信息,并获得基站信息

    本文转自:http://software.intel.com/zh-cn/blogs/2011/12/16/android-gsmcdma/ 在Android中我们常用的轻松获取WIFI信号列表,那如 ...

  3. 全国移动联通基站数据升级包(2013年1月基站升级包).rar

    "全国移动联通基站数据升级包(2013年1月基站升级包).rar" 已经上传到CNBLOGS 地址:http://files.cnblogs.com/topwang-com/%E5 ...

  4. 华为又一重拳!全球首款5G基站核心芯片“天罡”发布!

    作者 | 孙浩峰 来源 | CSDN云计算(ID:CSDNcloud) 1 月 24 日,华为在北京举办 5G 发布会暨 2019 世界移动大会预沟通会,发布了全球首款 5G 基站核心芯片--华为天罡 ...

  5. 通信基站电池,再也不怕丢了

    在安防行业细分化的进程中,我们极少关注通信机房的安防需求.但就事实而言,近年来,随着计算机技术.网络技术以及无线通讯技术的发展,我国建设了大量的通信机房.每个机房都有一套独立的设备,包含交换机.服务器 ...

  6. 三大运营商集体为电费发愁,宣布“智能化关闭5G基站”,5G建设能省则省!

    来源:卫星与网络 何为"智能化关闭5G基站" 本月初有消息称,中国联通洛阳分公司分别对已经入网的3种不同基站射频单元设备(AAU),分不同时段定时开启空载状态下的深度休眠功能,从而 ...

  7. 深度分析:基站+光通信+手机都用到了哪些美国芯片?有何替代?

    来源:21ic电子网 摘要:2016年3月8日,美国商务部由于中兴通讯涉嫌违反美国对伊朗的出口管制政策,中兴实行禁运. 丨事件: 2018年04月16日,美国商务部发布对中兴通讯出口权限禁令,禁止美国 ...

  8. Bzoj1835:[ZJOI2010]基站选址

    Sol 设\(f[i][j]\)表示钦定\(i\)建基站,建了\(j\)个基站的最小代价 \(f[i][j]=max(f[l][j-1]+\Sigma_{t=l+1}^{i-1}\)不能影响到的村庄的 ...

  9. 诺基亚发布首款高功率小基站SCORE以及Flexi Zone LWA支持能力

    诺基亚通过一系列创新继续扩展其小基站产品组合的功能,包括增加新的基站类别.NokiaFlexi Zone迷你宏站与小基站一样,非常紧凑,易于部署,并能提供 2 x 20W 功率,可支持运营商经济高效地 ...

最新文章

  1. 深入解读MySQL8.0 新特性 :Crash Safe DDL
  2. Java方法案例--比较两个值是否相等
  3. way.js - 轻量级、持久化的双向绑定JS库
  4. python turtle 绘图_谈一下Pycharm中关联系统Python解释器的方法
  5. torch.backends.cudnn.benchmark 加速训练
  6. cNoteSetColor_命令窗口颜色设置
  7. Operation,Tensor, Variable
  8. linux chmod -r,linux chmod -R 777 / 的危害
  9. hyper-v无法连接本地计算机,如何在Hyper-V虚拟机中访问本地和USB硬盘驱动器
  10. 南京信息工程大学eduroam使用方法
  11. android18lazuli,Free 18 Japan for you on AliExpress.
  12. 5分钟让你整明白美国金融危机爆发的原因
  13. Android必备回顾:4、单例模式深究
  14. 32位与64位到底什么区别?
  15. 上拉电阻、下拉电阻、耦合电容、退耦电容 总结
  16. ssm城市旅游景点信息交流平台的设计与实现毕业设计源码290915
  17. 在word中通过endnote打入文献标签
  18. 魏新 20190919-2 功能测试
  19. PLSQL 下载地址 Spring jar包
  20. VirtualBox3.2.8迷你使用手册

热门文章

  1. Android 仿微信语音聊天,flutter项目结构
  2. 【京东春招】别人的面经中记录的问题
  3. 论文笔记2:Combining Lexical, Syntactic, and Semantic Features with Maximum Entropy Models for Extracting
  4. 详解APP应用分发平台的榜单推荐和搜索排名规则
  5. 小米路由pro php,家庭实测 | 荣耀路由Pro2 可以吊打小米路由器吗?
  6. Show出你的高超技能 首届“中国高性能云计算创新大赛”要开赛啦!
  7. 计算机毕业设计Python+uniapp校园服务微信小程序(小程序+源码+LW)
  8. 一些学习,有趣,电影,资源网址
  9. 漫游计算机英语,计算机系统漫游
  10. SpringBoot Mybatis 读写分离配置(山东数漫江湖)