BZOJ 2190: [SDOI2008]仪仗队
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
Sample Output
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]仪仗队相关推荐
- BZOJ 2190: [SDOI2008]仪仗队( 欧拉函数 )
假设C君为(0, 0), 则右上方为(n - 1, n - 1). 一个点(x, y) 能被看到的前提是gcd(x, y) = 1, 所以 answer = ∑ phi(i) * 2 + 2 - 1 ...
- bzoj 2190: [SDOI2008]仪仗队 线性欧拉函数
2190: [SDOI2008]仪仗队 Time Limit: 10 Sec Memory Limit: 259 MB [Submit][Status][Discuss] Description 作 ...
- 【BZOJ】2190 [SDOI2008]仪仗队
[算法]欧拉函数 欧拉线性筛 [题解]将图从左至右,从下至上,分别标号0~n-1. 除了坐标0,一个点会被观察到当且仅当其坐标(i,j)的i与j互质,否则会被(i/d,j/d)挡住. 所以累加2~n- ...
- bzoj2190 [SDOI2008]仪仗队(欧拉函数)
2190: [SDOI2008]仪仗队 Time Limit: 10 Sec Memory Limit: 259 MB Submit: 3203 Solved: 2062 [Submit][Sta ...
- 「BZOJ2190」[SDOI2008] 仪仗队 - 欧拉函数
->点我进原题 [SDOI2008] 仪仗队 时空限制 1000ms / 128MB Description 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵, ...
- 「欧拉定理」[SDOI2008]仪仗队
[SDOI2008]仪仗队 https://ac.nowcoder.com/acm/problem/20313 题目描述 作为体育委员,C君负责这次运动会仪仗队的训练. 仪仗队是由学生组成的N * N ...
- [SDOI2008]仪仗队
洛谷:https://www.luogu.org/problemnew/show/P2158 bzoj:problem 2190 这题就是一道欧拉函数板子题. 对gcd稍微有点了解的人就会知道,在一个 ...
- BZOJ.3227.[SDOI2008]红黑树tree(树形DP 思路)
BZOJ orz MilkyWay天天做sxt! 首先可以树形DP:\(f[i][j][0/1]\)表示\(i\)个点的子树中,黑高度为\(j\),根节点为红/黑节点的最小红节点数(最大同理). 转移 ...
- 洛谷P2158 [SDOI2008]仪仗队
题目描述 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线所及的学生人数来判断队伍是否整齐(如下图 ...
最新文章
- Debian+Pure-ftpd+MySQL+User manager for PureFTPd
- 中山大学2020计算机学院复试分数线,2020中山大学研究生分数线汇总(含2016-2020历年复试)...
- OpenCV cv::reduce用法的实例(附完整代码)
- GL ERROR - after deleteUnusedTextures() glError (0x502)
- [java] 找出字符串中出现最多的字符和出现的次数
- 专栏订阅须知《必读》
- 七步从AngularJS菜鸟到专家(6):服务
- 在Oracle DG Standby库上启用flashback database功能
- 深度学习(4) - 神经网络和反向传播算法
- WPF 浏览文件夹,获取其路径
- U盘安装CentOS Linux图文详解
- 为了测试自动驾驶,福特将车带到了一个仿造城市
- PHP获取当月天数,获取当月的每天的开始和结束的时间戳,获取当月每号
- 在线索二叉树中找前驱后继
- linux内核寻址,深入理解Linux内核-内存寻址
- 第一天:Drools环境搭建配置
- HTTP请求/响应原理
- 浙江大学黄杨思博计算机学院,浙江大学2010-2011学年大学生学科竞赛获奖名单
- AirDisk存宝有没有迅雷下载功能?
- 计算机网络之验证性实验(tracert+ARP)