前言:

更不好的阅读

这篇题解真的写了很久,改了又改才成为这样的,我不会写题解但我正在努力去学,求通过,求赞。。。

题目:

BZOJ

Luogu

思路:

像我这样的数论菜鸡就不能一秒切这题,怎么办呢?

拿个栗子手玩一下:

假设\(n=6\),我们看看主人公可以看到的人的位置和他自己的位置有什么关系

随便选几个点,\((1,4),(2,6),(4,4)\),主人公在\((6,1)\)

经过大于几分钟的时间,我发现了一个性质

\[|~x-x'~|\text{和}|~y-y'~|\text{互质时就能看到(设(x,y)表示主人公位置,(x',y')表示某同学位置)}\]

这样我们就可以枚举\(x-x'\)的值和\(y-y'\)的值了, 但是时间爆炸:

怎么办呢?

\(1 \leq N \leq 40000\)这里的话我们原来的\(O(n^2)\)是肯定过不了的,有没有比较快的做法???

废话肯定有啊不然这题出出来了

对噢,我们可以用欧拉函数来做呀!

下面有一篇写得比较好的洛谷日报链接,请先阅读完本篇题解,感兴趣的再点

點❤開❤有❤驚❤喜

再给你们看一个东西:

它逆时针旋转45°后左右对称了!

也就是说它拥有对称性。

先放着不管(那你为什么现在放粗来呀

上面说了,如果要看得到那么要满足\(gcd(|~x-x'~|~,~|~y-y'~|) =1\)。

我们假设\(|~x-x'~|~<~|~y-y'~|\)。

如果我们固定了\(|~y-y'~|\)要找满足条件的\(|~x-x'~|\)。那么这样一来答案不就是\(3+2*\sum_{i=2}^{n-1}\varphi (i)\)了?(这里乘\(2\)是因为我们只做了当\(|~x-x'~|~<~|~y-y'~|\)的部分,又因上文写道这满足对称性所以我们可以乘\(2\)。加\(3\)是因为我们特判了\((0,1),(1, 0),(1,1)\)这\(3\)点。)

对于\(\varphi\)函数,\(\varphi (i)\)表示小于i,且和i互质的数的个数好了,你看完这句你就可以点开上面那条链接了

我们可以用一个\(O(n~log~n)\)的埃氏筛去预处理\(\varphi\)函数(见代码部分),或者使用一个\(O(n)\)的来预处理(请自行翻阅资料)。

代码:

关于埃氏筛\(\varphi\)函数:

主程序(哎呀,\(\texttt{int main()}\)没截到QAQ):

❤感谢收看❤

【BZOJ2190】【Luogu P2158】 [SDOI2008]仪仗队的更多相关文章

  1. luogu P2158 [SDOI2008]仪仗队

    题目描述 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线所及的学生人数来判断队伍是否整齐(如下图 ...

  2. Luogu P2158 [SDOI2008]仪仗队【数学/欧拉函数】by cellur925

    题目描述 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线所及的学生人数来判断队伍是否整齐(如下图 ...

  3. luogu P2158 [SDOI2008]仪仗队 (欧拉函数)

    欧拉函数裸题 可惜我太久没做题忘了欧拉函数是什么了... 注意判断一下n = 1的情况就好了 #include <cstdio> using namespace std; ; typede ...

  4. P2158 [SDOI2008]仪仗队

    P2158 [SDOI2008]仪仗队图是关于y=x对称的,横纵坐标一定是互质的否则在之前就被扫过了,所以就可以用欧拉函数再*2就完了. #include<iostream> #inclu ...

  5. 洛谷 P2158 [SDOI2008]仪仗队 解题报告

    P2158 [SDOI2008]仪仗队 题目描述 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线 ...

  6. P2158 [SDOI2008]仪仗队 && 欧拉函数

    P2158 [SDOI2008]仪仗队 题目描述 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线 ...

  7. 洛谷——P2158 [SDOI2008]仪仗队

    P2158 [SDOI2008]仪仗队 找规律大水题嘛,如果你做过P1170 兔八哥与猎人 这题得到的规律是$a,b,c,d$,若$gcd(a-b,c-d)==1$ 那么$a,b$就能看到$c,d$ ...

  8. P1582 倒水,P2158 [SDOI2008]仪仗队——数学,二进制

    有n个瓶子,里面都有一升水,但是只想保留k个瓶子,只能两个瓶子里面的水体积相等时才能倒在一个瓶子里:不能丢弃有水的瓶子:瓶子容量无限: 问需要购买几个额外的瓶子才能满足条件: 因为每个瓶子一开始只有一 ...

  9. 洛谷 P2158 [SDOI2008]仪仗队 && 洛谷 P1447 [NOI2010]能量采集

    https://www.luogu.org/problemnew/show/P2158 以人所在位置为(0,0)建立坐标系, 显然除了(0,1)和(1,0)外,可以只在坐标(x,y)的gcd(x,y) ...

  10. 洛谷P2158 [SDOI2008]仪仗队 欧拉函数的应用

    https://www.luogu.org/problem/P2158 #include<bits/stdc++.h> #define int long long using namesp ...

随机推荐

  1. C++学习笔记5_智能指针

    1. 一般的指针int main(void){ int *p=new int; *p=20; delete p; return 0;}智能指针能自动回收#include<memory> 记 ...

  2. OpenCV图像处理以及人脸识别

    OpenCV基础 OpenCV是一个开源的计算机视觉库.提供了很多图像处理常用的工具 批注:本文所有图片数据都在我的GitHub仓库 读取图片并显示 import numpy as np import ...

  3. Pandas分类(category)数据处理

    分类(Category)数据:直白来说,就是取值为有限的,或者说是固定数量的可能值.例如:性别.血型 指定数据类型构建分类数据 dtype="category" 以血型为例,创建一 ...

  4. Redis持久化--Redis宕机或者出现意外删库导致数据丢失--解决方案

    echo编辑整理,欢迎转载,转载请声明文章来源.欢迎添加echo微信(微信号:t2421499075)交流学习. 百战不败,依不自称常胜,百败不颓,依能奋力前行.--这才是真正的堪称强大!!! Red ...

  5. 入门react

    前言:今天翻到了好久之前学习react时的笔记,拿出来记录一下以免忘掉,里面主要是记录了安装环境,创建项目,启动项目,jsx,组件介绍,组件通信,多层嵌套,路由搭建,路由传参,redux.记录的比较浅 ...

  6. 安装Windows和Ubuntu双系统--Ubuntu安装过程识别不了硬盘

    Linux识别不了固态硬盘 安装过程: 自己本身的是Windows 10,一块125g 固态 ,一块1T的机械硬盘. 通过rufus 制作ubuntu的启动盘 在BIOS中关闭电脑的安全启动选项,并且 ...

  7. Python3.x安装教程及环境变量配置

    python3.x安装 1.直接到官网https://www.python.org/下载,安装就可以了. 2.安装比较简单,点exe文件一直下一步就可以了(注意:安装的时候有个选择是否添加环境变量,这 ...

  8. Linux 学习(1) | 学习方向导图

    方向导图 文件系统导图  内核导图

  9. request爬虫通用的小技巧

    嵩天老师一直强调的通用代码框架,这个框架可以用在很多爬虫中用来获取HTML文本,并且它通过response.raise_for_status()方法判断返回的状态码是不是200,如果不是,就会引发HT ...

  10. jquery serialize()函数用法

    jquery serialize()函数用法<pre><html><head><script type="text/javascript" ...