zoukankan      html  css  js  c++  java
  • BZOJ3505 [Cqoi2014]数三角形

    明显容斥。总答案减掉共线答案。共横线和共竖线简单。难点在于共斜线计数。

    考虑暴力。枚举每个点对连线间整点数量,这些点可以作为共线的第三点,种数$gcd(x_1-x_2,y_1-y_2)-1$。

    可以证明这是不重不漏的(枚举且仅枚举到了每个点对作为共线两端的情况)。

    复杂度过高。考虑优化。

    发现可以固定一个端点在$(0,0)$,只枚举另一个端点,这时中间点个数用$gcd(i,j)-1$算出。

    然后发现这个$(0,0)$点可以平移到满足$x leq n-i+1,y leq m-j+1$的任意$(x,y)$上,种数都是同样的计算结果。

    这样就简化了一个端点的枚举。

    然后就处理了共斜线种类。注意乘2即可得到对称结果(斜率小于0的)。

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 #include<cmath>
     6 #define dbg(x) cerr << #x << " = " << x <<endl
     7 using namespace std;
     8 typedef long long ll;
     9 typedef unsigned long long ull;
    10 typedef double db;
    11 typedef pair<int,int> pii;
    12 template<typename T>inline T _min(T A,T B){return A<B?A:B;}
    13 template<typename T>inline T _max(T A,T B){return A>B?A:B;}
    14 template<typename T>inline char MIN(T&A,T B){return A>B?(A=B,1):0;}
    15 template<typename T>inline char MAX(T&A,T B){return A<B?(A=B,1):0;}
    16 template<typename T>inline void _swap(T&A,T&B){A^=B^=A^=B;}
    17 template<typename T>inline T read(T&x){
    18     x=0;int f=0;char c;while(!isdigit(c=getchar()))if(c=='-')f=1;
    19     while(isdigit(c))x=x*10+(c&15),c=getchar();return f?x=-x:x;
    20 }
    21 ull n,m,s,ans;
    22 inline int gcd(int a,int b){return b==0?a:gcd(b,a%b);}
    23 
    24 int main(){//freopen("test.in","r",stdin);//freopen("test.out","w",stdout);
    25     read(n),read(m);++n,++m;s=n*m;
    26     ans=s*(s-1)*(s-2)/6-n*m*(m-1)*(m-2)/6-m*n*(n-1)*(n-2)/6;
    27     for(register int i=1;i<n;++i)
    28         for(register int j=1;j<m;++j)
    29             ans-=(gcd(i,j)-1)*1ull*(m-j)*(n-i)*2;
    30     printf("%llu",ans);
    31     return 0;
    32 }
    View Code
  • 相关阅读:
    nginx 配置https, 服务器是阿里云的ECS(亲测)
    jenkins 安装2.170版本 的问题汇中
    终于有人把“TCC分布式事务”实现原理讲明白了!
    springcloud(九) springboot Actuator + admin 监控
    springcloud(八) Hystrix监控
    springcloud(七) feign + Hystrix 整合 、
    springboot 2.0 自定义redis自动装配
    springboot 2.0 自动装配原理 以redis为例
    博文分类索引--Python
    【python】-- Ajax
  • 原文地址:https://www.cnblogs.com/saigyouji-yuyuko/p/11464800.html
Copyright © 2011-2022 走看看