Chladni Figure CodeForces - 1162D

Inaka has a disc, the circumference of which is nn units. The circumference is equally divided by nn points numbered clockwise from 11 to nn, such that points ii and i+1i+1 (1≤i<n1≤i<n) are adjacent, and so are points nn and 11.

There are mm straight segments on the disc, the endpoints of which are all among the aforementioned nn points.

Inaka wants to know if her image is rotationally symmetrical, i.e. if there is an integer kk (1≤k<n1≤k<n), such that if all segments are rotated clockwise around the center of the circle by kk units, the new image will be the same as the original one.

Input

The first line contains two space-separated integers nn and mm (2≤n≤1000002≤n≤100000, 1≤m≤2000001≤m≤200000) — the number of points and the number of segments, respectively.

The ii-th of the following mm lines contains two space-separated integers aiai and bibi (1≤ai,bi≤n1≤ai,bi≤n, ai≠biai≠bi) that describe a segment connecting points aiai and bibi.

It is guaranteed that no segments coincide.

Output

Output one line — "Yes" if the image is rotationally symmetrical, and "No" otherwise (both excluding quotation marks).

You can output each letter in any case (upper or lower).

Examples

Input
12 6
1 3
3 7
5 7
7 11
9 11
11 3
Output
Yes
Input
9 6
4 5
5 6
7 8
8 9
1 2
2 3
Output
Yes
Input
10 3
1 2
3 2
7 2
Output
No
Input
10 2
1 6
2 7
Output
Yes

Note

The first two examples are illustrated below. Both images become the same as their respective original ones after a clockwise rotation of 120120 degrees around the center.

题意:在圆上有n个点和m条线段,问圆上这个图形在通过旋转是否能找到一个位置与之前的图形完全重合。

解法:暴力就完事了,开vector数组来存储两个点之间是否相连

   如果要重合的话,那么旋转的长度必定要被N整除。//剪枝情况

   先比较对应位置的点具有关系的线段数量是否相等,然后将对应点所存储的线段长度转移到int类型的数组冲进行排序比较。在比较过程中如果出现不相等的情况即跳出当前循环。

在此说一句:金大佬太强了! 暴力真香~

 #include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
#include<map>
#include<string>
#include<set>
#include<stack>
#include<queue>
using namespace std;
const int maxn = ;
vector<int>v[];
int a[maxn],b[maxn];
int x,y,n,m; int sum(int x ,int y){//保证相关线段是最短的并且不是负数
if( x > y){
return min(x - y,y - x + n);
}else{
return min(y - x, x - y + n);
}
}
int main(){
scanf("%d %d",&n,&m);
for(int i = ; i <= m ; i++){
scanf("%d %d",&x,&y);
v[x].push_back(y);//v[x]存储以v[x]为起点的线段
v[y].push_back(x);
}
int ret = ;
for(int i = ; i < n ; i++){
if(n % i == ){
int flag = ;
for(int j = ; j <= n ; j++){
if(v[j].size() != v[(j + i - )%n + ].size()){//如果对应点所具有的线段的数量不相等,则图形不可能重合
flag = ;
break;
}
int l = v[j].size();//对应点线段数量相等之后,将对应点所存的线段提取到a[],b[]数组中,排序后进行比较
for(int k = ; k < l ; k++ ){
a[k] = sum(v[j][k],j);
b[k] = sum(v[(j + i - )%n + ][k],(j + i - )%n+);
}
sort(a,a+v[j].size());//将对应点中所有的线段进行排序
sort(b,b+v[j].size());
for(int k = ; k < l; k++){
if(a[k] != b[k]){
flag = ;
break;
}
}
}
if(flag){
printf("Yes\n");
ret = ;
break;
}
}
}
if(ret) printf("No\n");
return ;
}

AC代码

一个从很久以前就开始做的梦。

