2190: [SDOI2008]仪仗队
来源:互联网 发布:软件导刊 编辑:程序博客网 时间:2024/06/05 05:42
题目链接
题目大意:n*n方队,求队伍整齐时能看到的学生人数
题解:可以推出结论:能被看到的坐标互质,因为若有(i,j),且gcd(i,j)=d,则(i,j)会被(i/d,j/d)挡住 然后就可以反演了
下面考虑找规律
观察矩阵的下三角,
可以发现,每一竖行(自左到右编号0–n-1)能够被看到的点的数目就是ϕ(i),然后加上对角线
答案就是∑(ϕ[i])∗2+1,i=1…n-1(容斥原理)
正常做法参见2818,把左下角视为(0,0),特判加上(0,1)和(1,0)两个点即可
我的收获:思维强啊
#include <iostream>#include <cstdio>using namespace std;const int M=40005;int n,f[M],phi[M],pri[M];void sieve(){ phi[1]=1; for(int i=2,p=0;i<=n;i++){ if(!f[i]) pri[++p]=i,phi[i]=i-1; for(int j=1;j<=p&&i*pri[j]<=n;j++){ f[i*pri[j]]=1; if(i%pri[j]==0){phi[i*pri[j]]=phi[i]*pri[j];break;} phi[i*pri[j]]=phi[i]*(pri[j]-1); } }}void init(){ cin>>n;int ans=0; sieve(); for(int i=1;i<n;i++) ans+=phi[i]; cout<<ans*2+1<<endl;}int main(){ init(); return 0;}
0 0
- 2190: [SDOI2008]仪仗队
- BZOJ 2190 [SDOI2008]仪仗队
- 2190: [SDOI2008]仪仗队
- bzoj 2190: [SDOI2008]仪仗队
- BZOJ 2190: [SDOI2008]仪仗队
- bzoj 2190 [SDOI2008]仪仗队
- 仪仗队 [Bzoj 2190,SDOI2008]
- 2190: [SDOI2008]仪仗队
- 【BZOJ 2190】[SDOI2008]仪仗队
- 2190: [SDOI2008]仪仗队
- [bzoj 2190--SDOI2008]仪仗队
- BZOJ 2190 [SDOI2008]仪仗队 题解
- SDOI2008 仪仗队
- SDOI2008 仪仗队
- [SDOI2008]仪仗队
- BZOJ大视野 2190: [SDOI2008]仪仗队
- BZOJ-2190-仪仗队-SDOI2008-欧拉函数
- bzoj 2190: [SDOI2008]仪仗队 【容斥】
- 2467: [中山市选2010]生成树
- TensorFlow练习25: 使用深度学习做阅读理解+完形填空
- 射箭游戏
- 6、分析Linux内核创建一个新进程的过程
- A+B Problem(V)
- 2190: [SDOI2008]仪仗队
- 环信更多功能添加标签
- 如何使用eclipse创建java项目
- PHP类的封装和做投票和用进度条显示
- 通过使用import来省略System.out
- 链表排序之冒泡排序
- TensorFlow练习24: GANs-生成对抗网络 (生成明星脸)
- PHP运行及语句及逻辑
- php登录注册页面及加载