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添加快捷方式(Shortcut)到手机桌面
Android添加快捷方式(Short)到手机桌面 权限 要在手机桌面上添加快捷方式,首先需要在manifest中添加权限. <!-- 添加快捷方式 --> <uses-permis ...
- .frame类库简单介绍与使用
.a静态库是Unix推出的,几乎所有平台都可以使用: .framework是Apple推出的,是对.a静态库的封装,方便使用. 1.新建framework类库项目 2.生成的类库中,自定义的源头文件需 ...
- 【CoreData】分页查询和模糊查询
在CoreData实际使用中,分页查询和模糊查询是必不可少的,接下来演示一下: 首先 // 1.创建模型文件 (相当于一个数据库里的表) // New File ———— CoreData ———— ...
- Android 内容观察者的原理
拦截短信,比如当发短信的时候,就把短信读取出来,当系统的短信发生变化的时候,大叫一声,把数据发送到公共的消息邮箱里面,我们的应用通过内容观察者观察公共的消息邮箱 获取ContentResolver对象 ...
- iOS coreData问题
iOS常见错误-CoreData: Cannot load NSManagedObjectModel.nil is an illegal URL parameter 这是因为在工程中CoreData的 ...
- C阶段【01】 - C基础
一.进制 进位方法:逢几进一(也就是几进制) 举例:十进制 12 : 二进制 0b(计算机前缀) 0b1011 : 八进制 0 073 :十六进制 0x 0xABCDEF 十进 ...
- Hierarchyid 常用操作
---------内置函数------------ select hierarchyid::GetRoot()--0x select hierarchyid::Parse('/1/1/') - ...
- js 变量与值 连写
window.location.href="index.php?app=memberpmrecord&act=get_download&bname="+busine ...
- 基于Attribute的Web API路由设置
路由对于MVC应用程序来说都是至关重要的一个部门,不管是asp.net mvc或者Ruby on Rails(当然还有其它的,我只熟悉这两个:) ) asp.net mvc自带的路由配置是在Glob ...
- Bootstrap弹出框(modal)垂直居中
最近在做一个eit项目,由于此项目里面一些框架要遵循nttdata的一些规则,故用到了Bootstrap这个东东,第一次碰到这个东东,有很大抵触,觉得不好,但用起来我觉得和别的弹出框真没什么两样.废话 ...