CF1028F. Make Symmetrical

题目描述

Solution

结论1:两个点(x1,y1),(x2,y2)(x_1,y_1),(x_2,y_2)(x1​,y1​),(x2​,y2​)关于(0,0),(x3,y3)(0,0),(x_3,y_3)(0,0),(x3​,y3​)对称的必要条件为(x1,y1)(x_1,y_1)(x1​,y1​)和(x2,y2)(x_2,y_2)(x2​,y2​)在同一个以(0,0)(0,0)(0,0)为圆心的圆上,即x12+y12=x22+y22x_1^2+y_1^2=x_2^2+y_2^2x12​+y12​=x22​+y22​。

结论2:x2+y2=N(n≤2∗1129042)x^2+y^2=N\;\;\;(n\leq2*112904^2)x2+y2=N(n≤2∗1129042)的解数MMM小于等于144144144。

因此我们每次添加或删除点时,只会影响到在同一个圆上的点,而圆上最多有144144144个整点,暴力枚举这些圆上的点分别更新对称轴的值即可。

时间复杂度O(Mq)O(Mq)O(Mq)。

Code

#include <vector>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <queue>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <cctype>
#include <string>
#include <cstring>
#include <ctime>
#include <cassert>
#include <string.h>
//#include <unordered_set>
//#include <unordered_map>
//#include <bits/stdc++.h>#define MP(A,B) make_pair(A,B)
#define PB(A) push_back(A)
#define SIZE(A) ((int)A.size())
#define LEN(A) ((int)A.length())
#define FOR(i,a,b) for(int i=(a);i<(b);++i)
#define fi first
#define se secondusing namespace std;template<typename T>inline bool upmin(T &x,T y) { return y<x?x=y,1:0; }
template<typename T>inline bool upmax(T &x,T y) { return x<y?x=y,1:0; }typedef long long ll;
typedef unsigned long long ull;
typedef long double lod;
typedef pair<int,int> PR;
typedef vector<int> VI;const lod eps=1e-11;
const lod pi=acos(-1);
const int oo=1<<30;
const ll loo=1ll<<62;
const int mods=998244353;
const int MAXN=600005;
const int INF=0x3f3f3f3f;//1061109567
/*--------------------------------------------------------------------*/
inline int read()
{int f=1,x=0; char c=getchar();while (c<'0'||c>'9') { if (c=='-') f=-1; c=getchar(); }while (c>='0'&&c<='9') { x=(x<<3)+(x<<1)+(c^48); c=getchar(); }return x*f;
}
int num=0,cnt=0;
map<ll,int> Map;
map<PR,int> Ans;
set<PR> Set[MAXN];
int gcd(int x,int y) { return y==0?x:gcd(y,x%y); }
void add(int x,int y,int c)
{int g=gcd(x,y);x/=g,y/=g;Ans[MP(x,y)]+=c;
}
int query(int x,int y)
{int g=gcd(x,y);x/=g,y/=g;return Ans[MP(x,y)];
}
int main()
{int Case=read();while (Case--){ll opt=read(),x=read(),y=read();if (opt==1){ll z=x*x+y*y;if (!Map.count(z)) Map[z]=++cnt;z=Map[z];  for (auto V:Set[z]) add(V.fi+x,V.se+y,2);Set[z].insert(MP(x,y)),add(x,y,1),num++;}else if (opt==2){ll z=x*x+y*y;if (!Map.count(z)) Map[z]=++cnt;z=Map[z];Set[z].erase(Set[z].find(MP(x,y))),add(x,y,-1),num--;for (auto V:Set[z]) add(V.fi+x,V.se+y,-2);}else printf("%d\n",num-query(x,y));}return 0;
}

