2190: [SDOI2008]仪仗队

Time Limit: 10 Sec  Memory Limit: 259 MB
Submit: 2689  Solved: 1713
[Submit][Status][Discuss]

Description

  作为体育委员,C君负责这次运动会仪仗队的训练。仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线所及的学生人数来判断队伍是否整齐(如下图)。       现在,C君希望你告诉他队伍整齐时能看到的学生人数。

Input

  共一个数N。

Output

  共一个数,即C君应看到的学生人数。

Sample Input

  4

Sample Output

  9

HINT

【数据规模和约定】   对于 100% 的数据,1 ≤ N ≤ 40000

Source

分析:

问题可以转化为求Σ(1<=i<=n) Σ(1<=j<=n) [gcd(i,j)==1]

显然如果存在一个点(i*d,j*d),那么它一定已经被(i,j)覆盖掉了...

根据Dirichlet卷积:e(i)=1 (if n=1)

0 (else)

e=μ×1,(f×g)(n)=Σ(d|n) f(d)*g(n/d)

我们可以把复杂度从n^2lgn化简为O(n)

Σ(1<=i<=n) Σ(1<=j<=n) [gcd(i,j)==1]

=Σ(1<=i<=n) Σ(1<=j<=n) e(gcd(i,j))

=Σ(1<=i<=n) Σ(1<=j<=n) Σ(d|gcd(i,j)) μ(d)

=Σ(1<=d<=n) μ(d)*(n/d)*(n/d)

代码:

 1 #include<algorithm>
 2 #include<iostream>
 3 #include<cstring>
 4 #include<cstdio>
 5 //by NeighThorn
 6 using namespace std;
 7 //大鹏一日同风起,扶摇直上九万里
 8
 9 const int maxn=40000+5;
10
11 int n,ans,cnt,miu[maxn],prime[maxn],vis[maxn];
12
13 signed main(void){
14     ans=cnt=0;
15     scanf("%d",&n);miu[1]=1;n--;
16     memset(vis,0,sizeof(vis));
17     for(int i=2;i<=n;i++){
18         if(!vis[i])
19             prime[++cnt]=i,miu[i]=-1;
20         for(int j=1;j<=cnt&&prime[j]*i<=n;j++){
21             vis[i*prime[j]]=1,miu[i*prime[j]]=-miu[i];
22             if(i%prime[j]==0){
23                 miu[i*prime[j]]=0;break;
24             }
25         }
26     }
27     for(int i=1;i<=n;i++)
28         ans+=miu[i]*(n/i)*(n/i);
29     printf("%d\n",ans+2);
30     return 0;
31 }

View Code


by NeighThorn

转载于:https://www.cnblogs.com/neighthorn/p/6214769.html

BZOJ 2190: [SDOI2008]仪仗队相关推荐

  1. BZOJ 2190: [SDOI2008]仪仗队( 欧拉函数 )

    假设C君为(0, 0), 则右上方为(n - 1, n - 1). 一个点(x, y) 能被看到的前提是gcd(x, y) = 1, 所以 answer = ∑ phi(i) * 2 + 2 - 1 ...

  2. bzoj 2190: [SDOI2008]仪仗队 线性欧拉函数

    2190: [SDOI2008]仪仗队 Time Limit: 10 Sec  Memory Limit: 259 MB [Submit][Status][Discuss] Description 作 ...

  3. 【BZOJ】2190 [SDOI2008]仪仗队

    [算法]欧拉函数 欧拉线性筛 [题解]将图从左至右,从下至上,分别标号0~n-1. 除了坐标0,一个点会被观察到当且仅当其坐标(i,j)的i与j互质,否则会被(i/d,j/d)挡住. 所以累加2~n- ...

  4. bzoj2190 [SDOI2008]仪仗队(欧拉函数)

    2190: [SDOI2008]仪仗队 Time Limit: 10 Sec  Memory Limit: 259 MB Submit: 3203  Solved: 2062 [Submit][Sta ...

  5. 「BZOJ2190」[SDOI2008] 仪仗队 - 欧拉函数

    ->点我进原题 [SDOI2008] 仪仗队 时空限制 1000ms / 128MB Description 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵, ...

  6. 「欧拉定理」[SDOI2008]仪仗队

    [SDOI2008]仪仗队 https://ac.nowcoder.com/acm/problem/20313 题目描述 作为体育委员,C君负责这次运动会仪仗队的训练. 仪仗队是由学生组成的N * N ...

  7. [SDOI2008]仪仗队

    洛谷:https://www.luogu.org/problemnew/show/P2158 bzoj:problem 2190 这题就是一道欧拉函数板子题. 对gcd稍微有点了解的人就会知道,在一个 ...

  8. BZOJ.3227.[SDOI2008]红黑树tree(树形DP 思路)

    BZOJ orz MilkyWay天天做sxt! 首先可以树形DP:\(f[i][j][0/1]\)表示\(i\)个点的子树中,黑高度为\(j\),根节点为红/黑节点的最小红节点数(最大同理). 转移 ...

  9. 洛谷P2158 [SDOI2008]仪仗队

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

最新文章

  1. Debian+Pure-ftpd+MySQL+User manager for PureFTPd
  2. 中山大学2020计算机学院复试分数线,2020中山大学研究生分数线汇总(含2016-2020历年复试)...
  3. OpenCV cv::reduce用法的实例(附完整代码)
  4. GL ERROR - after deleteUnusedTextures() glError (0x502)
  5. [java] 找出字符串中出现最多的字符和出现的次数
  6. 专栏订阅须知《必读》
  7. 七步从AngularJS菜鸟到专家(6):服务
  8. 在Oracle DG Standby库上启用flashback database功能
  9. 深度学习(4) - 神经网络和反向传播算法
  10. WPF 浏览文件夹,获取其路径
  11. U盘安装CentOS Linux图文详解
  12. 为了测试自动驾驶,福特将车带到了一个仿造城市
  13. PHP获取当月天数,获取当月的每天的开始和结束的时间戳,获取当月每号
  14. 在线索二叉树中找前驱后继
  15. linux内核寻址,深入理解Linux内核-内存寻址
  16. 第一天:Drools环境搭建配置
  17. HTTP请求/响应原理
  18. 浙江大学黄杨思博计算机学院,浙江大学2010-2011学年大学生学科竞赛获奖名单
  19. AirDisk存宝有没有迅雷下载功能?
  20. 计算机网络之验证性实验(tracert+ARP)

热门文章

  1. 私有链的特点简单介绍
  2. 如何解决JavaScript中的根查找
  3. 联想e580没有声音_现在你可以购买通过 Linux 认证的联想 ThinkPad 和 ThinkStation
  4. 零基础学Java程序有什么好的建议
  5. 分享五款java学习辅助工具,总有你用的上的~
  6. object.create()
  7. CSS面试复习(三):预处理器、工程化方案、三大框架中的CSS
  8. 你的机器学习模型为什么会出错?奉上四大原因解析及五条改进措施
  9. 《计算机组成原理》----2.6 浮点数
  10. 更改管理GPO的域控制器