【BZOJ】【2190】【SDOI2008】仪仗队
欧拉函数/莫比乌斯函数
Orz iwtwiioi
这个嘛……很明显在同一条线上的两个点一定是满足 x1*k=x2,y1*k=y2,(好吧这个表示方式有点傻逼,懂得就好了)那么这条线上的点只有第一个会被看到,即x,y互质的那一个点(如果gcd(x,y)==k>1那么肯定在它前面还有点(x/k,y/k) )
但是马上你就会指着鼻子骂我说这特么不是胡扯么……(2,1) 和 (4,2)明明都能被看到!那是因为这里的“坐标原点”是(1,1)啊……所以坐标都减个1就好了→_→
所以就是求 ………………看iwtwiioi的博客去吧- -b 我不会用LeTeX……
嗯就是求:(原谅我截图跑……iwtwiioi实在太神了)
aaarticlea/png;base64,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" alt="" />
这样一个东西……就是对于每个x,求一共有多少个y与它互质,这不就是欧拉函数的定义么→_→
所以可以写成
aaarticlea/png;base64,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" alt="" />【然后再乘二(x和y交换算两组)】
最后还有一点细节要注意:(1,1)这个点统计了两次,(1,0) 和 (0,1)这两个点没有算。
还有一种姿势,如果是用莫比乌斯函数写的话,第一个和式还可以写成:【Orz lqybzx】
sigma{ mu[i]*(n/i)*(n/i) } (不要吐槽我的语法……)
我的代码:(线性筛模板参见《线性筛法与积性函数》——贾志鹏)
/**************************************************************
Problem: 2190
User: Tunix
Language: C++
Result: Accepted
Time:24 ms
Memory:1624 kb
****************************************************************/ //BZOJ 2190
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#define rep(i,n) for(int i=0;i<n;++i)
#define F(i,j,n) for(int i=j;i<=n;++i)
#define D(i,j,n) for(int i=j;i>=n;--i)
using namespace std;
int getint(){
int v=,sign=; char ch=getchar();
while(ch<''||ch>''){ if (ch=='-') sign=-; ch=getchar();}
while(ch>=''&&ch<=''){ v=v*+ch-''; ch=getchar();}
return v*=sign;
}
/******************tamplate*********************/
const int N=;
int phi[N],prime[N];
bool check[N];
void getphi(int n){
memset(check,,sizeof check);
phi[]=;
int tot=;
F(i,,n){
if(!check[i]){
prime[tot++]=i;
phi[i]=i-;
}
rep(j,n){
if(i*prime[j]>n) break;
check[i*prime[j]]=;
if(i % prime[j]==){
phi[i*prime[j]]=phi[i]*prime[j];
break;
}
else phi[i*prime[j]]=phi[i]*(prime[j]-);
}
}
}
int main(){
int n=getint(),ans=;
getphi(n);
F(i,,n-)
ans+=phi[i];
ans=ans*+;
printf("%d\n",ans);
return ;
}
欧拉函数
/**************************************************************
Problem: 2190
User: Tunix
Language: C++
Result: Accepted
Time:28 ms
Memory:1624 kb
****************************************************************/ //BZOJ 2190
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#define rep(i,n) for(int i=0;i<n;++i)
#define F(i,j,n) for(int i=j;i<=n;++i)
#define D(i,j,n) for(int i=j;i>=n;--i)
using namespace std;
int getint(){
int v=,sign=; char ch=getchar();
while(!isdigit(ch)) {if(ch=='-') sign=-; ch=getchar();}
while(isdigit(ch)) {v=v*+ch-''; ch=getchar();}
return v*sign;
}
/*******************template********************/
const int N=;
int prime[N],mu[N];
bool check[N];
void getmu(int n){
memset(check,,sizeof check);
mu[]=;
int tot=;
F(i,,n){
if(!check[i]){
prime[tot++]=i;
mu[i]=-;
}
rep(j,tot){
if(i*prime[j]>n) break;
check[i*prime[j]]=true;
if(i%prime[j]==){
mu[i*prime[j]]=;
break;
}
else mu[i*prime[j]]=-mu[i];
}
}
}
int main(){
int n,ans=;
n=getint();
n--;
getmu(n);
F(i,,n) ans+=mu[i]*(n/i)*(n/i);
ans=ans+;
printf("%d\n",ans);
return ;
}
莫比乌斯函数
【BZOJ】【2190】【SDOI2008】仪仗队的更多相关文章
- BZOJ 2190: [SDOI2008]仪仗队
2190: [SDOI2008]仪仗队 Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 2689 Solved: 1713[Submit][Statu ...
- 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君会跟在仪仗队的左后方,根据其视线所及的学生人数来判断队伍是 ...
随机推荐
- Objective-C排序算法实现
算法作为程序猿的一种基本技能,对我来说却一直是一个硬伤.毕竟平时的工作接触算法的地方很少,大部分时间都是在搭建UI,写业务逻辑,写网络请求.然而在面试当中,算法往往又是考察的重点. 也许你会说这些平时 ...
- C# 中 datagridview 绑定BindingList类型和更新
C# 中的datagridview是一个非常有用且强大的控件,可以用来绑定数据库.绑定LIST类型的变量等等. 这里我们说一说绑定List类型并实时更新datagridview的情况.实时更新,指的是 ...
- SQL Server 安装程序失败 不能在控件上调用 Invoke 或 BeginInvoke
出现这种问题的原因是权限问题,怎么处理呢,使用管理员运行 如果这种方法不行,比如我的就不可以,点击右键 对各个权限对象重新添加完全控制权限. 我的电脑的情况是安装sql2010,然后安装sql管理工具 ...
- WCF之错误和异常
CLR异常无法跨越服务边界,所有的异常都被封装(序列化)为SOAP Fault,可以让所有平台的用户接收到. SOAP1.1只有Body.1.2中含有Header+Body. 未捕获异常 异常会从逻辑 ...
- (转)Linux概念架构的理解
英文原文:Conceptual Architecture of the Linux Kernel 摘要 Linux kernel成功的两个原因:(1)架构设计支持大量的志愿开发者加入到开发过程中:(2 ...
- 9 款赏心悦目的 HTML5/CSS3 特效
1.HTML5 WebGL实验,超酷的HTML5 Canvas波浪墙 这是一款HTML5 Canvas实验项目,也是波浪特效,只是这不是真正的水波,而是利用柱体高度的变化实现的波浪墙效果. 在线演示 ...
- tar 「解/壓」 包
1.tar: short read tar壓縮包文件發生了損壞,或者说不完整. 最近,在寫下載程序的時候,發生了這個問題.初步猜測文件寫完沒有關閉,沒有寫完.
- 解决nginx负载均衡的session共享问题
1.不使用session,换用cookie session是存放在服务器端的,cookie是存放在客户端的,我们可以把用户访问页面产生的session放到cookie里面,就是以cookie为中转站. ...
- php中fopen函数用法详解(打开文件)
介绍下php中的fopen函数. 1.resource fopen(string $filename, string $mode [,bool $use_include_path [, resou ...
- ECSHOP订单自动确认
1.运行sql代码,生成数据库 CREATE TABLE `ecs_order_auto_confirm` ( `id` INT() UNSIGNED NOT NULL AUTO_INCREMENT, ...