SDOI仪仗队

迎面冷风袭来

​  我又该何去何从

    哪里

      是我的安居之处

正文

我们这个题有一个是很显然的想法,我们可以想到是跟 \(\gcd\) 有关,事实上没有任何分析的,我们就可以得到36分的高分

注意点如下:

  • 0-n-1 编号,特判 i=0 的时候
  • 对于一个点 (i,j) 其中 i,j>0 我们当且仅当 \(gcd(i,j)=1\)时,这个点是看得到的,你可以认为是一个正比例函数

之后,检查每一个点,判断其 \(\gcd(i,j)=1\) 的是否,记录答案,这样只能拿27pts,但是已经不错了,重要的是,我们可以只检查一半的点就好了,剩下的一半乘二即可,这是一个常数的优化

#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
int n,ans;
int gcd(int a,int b){
    if(a<b) return gcd(b,a);
    if(a%b==0) return b;
    return gcd(b,a%b);
}
int main(){
    scanf("%d",&n);
    if(n==1){printf("0");return 0;}
    for(int i=0;i<n;i++){
        if(i==0){
            ans++;
            continue;
        }
        for(int j=i+1;j<n;j++)
            if(gcd(i,j)==1){
                ans++;
            }
    }
    ans=ans<<1;
    ans++;
    printf("%d",ans);
    return 0;
}

我们这里使用欧几里得的算法

然后,我们来考虑正解。咋办?我们考虑一个东西
\[
\forall n,m \in N^+ , 若对于所有的 i \in [1,n],j \in [1,m],且 i,j有一个公约数是k,这样的i,j,有 \lfloor \frac{n}{k} \rfloor \times \lfloor \frac{m}{k} \rfloor 对
\]
而这个结论几乎是显然的,所以我们考虑容斥原理,只要求出所有的公约数,然后一减就好了

当然了,我们令 \(f[i]\) 为最大公约数是 i 的对数,当然了,这就要减一个后面 i 的倍数的 f ,最后 \(f[1]\) 即为所求

所以,我们可以得到,一个算法时间复杂度为 \(O(n \log n)\)

#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <algorithm>
using namespace std;
const int Maxn=44000;
int n,f[Maxn],ans;

int main(){
    scanf("%d",&n);
    if(n==1){printf("0");return 0;}
    n--;
    ans=n*n;
    for(int i=n;i>=2;i--){
        int tmp=(n/i)*(n/i);
        for(int k=2;k<=n/i;k++){
            tmp-=f[k*i];
        }
        f[i]=tmp;
        ans-=f[i];
    }
    printf("%d",ans+2);
    return 0;
}

但是因为没有算 00 列的两个,所以答案加二

我还是

​ 回到,一横一竖的生活

[SDOI] 仪仗队的更多相关文章

  1. luogu2658 GCD(莫比乌斯反演/欧拉函数)

    link 给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对. 1<=N<=10^7 (1)莫比乌斯反演法 发现就是YY的GCD,左转YY的GCD ...

  2. [SDOI 2008]仪仗队

    Description 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线所及的学生人数来判断队伍是 ...

  3. 【BZOJ 2190】【SDOI 2008】仪仗队 欧拉筛

    欧拉筛模板题 #include<cstdio> using namespace std; const int N=40003; int num=0,prime[N],phi[N]; boo ...

  4. 【SDOI 2008】 仪仗队

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=2190 [算法] 同POJ3090 值得注意的是此题数据规模较大,建议使用用线性筛筛出 ...

  5. BZOJ 2190 SDOI 2008 仪仗队 线性欧拉筛

    标题效果:有一个格子组件图,假设三个人在一条直线上,那么第一个人将不会看到第三人.现在,有一个人站在(1,1)在.我问他是否能看到n*n的人数的矩阵. 思考:如果你想站(1,1)这名男子看到了一个立场 ...

  6. 洛谷P2158 [SDOI2008]仪仗队

    题目描述 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线所及的学生人数来判断队伍是否整齐(如下图 ...

  7. BZOJ 2190: [SDOI2008]仪仗队

    2190: [SDOI2008]仪仗队 Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 2689  Solved: 1713[Submit][Statu ...

  8. 【BZOJ2190】【SDOI2008】仪仗队

    Description 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线所及的学生人数来判断队伍是 ...

  9. BZOJ2190: [SDOI2008]仪仗队

    Description 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线所及的学生人数来判断队伍是 ...

随机推荐

  1. PyTables的下载和安装

    先说下我的环境:Ubuntu 16.04.5 LTS1.下载:git clone https://github.com/PyTables/PyTables.git 如果提示没有git 命令,需要先安装 ...

  2. Ubuntu解决 MariaDB无密码就可以登录的问题

    使用apt-get来安装mysql,安装好之后发现安装的是 MariaDB,如下,无需密码既可以登录了.即使使用mysqladmin或mysql_secure_installation 设置好密码,用 ...

  3. Android Webview实现有道电子词典

    毕业设计android电子词典,先实现的一个小小的demo. 所谓的毕业设计就是用最短的时间学习一门语言,做出一个小的project. activity_main.xml <LinearLayo ...

  4. 三、 TCP(传输控制协议)

    它建立在网际层协议(IP)提供的数据包传输技术之上,.TCP使应用程序可使用连续的数据进行通信.除非由于网络故障导致连接中断或冻结,TCP都能保证数据流完好地传输.而不会发生丢包 ,重包或是乱序的问题 ...

  5. JAVA环境配置(Windows10)

    Java开发环境配置 下载JDK 首先我们需要下载java开发工具包JDK,下载地址:https://www.oracle.com/technetwork/java/javase/downloads/ ...

  6. 闲谈一下,ES3、ES4、ES5、ES6 分别是什么

    上图按照时间顺序说明了JavaScript.JScript和ECMAScript的发展. 显示在网景工作的Brendan Eich临危受命,用十天时间设计出LiveScript的第一个版本.临时发布前 ...

  7. ThinkPHP5.1学习笔记 数据库操作

    数据库 参见<Thinkphp5.1完全开发手册>学习 Mirror王宇阳 数据库连接 ThinkPHP采用内置抽象层对数据库操作进行封装处理:且基于PDO模式,可以适配各种数据库. 数据 ...

  8. 快速应用开发(RAD)平台 - 20 年的演进

    过去几年中,现代软件开发的整体环境发生了巨大的变化.对我个人来说,这种变化与宇宙的加速膨胀差不多.第二个千年刚到来时,产业的发展看起来还不是那么快,只是逐步在前进.现在技术发展的复杂度和多样性已经可以 ...

  9. c++ 中变量成员的初始化时机

    代码如下: 注意一下我打断点的位置. 最后的结果: 在程序进入MyTest()的函数体之前,控制台就打印出来了I have been constructed. 即:在进入构造函数的函数体之前,类中的成 ...

  10. SpringBoot2.x操作缓存的新姿势

    一.介绍 spring cache 是spring3版本之后引入的一项技术,可以简化对于缓存层的操作,spring cache与springcloud stream类似,都是基于抽象层,可以任意切换其 ...