屑题。

考虑对于每一个 \((x,y)\),将其与 \(((x+dx) \mod n,(y+dy) \mod n)\) 连边。

答案就是连通块中权值最大的那个。

考虑对于 \((x_1,y_1)\) 和 \((x_2,y_2)\) 两个点在同一个连通块中的条件。

条件就是同余方程 $x_1+x * dx \equiv x_2 \bmod n $ 和 $ y_1+y * dy \equiv y_2 \bmod n$ 的解是同一个。

考虑化简:

\[x \equiv \frac {x_2-x_1} {dx} \mod n
\]
\[x \equiv \frac {y_2-y_1} {dy} \mod n
\]

也就是:

\[\frac {x_2-x_1} {dx} \mod n \equiv \frac {y_2-y_1} {dy} \mod n
\]
\[\frac {y_1} {dy} -\frac {x_1} {dx} \equiv \frac {y_2} {dy} - \frac {x_2} {dx} \bmod n
\]

因为值域只有 \(O(n)\),开个桶统计一下数量就好了。

因为 \(\gcd(n,dx)=\gcd(n,dy)=1\),所以 \(dx\) 和 \(dy\) 的逆元可以使用 exgcd 计算。

#include<cstdio>
typedef unsigned uint;
const uint M=1e6;
uint n,m,id,dx,dy,x[M],y[M],sum[M];
void exgcd(const uint&a,const uint&b,uint&x,uint&y){
if(!b)return void((x=1,y=0));exgcd(b,a%b,y,x);y-=a/b*x;
}
inline uint Del(const uint&a,const uint&b){
return b>a?a-b+n:a-b;
}
signed main(){
register uint i,T,X,Y;
scanf("%u%u%u%u",&n,&m,&dx,&dy);
exgcd(dx,n,X,Y);dx=(X+n)%n;
exgcd(dy,n,X,Y);dy=(X+n)%n;
for(i=1;i<=m;++i){
scanf("%u%u",&X,&Y);
T=Del(1ull*X*dx%n,1ull*Y*dy%n);
if(!sum[T])x[T]=X,y[T]=Y;
if(++sum[T]>sum[id])id=T;
}
printf("%u %u",x[id],y[id]);
}

最新文章

  1. ASP.NET MVC Model验证(一)
  2. varnish 隐藏版本号
  3. Django实现表单验证、CSRF、cookie和session、缓存、数据库多表操作(双下划綫)
  4. IOS开发UI基础UISlide属性
  5. ural 1157. Young Tiler
  6. Linux find常见用法示例
  7. HTTP服务负载均衡总结
  8. chrome ipc 网摘
  9. LRU Cache 题解
  10. Python学习--21 电子邮件
  11. Winform控件输入的字母转换成大写
  12. Swing-JTable的渲染器与编辑器使用demo
  13. Shiro整合Spring
  14. [SCOI2010]生成字符串
  15. powershell_基础篇
  16. angularjs - 自定义指令(directive)
  17. Jsp处理过程and数据交互
  18. Hadoop2.6.5集群搭建
  19. Struts2 文件下载(中文处理方法以及控制下载文件名称和扩展名)
  20. Visual Studio在Win10中以管理员方式运行

热门文章

  1. Android数据库的事务
  2. 编译PHP扩展的方式
  3. NSLog输出格式及随机数
  4. iOS,开发准备之申请证书 ---by吴帮雷
  5. Redis 学习笔记(五)高可用之主从模式
  6. 鸟哥的Linux私房菜学习笔记——文件权限与目录配置
  7. Java产生指定范围内的随机日期
  8. springBoot工程解决跨域问题
  9. Dubbo扩展点应用之二负载均衡
  10. kubernetes集群之Pod说能不能让我体面的消亡呀?