要点

  • 外层暴力枚举转的“角度”,会发现肯定是n的约数
  • 对于m条线段想判定当前的“角度”是否ok,每个线段只要管它自己的下一个即可,不必画个圈遍历一遍
  • 之后将本来的线段集合和当前需要的线段集合比较,如果相同则该图形旋转对称
  • 一个小优化是只需要枚举n的质约数,质约数d含义为把圆划分成d份。这样划分成6份根本不必要枚举,如果6份行的话,2份的时候就跑出去了;如果6份不行的话……所以就不用枚举它呀~
const int maxn = 1e5 + 5;
int n, m;
vector<pii> p;
vector<int> d; void pre(int n) {
for (int i = 2; i <= n; i++) {
if (n % i) continue;
d.emplace_back(i);
while (n % i == 0) n /= i;
}
} int main() {
read(n), read(m);
pre(n);
for (int i = 1, a, b; i <= m; i++) {
read(a), read(b);
a--, b--;
if (a > b) swap(a, b);
p.emplace_back(a, b);
}
sort(All(p)); for (int x : d) {
int k = n / x;
vector<pii> t;
rep(i, 0, m - 1) {
int a = p[i].first, b = p[i].second;
a = (a + k) % n, b = (b + k) % n;
if (a > b) swap(a, b);
t.emplace_back(a, b);
}
sort(All(t));
if (p == t) {
puts("Yes"); return 0;
}
}
puts("No"); return 0;
}

最新文章

  1. Web 前端开发精华文章推荐(jQuery、HTML5、CSS3)【系列十二】
  2. 如何理解javascript closure ?
  3. Java byte位移操作 注意事项
  4. map的使用
  5. 深入浅出话VC++(3)——VC++实现绘图操作
  6. AJAX— 异步传输
  7. [CODEVS1294]全排列
  8. io开发之C语言第二天
  9. operator模块
  10. charles抓取https请求包
  11. WPF获取原始控件样式。
  12. Asp.Net Core 实现服务的批量注册注入
  13. Classloader精简重点
  14. C语言异常处理之 setjmp()和longjmp()
  15. SharePoint 读取内容的插件之SharepointPlus
  16. 复习-css列表和表格相关属性
  17. Arduino 数字函数总结
  18. CentOS6.x安装RabbitMQ
  19. Maven安装以及环境配置(Windows)
  20. python的常用库及文档使用

热门文章

  1. 树套树Day1线段树套平衡树bzoj3196
  2. MVC系统过滤器(局部缓存,局部动态)
  3. saltstack集中化管理平台
  4. 阻止文件不被上传到iCloud
  5. JSP介绍(4)--- JSP 过滤器
  6. 7.JasperReports学习笔记7-applet打印
  7. C语言32关键字
  8. C++二叉树结构的建立和操作
  9. C++中const型数据的小结
  10. sort命令实战