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)
代码:
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
//by NeighThorn
using namespace std;
//大鹏一日同风起,扶摇直上九万里 const int maxn=+; int n,ans,cnt,miu[maxn],prime[maxn],vis[maxn]; signed main(void){
ans=cnt=;
scanf("%d",&n);miu[]=;n--;
memset(vis,,sizeof(vis));
for(int i=;i<=n;i++){
if(!vis[i])
prime[++cnt]=i,miu[i]=-;
for(int j=;j<=cnt&&prime[j]*i<=n;j++){
vis[i*prime[j]]=,miu[i*prime[j]]=-miu[i];
if(i%prime[j]==){
miu[i*prime[j]]=;break;
}
}
}
for(int i=;i<=n;i++)
ans+=miu[i]*(n/i)*(n/i);
printf("%d\n",ans+);
return ;
}
by NeighThorn
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]仪仗队(欧拉函数)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2190 [题意] n*n的正方形,在(0,0)格点可以看到的格子数目. [思路] 预处理 ...
- 【刷题】BZOJ 2190 [SDOI2008]仪仗队
Description 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线所及的学生人数来判断队伍是 ...
- [bzoj 2190][SDOI2008]仪仗队(线性筛欧拉函数)
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2190 分析:就是要线性筛出欧拉函数... 直接贴代码了: memset(ans,,sizeof ...
- BZOJ 2190 [SDOI2008]仪仗队 ——Dirichlet积
[题目分析] 考虑斜率为0和斜率不存在的两条线上只能看到3人. 其余的人能被看见,当且仅当gcd(x,y)=1 ,然后拿卷积算一算 发现就是欧拉函数的前缀和的二倍. 注意2的情况要特判. [代码] # ...
- BZOJ——2190: [SDOI2008]仪仗队
思路: 我们将其所在的位置设为(0,0),那么如果存在一个点(x,y),且有gcd(x,y)=k(k!=1),那么点(x/k,y/k)一定会将(x,y)挡住.而如果k=1,那么点(x,y)就一定会被看 ...
- 2190: [SDOI2008]仪仗队(欧拉函数)
2190: [SDOI2008]仪仗队 Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 3235 Solved: 2089 Description 作 ...
- 【BZOJ】2190 [SDOI2008]仪仗队(欧拉函数)
Description 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线所及的学生人数来判断队伍是 ...
随机推荐
- android ndk开发(二)实现一个官方demo
实现了一个官方的demo:bitmap-plasma(水波纹) 源代码就在samples文件夹下,可以自己去找. 界面: 建立项目的步骤和配置环境不明白的可以去看:http://www.cnblogs ...
- UITableViewController和延时执行、自定义控件
1.在UITableViewController中,self.view就是self.tableView, 两个对象的指针地址是一样的 2.自定义类继承UITableViewCell, 重写父类方法 / ...
- C语言实现泛型编程
泛型编程让你编写完全一般化并可重复使用的算法,其效率与针对某特定数据类型而设计的算法相同.在C语言中,可以通过一些手段实现这样的泛型编程.这里介绍一种方法——通过无类型指针void* 看下面的一个实现 ...
- join()方法
1.现在有T1.T2.T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行? package com.mianshi.easy; class JoinDemo implements ...
- Learn how to Use UIPageViewController in iOS
下面学习内容来自国外的IOS学习网站:The AppGuruz: UIPageViewController in iOS 也许需要FQ哦 认真做一遍上面入门UIPageController的教程,然 ...
- 通过系统架构漏洞获取系统VIP资源
首先说我的构思: 一本小说,有很多集,每一集请求下载都会生成一个k的json,例如: 有了这个k我们就可以定位到这一集具体的位置,这本小说是固定的id,每一集的K找到了,剩下的不就简单了. 再通过抓包 ...
- CSS行高——line-height
学习资料 : http://www.cnblogs.com/dolphinX/p/3236686.html
- get和post的区别与乱码问题解决
★ get和post的区别: 1.get请求通过url地址发送请求参数,可以在地址栏上直接显示 2.post请求通过请求体发送请求参数,不会再地址栏上显示 3.get在地址栏显 ...
- spring的定时任务配置
本文来源于:http://myspace1916.iteye.com/blog/1570707 也可参考:http://www.oschina.net/question/8676_9032 (个人只是 ...
- bootstrap的编辑标记 angularjs input 弹出框
.html <div> {{instance.description}} <span class="glyphicon glyphicon-pencil btn-link& ...