前言:

更不好的阅读

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

题目:

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. gym102302E_Chi's performance

    题意 给n个二元组(v,p),要求排序使得v从小到大,而且总价值最大,价值定义为相邻两个v值不同的p值之差绝对值之和. 分析 in a row原来是相邻的意思. 对于每个相同v值的块来说,有用的数只有 ...

  2. 获得shell的几种姿势

    windows提权 1.通过sqlmap连接mysql获取shell (1)直接连接数据库 sqlmap.py -d "mysql://root:123456@127.0.0.1:3306/ ...

  3. API gateway 之 kong 安装 (二)

    一.系统环境 [root@kong ~]# service iptables status iptables: Firewall is not running. [root@kong ~]# gete ...

  4. git log 附加命令归纳

    git查看历史记录的时候查看每次提交的内容差异: git log -p git限制显示的条数 : git log -p -2 [-2] git简单显示每次提交做了哪些改动: git log --sta ...

  5. [2018-06-28] 创建第一个django项目

    1.创建一个名称为tmpl的项目 django-admin.py startproject tmpl 2.进入刚刚创建的tmpl目录 cd tmpl 3.创建一个名称为learn的应用 python ...

  6. [考试反思]0725NOIP模拟测试8

    看清你是个什么东西了么? 现在看清了么?rank#15?垃圾玩意? 你什么也不是.你没有骄傲,偷懒的资格! 节节败退,永无止境,你想掉到什么样子? 你还在为了成功拿到送分的T1而沾沾自喜?只不过是勉强 ...

  7. 「BZOJ1576」[Usaco2009 Jan] 安全路经Travel------------------------P2934 [USACO09JAN]安全出行Safe Travel

    原题地址 题目描述 Gremlins have infested the farm. These nasty, ugly fairy-like creatures thwart the cows as ...

  8. eclipse断点的使用---for循环举例

    在很多时候,我们在学习过程中,不知道代码具体的实现过程,很好奇这个变量的值怎么就发生的变化,用好断点的使用,帮助我们更好的理解. 例子:10以内的奇数之和 package day03; public ...

  9. 201871010114-李岩松《面向对象程序设计(java)》第四周学习总结

    项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p ...

  10. Kickstart Round H 2019 Problem B. Diagonal Puzzle

    有史以来打得最差的一次kickstart竟然发生在winter camp出结果前的最后一次ks = = 感觉自己的winter camp要凉了 究其原因,无非自己太眼高手低,好好做B, C的小数据,也 ...