Chladni Figure CodeForces - 1162D (暴力,真香啊~)的更多相关文章

  1. 从Eclipse切换到IDEA工具,哎~真香!

    从Eclipse切换到IDEA工具,哎~真香!(图) 个人观点:IDEA工具用了就回不去了!!!对比很多人写,我就不赘述了.我在这里主要介绍一下IDEA工具的一些使用上的技巧,毕竟我开始学习java的 ...

  2. git 日常使用从入门到真香

    目录 git 日常使用从入门到真香 一.Git简介 二.Git常用命令 三.git操作流程 四.报错处理 git 日常使用从入门到真香 一.Git简介 Git是一个开源的分布式版本控制系统,可以有效. ...

  3. 真香系列之 Golang 升级

    Golang 以前的依赖管理一直饱受诟病,社区的方案也层出不穷,比如 vendor, glide, godep 等.之前的依赖管理一直是依靠 GOPATH 或者将依赖代码下载到本地,这种方式都有劣势. ...

  4. 真香的flex弹性布局

    如何实现一个左中右的布局 在flex出现之前 #box{ color: white; } #left{ float: left; width: 30%; background-color: red; ...

  5. VSCode六大通用插件真香合集

    目录 一.background:设置心水背景图 安利理由: 安装及设置步骤: 设置过程中使用的代码: 成果展示: 注意: 二.Material Theme(VSCode主题)+Material Ico ...

  6. 曾经你说chrome浏览器天下第一,现在你却说Microsoft edge真香!呸,渣男!!

    曾经你说chrome浏览器天下第一,现在你却说Microsoft edge真香!呸,渣男!! 一个月前我每天打卡搜索的时候,老是有微软新版浏览器的广告.我刚才是内心其实是抵触的,直到我发现了它的奇妙之 ...

  7. JavaFX桌面应用-MVC模式开发,“真香”

    使用mvc模块开发JavaFX桌面应用在JavaFX系列文章第一篇 JavaFX桌面应用开发-HelloWorld 已经提到过,这里单独整理使用mvc模式开发开发的流程. ~ JavaFX桌面应用开发 ...

  8. 国人开源了一款超好用的 Redis 客户端,真香!!

    大家都知道,Redis Desktop Manager 是一款非常好用的 Redis 可视化客户端工具,但可惜的是 v0.9.4 版本之后需要收费了: 这个工具不再免费提供安装包了,要对所有安装包收费 ...

  9. 我把公司 10 年老系统改造 Maven,真香!!

    公司有几个老古董项目,应该是 10 年前开发的了,有一个是 JSP + Servlet,有一个还用的 SSH 框架,打包用的 Ant,是有多老啊,我想在座的各位很多都没听过吧. 为了持续集成.持续部署 ...

随机推荐

  1. 164-PHP 文本替换函数str_replace(五)

    <?php $str='Hello world!'; //定义源字符串 $search=array('Hello','world','!'); //定义将被替换的字符数组 $replace=ar ...

  2. 面试题(9)之 leetcode-189

    题目描述 解法一: /** * @param {number[]} nums * @param {number} k * @return {void} Do not return anything, ...

  3. 实验吧-密码学-Fair-Play(Playfair解密)

    这个题是Playfair解密. Playfair解密算法首先将密钥填写在一个5*5的矩阵中(去Q留Z),矩阵中其它未用到的字母按顺序填在矩阵剩余位置中,根据替换矩阵由密文得到明文. 对密文解密规则如下 ...

  4. Django中出现no such table: django_session

    这个错误跟Session的机制有关, 既然要从Web服务器端来记录用户信息, 那么一定要有存放用户session id对应信息的地方才行. 所以,我们需要创建django_session表. Djan ...

  5. 代理模式(Proxy Pattern)C#版本的

    引用地址 https://www.cnblogs.com/zhili/p/ProxyPattern.html --------------------------------------------- ...

  6. 启用sql日志

    SHOW VARIABLES LIKE "general_log%"; -- 查询是否启用日志 SET GLOBAL general_log = 'ON';  -- 设置启用 SE ...

  7. sprngmvc+restFul 请求报错:404

    服务端代码 control类 @RequestMapping(value="getUser",method = RequestMethod.POST) @ResponseBody ...

  8. Hbase PleaseHoldException错误

    PleaseHoldException ① 原因:(由于正在操作Hbase时,电脑突然关机,未正常关闭hbase,故导致shell无法正常显示)如下图: ②解决过程: 先在网上百度到了使用https: ...

  9. int *const 与const int *问题

    自己一直就不太清楚int *const与const int*之间的差别,总是弄混,今天势必拿一个程序验证一下. 一个指针是有两个属性的,一个是它指向的地方,一个是它指向地方上的内容.两者的差别也在此. ...

  10. SourceTree - 对Git的使用

    SourceTree - 对Git的使用 一 .SourceTree简介 SourceTree 是 Windows 和Mac OS X 下免费的 Git 和 Hg 客户端,拥有可视化界面,容易上手操作 ...