POI2014 Solar Panels
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相关推荐
- [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)$. 思路 ...
- 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 ...
- 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 ...
- POI2014 Solar lamps
Solar lamps POI2014 题意 1.有n个灯,他们只会朝一个确定的夹角发光 2.每个灯被放在一个固定的地方,并且朝向同一个方向(指如果发光会朝同一个方向) 3.第i盏灯如果被至少K[i] ...
- BZOJ3833 : [Poi2014]Solar lamps
首先旋转坐标系,将范围表示成矩形或者射线 如果范围是一条线,则将灯按y坐标排序,y坐标相同的按x坐标排序, 对于y相同的灯,f[i]=min(i,它前面灯发光时刻的第k[i]小值), 线段树维护,$O ...
- BZOJ3833[Poi2014] Solar lamps
Task: 有很多盏灯,第ii盏灯在第ii个时刻点亮.如果有至少kik_i盏灯照亮了第ii盏灯,那么这盏灯就将被点亮.每盏灯照亮的范围都是一样角度的一个区域且无限延伸,给定(x1,y1),(x2,y2 ...
- 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 ...
- Solar Tracker
Solar Tracker 太阳能跟踪器 The Solar Tracker team was formed in the fall of 2005 from five students in an ...
- 计算机专业英语文章翻译,计算机专业英语英汉双语文章翻译
计算机专业英语英汉双语文章翻译 五项将改变世界的技术 It's a tall order: Over the next few decades, the world will need to wean ...
最新文章
- android 点击字体,图片背景效果一起变换Demo
- HDU2199,HDU2899,HDU1969,HDU2141--(简单二分)
- 查询Linux系统最后重启时间的三个方法
- 表的插入、更新、删除、合并操作_21_合并表中数据
- LeetCode 804. 唯一摩尔斯密码词(哈希+set)
- 使用Fiddler查看APP的请求接口、接口参数和返回值的方法
- 【多题合集】KMP练习
- 大王——有趣干货集合
- 【去重和排序】同一个list下,Map或对象内相同属性值取另一个属性值的最小值或最大值
- win10安装pytorch很慢,如何解决?
- HTML5期末大作业:基于 html css js仿腾讯课堂首页
- 怎么解决redis雪崩和穿透
- IDEA全局替换快捷键
- 如何通过Pyqt 或者PySide 在电脑上直接显示手机屏幕。
- 第三课 排序算法LowB三人组
- centos7 内网设置共享网络文件夹
- 一起学习CC3200系列教程之CC3200简介
- POJO 与javaBean(普通bean和EJB)
- java 私有全局变量_java中的全局变量
- 用java创建一个最简单的窗口
热门文章
- 重装系统出现错误原因汇总
- 2021上海益生产品(益生菌)展告知您吃益生菌多久才有效?
- Ubuntu14.04 安装 Nvidia显卡驱动
- ideaVim插件使用
- 携职教育:中级会计与中级职称的关系是什么?如何获得中级职称?
- 【掌控板】3、向txt文件写入字符串、声音数据获取
- 微信远程访问电脑资源-基于Itchat
- c语言 case语句用大括号,c++ - 关于“ switch”中“ case”语句中的花括号 - 堆栈内存溢出...
- Linux中如何搭建FTP服务
- matlab图像水印,怎么在含有水印的图像中提取出水印