zoukankan      html  css  js  c++  java
  • 【洛谷3579】[POI2014] PAN-Solar Panels(除法分块水题)

    点此看题面

    • 求所有(xin [a,b],yin[c,d])(gcd(x,y))的最大值。
    • (ale ble10^9,cle dle 10^9)

    除法分块

    考虑一个因数(g)出现在([a,b])中,只要找到小于等于(b)的最小的(d)的倍数(lfloorfrac bg floor imes g),将它与(a)比较即可。

    发现(lfloorfrac bg floor)是一个整除的形式,且(lfloorfrac bg floor)相同的时候更大的(g)肯定更有可能满足条件。

    因此我们对于(lfloorfrac bg floor)(lfloorfrac dg floor)一起除法分块,就解决了这道题。

    代码:(O(Tsqrt V))

    #include<bits/stdc++.h>
    #define Tp template<typename Ty>
    #define Ts template<typename Ty,typename... Ar>
    #define Reg register
    #define RI Reg int
    #define Con const
    #define CI Con int&
    #define I inline
    #define W while
    using namespace std;
    int a,b,c,d;
    int main()
    {
    	RI Tt,i,l,r,t=0;scanf("%d",&Tt);W(Tt--)
    	{
    		scanf("%d%d%d%d",&a,&b,&c,&d);
    		for(t=0,l=1;l<=min(b,d);l=r+1) r=min(b/(b/l),d/(d/l)),b/r*r>=a&&d/r*r>=c&&(t=r);//除法分块
    		printf("%d
    ",t);
    	}return 0;
    }
    
    败得义无反顾,弱得一无是处
  • 相关阅读:
    MyBatis入门案例、增删改查
    Hibernate第三次测试错题解析
    HIbernate二级缓存
    Hibernate组件映射
    java 序列化
    圈复杂度(Cyclomatic Complexity)
    ASE加、解密
    异常Exception
    动态代理(jdk--cglib)
    java.lang.Class类
  • 原文地址:https://www.cnblogs.com/chenxiaoran666/p/Luogu3579.html
Copyright © 2011-2022 走看看