Solar Panels

POI2014

题意

多组询问,每次问x∈[L1,R1],y∈[L2,R2]时,gcd(x, y)的最大值

1.设答案为d
那么必须满足 ⌊ L 1 − 1 d ⌋ \lfloor\frac{L1-1}{d}\rfloor ⌊dL1−1​⌋< ⌊ R 1 d ⌋ \lfloor\frac{R1}{d}\rfloor ⌊dR1​⌋&& ⌊ L 2 − 1 d ⌋ \lfloor\frac{L2-1}{d}\rfloor ⌊dL2−1​⌋< ⌊ R 2 d ⌋ \lfloor\frac{R2}{d}\rfloor ⌊dR2​⌋

2.问题就是找到最大的d满足上面的条件

3.观察式子 ⌊ L 1 − 1 d ⌋ \lfloor\frac{L1-1}{d}\rfloor ⌊dL1−1​⌋< ⌊ R 1 d ⌋ \lfloor\frac{R1}{d}\rfloor ⌊dR1​⌋&& ⌊ L 2 − 1 d ⌋ \lfloor\frac{L2-1}{d}\rfloor ⌊dL2−1​⌋< ⌊ R 2 d ⌋ \lfloor\frac{R2}{d}\rfloor ⌊dR2​⌋
这是向下取整,所以选d时,尽量选让R1,R2能整除的,使R1,R2的损失尽可能少

4.枚举一个d,从1开始
然后找到在这个d的情况下,如果整除,最大可以得到多大的d’
d’=min(R1/(R1/d),R2/(R2/d))
两个数应该优先满足小数整除,毕竟大数后面还会有机会

如果满足 ⌊ L 1 − 1 d ′ ⌋ \lfloor\frac{L1-1}{d'}\rfloor ⌊d′L1−1​⌋< ⌊ R 1 d ′ ⌋ \lfloor\frac{R1}{d'}\rfloor ⌊d′R1​⌋&& ⌊ L 2 − 1 d ′ ⌋ \lfloor\frac{L2-1}{d'}\rfloor ⌊d′L2−1​⌋< ⌊ R 2 d ′ ⌋ \lfloor\frac{R2}{d'}\rfloor ⌊d′R2​⌋,ans=max(ans,d’)

然后d=d’+1,直接跳到下一块去

5.每次找到一个d’,d’被R1整除或者d’被R2整除,总复杂度为O( R 1 + R 2 \sqrt{R1}+\sqrt{R2} R1 ​+R2 ​)

具体代码

#include<bits/stdc++.h>
using namespace std;
int q,ans;
int L1,R1,L2,R2;
void rd(int &res){res=0;char c;while(c=getchar(),c<48);do res=(res<<3)+(res<<1)+(c^48);while(c=getchar(),c>47);
}
int main() {rd(q);while(q--) {rd(L1),rd(R1),rd(L2),rd(R2);ans=0;L1--,L2--;if(R1>R2)swap(L1,L2),swap(R1,R2);for(int i=1,j; i<=R1; i=j+1) {j=min(R1/(R1/i),R2/(R2/i));if(R1/j>L1/j&&R2/j>L2/j)ans=j;}printf("%d\n",ans);}return 0;
}

POI2014 Solar Panels相关推荐

  1. [POI2014]Solar Panels

    题目大意: $T(T\le1000)$组询问,每次给出$A,B,C,D(A,B,C,D\le10^9)$,求满足$A\le x\le B,C\le y\le D$的最大的$\gcd(x,y)$. 思路 ...

  2. BZOJ3834: [Poi2014]Solar Panels

    题目大意:给定A,B,C,D,求满足A≤x≤B&&C≤y≤D的gcd(x,y)的最大值 首先枚举答案n,变成检验 ⌊A−1n⌋ \lfloor\frac{A-1}{n}\rfloor ...

  3. P3579 [POI2014]PAN-Solar Panels(整除分块)

    P3579 [POI2014]PAN-Solar Panels(整除分块) 枚举 g = g c d ( x , y ) g=gcd(x,y) g=gcd(x,y). 考虑最大的 x , y x,y ...

  4. POI2014 Solar lamps

    Solar lamps POI2014 题意 1.有n个灯,他们只会朝一个确定的夹角发光 2.每个灯被放在一个固定的地方,并且朝向同一个方向(指如果发光会朝同一个方向) 3.第i盏灯如果被至少K[i] ...

  5. BZOJ3833 : [Poi2014]Solar lamps

    首先旋转坐标系,将范围表示成矩形或者射线 如果范围是一条线,则将灯按y坐标排序,y坐标相同的按x坐标排序, 对于y相同的灯,f[i]=min(i,它前面灯发光时刻的第k[i]小值), 线段树维护,$O ...

  6. BZOJ3833[Poi2014] Solar lamps

    Task: 有很多盏灯,第ii盏灯在第ii个时刻点亮.如果有至少kik_i盏灯照亮了第ii盏灯,那么这盏灯就将被点亮.每盏灯照亮的范围都是一样角度的一个区域且无限延伸,给定(x1,y1),(x2,y2 ...

  7. Indian Scientists Design Device to Collect Solar Energy 印度科学家设计太阳能收集设备

    Indian scientists have designed a new device they hope will solve one of the biggest problems with t ...

  8. Solar Tracker

    Solar Tracker 太阳能跟踪器 The Solar Tracker team was formed in the fall of 2005 from five students in an ...

  9. 计算机专业英语文章翻译,计算机专业英语英汉双语文章翻译

    计算机专业英语英汉双语文章翻译 五项将改变世界的技术 It's a tall order: Over the next few decades, the world will need to wean ...

最新文章

  1. android 点击字体,图片背景效果一起变换Demo
  2. HDU2199,HDU2899,HDU1969,HDU2141--(简单二分)
  3. 查询Linux系统最后重启时间的三个方法
  4. 表的插入、更新、删除、合并操作_21_合并表中数据
  5. LeetCode 804. 唯一摩尔斯密码词(哈希+set)
  6. 使用Fiddler查看APP的请求接口、接口参数和返回值的方法
  7. 【多题合集】KMP练习
  8. 大王——有趣干货集合
  9. 【去重和排序】同一个list下,Map或对象内相同属性值取另一个属性值的最小值或最大值
  10. win10安装pytorch很慢,如何解决?
  11. HTML5期末大作业:基于 html css js仿腾讯课堂首页
  12. 怎么解决redis雪崩和穿透
  13. IDEA全局替换快捷键
  14. 如何通过Pyqt 或者PySide 在电脑上直接显示手机屏幕。
  15. 第三课 排序算法LowB三人组
  16. centos7 内网设置共享网络文件夹
  17. 一起学习CC3200系列教程之CC3200简介
  18. POJO 与javaBean(普通bean和EJB)
  19. java 私有全局变量_java中的全局变量
  20. 用java创建一个最简单的窗口

热门文章

  1. 重装系统出现错误原因汇总
  2. 2021上海益生产品(益生菌)展告知您吃益生菌多久才有效?
  3. Ubuntu14.04 安装 Nvidia显卡驱动
  4. ideaVim插件使用
  5. 携职教育:中级会计与中级职称的关系是什么?如何获得中级职称?
  6. 【掌控板】3、向txt文件写入字符串、声音数据获取
  7. 微信远程访问电脑资源-基于Itchat
  8. c语言 case语句用大括号,c++ - 关于“ switch”中“ case”语句中的花括号 - 堆栈内存溢出...
  9. Linux中如何搭建FTP服务
  10. matlab图像水印,怎么在含有水印的图像中提取出水印