CF1028F. Make Symmetrical相关推荐

  1. 第一篇(上):对称分量分解(Symmetrical Component Decomposition)序列变换 (Sequence Transformation)零序 正序 负序 分解

    写在前面:看了很多次dq变换,αβ变换但是由于不能根本上理解,所以总是记不住公式.这次看了很久自认为比较理解了,所以把它作为我的第一篇Blog. 这里的两类变换全部仅以电力系统中的电气信号(电压或电流 ...

  2. 【GlobalMapper精品教程】048:空间操作(5)——对称差集(Symmetrical Difference)

    "空间覆盖操作"比较两个图层中的要素,并根据该操作在输出图层中将其组合或剪切为新的几何图形.此工具包括"交集"."并集"."差异& ...

  3. Django框架(十)--常用字段、参数、元信息、多对多关联关系

    一.ORM字段 # AutoField() int自增列,必须填入参数 primary_key=True.当model中如果没有自增列,则自动会创建一个列名为id的列# IntegerField() ...

  4. Django --ORM常用的字段和参数 多对多创建形式

    1 ORM字段 AutoField int自增列,必须填入参数 primary_key=True.当model中如果没有自增列,则自动会创建一个列名为id的列. IntegerField 一个整数类型 ...

  5. ORM操作models一对多、多对多关系

    ORM操作 单表.一对多表操作 1 from django.db import models 2 3 4 class UserGroup(models.Model): 5 title = models ...

  6. Facial keypoints detection Kaggle 竞赛系列

    3.2# Facial keypoints detection 作者:Stu. Rui QQ: 1026163725 原文链接:http://blog.csdn.net/i_love_home/art ...

  7. 【CV知识学习】early stop、regularation、fine-tuning and some other trick to be known

    深度学习有不少的trick,而且这些trick有时还挺管用的,所以,了解一些trick还是必要的.上篇说的normalization.initialization就是trick的一种,下面再总结一下自 ...

  8. 中科院自动化所17篇CVPR 2022 论文新作速览!

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:中科院自动化 ...

  9. 2007年上半年 网络工程师 上下午试卷【附带答案】

    2004-2017年真题+答案[0.23RMB]自取 2007年上半年 网络工程师 上午试卷 ● (1) 不属于计算机控制器中的部件. (1)A.指令寄存器IR              B.程序计数 ...

最新文章

  1. ionic4中使用Swiper触屏滑动---心酸路
  2. 数据库------事务
  3. Thinking in Java 源代码 source code 在IDEA上运行
  4. 菜鸟超级进口大仓618首度亮相!跨境商品也能当日次日达
  5. ViewState的原理,应用场合,注意事项
  6. 哨兵2号波段_分布式框架之高性能:Redis哨兵模式
  7. MySQL group_concat函数使用详解
  8. java 开发微信中回调验证一直提示 解密失败处理(Java)
  9. python中bar是什么意思_Python中下划线的变量是什么个意思
  10. Ros使用自定义数据通讯无法收到消息的分析和解决
  11. MySQL--启动和关闭MySQL服务
  12. 为了USB3,吾还是换了电脑
  13. linux下载文件命令
  14. DCDC中自举电容的原理小结(一)
  15. 铁路cj继电器_铁路信号继电器简介
  16. excel 计算复合增长率
  17. 分享 23 个在线学习 JavaScript 的网站
  18. 运行不了cracker.jar?激活MyEclipse
  19. 平台开发——skynet——⑤网关服务gate
  20. 互联网查询信用报告,为什么提示“无法进行注册”?

热门文章

  1. 教师节,老师们最大的愿望竟然是。。 | 今日最佳
  2. python 逆向生成正则表达式_用Python中的正则表达式生成lis
  3. java赋值语句_java并发编程之原子性问题
  4. 在linux中查找运行程序句柄,如何查找我的进程在Linux中打开的文件句柄?
  5. oracle 产看执行计划_ODBA 技能SPM计划
  6. 华为机试支持python吗_4.10华为暑期实习生机试题目,python解答
  7. Java程序设计当中包的使用_【学习笔记】 唐大仕—Java程序设计 第4讲 类、包和接口之4.2 类的继承...
  8. java8 垃圾 不同_【不同的Java垃圾回收器的比较】
  9. 未发现android设备,Brother iPrintScan 应用程序上出现错误信息“未发现支持设备”(Android™ 智能手机)。...
  10. php myadmin怎么用,关于apachemysqlphpmyadmin的安装与配置