【BZOJ】3834: [Poi2014]Solar Panels
http://www.lydsy.com/JudgeOnline/problem.php?id=3834
题意:求$max\{(i,j)\}, smin<=i<=smax, wmin<=i<=wmax$,其中$smin<=smax<=10^9, wmin<=wmax<=10^9$,有$N<=1000$组数据
#include <bits/stdc++.h>
using namespace std;
int main() {
int cs, smin, smax, wmin, wmax, ans; scanf("%d", &cs);
while(cs--) {
scanf("%d%d%d%d", &smin, &smax, &wmin, &wmax);
if(smax>wmax) swap(smin, wmin), swap(smax, wmax);
ans=1;
if(wmin<=smax && smax<=wmax) ans=smax;
else {
--smin; --wmin;
for(int d=smax, pos; d; d=pos) {
pos=max(smax/(smax/d+1), wmax/(wmax/d+1));
if(smin>=d) pos=max(pos, smin/(smin/d+1));
if(wmin>=d) pos=max(pos, wmin/(wmin/d+1));
if(smax/d-smin/d>0 && wmax/d-wmin/d>0) { ans=d; break; }
}
}
printf("%d\n", ans);
}
return 0;
}
假设$smax<=wmax$
如果$wmin<=smax<=wmax$,显然答案就是$smax$
考虑枚举$d=gcd$,那么转换为在区间$[ \lfloor \frac{smin}{d} \rfloor, \lfloor \frac{smax}{d} \rfloor ] 和 [ \lfloor \frac{wmin}{d} \rfloor, \lfloor \frac{wmax}{d} \rfloor ]$找$[(i, j)]=1$表示存在$gcd(i,j)=d$
于是我就很sb了............我为什么一定要$[(i,j)]=1$呢.............然后膜拜了zyf千古神犇....发现其实$[(i,j)]>=1$就行了= =.............因为我很sb没想到.......倍数关系啊= =
于是分块查询即可..
复杂度$O(N4\sqrt{smax})$
【BZOJ】3834: [Poi2014]Solar Panels的更多相关文章
- bzoj 3834 [Poi2014]Solar Panels 数论分块
3834: [Poi2014]Solar Panels Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 367 Solved: 285[Submit] ...
- 【BZOJ】3524: [Poi2014]Couriers
[算法]主席树 [题解]例题,记录和,数字出现超过一半就递归查找. 主席树见[算法]数据结构 #include<cstdio> #include<algorithm> #inc ...
- 【BZOJ】3835: [Poi2014]Supercomputer
题意 \(n(1 \le 1000000)\)个点的有根树,\(1\)号点为根,\(q(1 \le 1000000)\)次询问,每次给一个\(k\),每一次可以选择\(k\)个未访问的点,且父亲是访问 ...
- 【BZOJ】3832: [Poi2014]Rally
题意 \(n(2 \le n \le 500000)\)个点\(m(1 \le m \le 1000000)\)条边的有向无环图,找到一个点,使得删掉这个点后剩余图中的最长路径最短. 分析 神题不会做 ...
- 【BZOJ】3526: [Poi2014]Card
题意 \(n(n \le 200000)\)张卡片,正反有两个数\(a[i], b[i]\).\(m(m \le 1000000)\)次操作,每次交换\(c[i].d[i]\)位置上的卡片.每一次操作 ...
- 【BZOJ】3523: [Poi2014]Bricks
题意 \(n(n \le 1000000)\)个物品,颜色分别为\(a[i]\),现在要求排在一排使得相邻两个砖块的颜色不同,且限定第一个砖块和最后一个砖块的颜色,输出一个合法解否则输出-1. 分析 ...
- 【BZOJ】3521: [Poi2014]Salad Bar
题意 长度为\(n(1 \le n \le 1000000)\)的\(01\)字符串.找一个最长的连续子串\(S\),使得不管是从左往右还是从右往左取,都保证每时每刻已取出的\(1\)的个数不小于\( ...
- 【BZOJ】3524 [POI2014] Couriers(主席树)
题目 传送门:QWQ 传送到洛谷QWQ 分析 把求区间第k大的改一改就ok了. 代码 #include <bits/stdc++.h> using namespace std; ; ], ...
- 【BZOJ3834】[Poi2014]Solar Panels 分块好题
[BZOJ3834][Poi2014]Solar Panels Description Having decided to invest in renewable energy, Byteasar s ...
随机推荐
- linux后台运行和关闭、查看后台任务
转自:http://www.cnblogs.com/kaituorensheng/p/3980334.html fg.bg.jobs.&.nohup.ctrl+z.ctrl+c 命令 一.&a ...
- Qt Designer怎样加入资源文件
Qt Designer中如果在设计UI界面的时候要加入一些图素,图标等资源的时候是不能直接添加进去的,需要在Qt开发目录下编写QRC文件 qrc文件格式如下: <RCC> <qres ...
- 使用Jmeter进行http接口性能测试
在进行网页或应用程序后台接口开发时,一般要及时测试开发的接口能否正确接收和返回数据,对于单次测试,Postman插件是个不错的Http请求模拟工具. 但是Postman只能模拟单客户端的单次请求,而对 ...
- Bag-of-words模型
Bag-of-words模型是信息检索领域常用的文档表示方法.在信息检索中,BOW模型假定对于一个文档,忽略它的单词顺序和语法.句法等要素,将其仅仅看作是若干个词汇的集合,文档中每个单词的出现都是独立 ...
- jackson对多态or多子类序列化的处理配置
[TOC] Jackson Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json.xml转换成Java对象. 多态类型的处理 jackson允许配置多态类型处理, ...
- Android学习二_八:Animation的使用(一) (转)
一.Animations介绍 Animations是一个实现android UI界面动画效果的API,Animations提供了一系列的动画效果,可以进行旋转.缩放.淡入淡出等,这些效果可以应用在绝大 ...
- sp_executesql的用法
之前做项目的时候负责一个成绩分析的模块儿,写存储过程的时候因为考试的科目是不固定的,所以导致查找成绩的sql语句也是动态的,就用到了sp_executesql,下面就来说一说它的用法 需求:表名是动态 ...
- Vs2010工具栏显示“开始执行“按钮
转载来源:http://blog.csdn.net/fromhj/article/details/8795047 前言 在用visual studio 2010的时候,要运行程序,可以使用 1.菜单- ...
- 智能车学习(五)—— dac学习
一.代码共享: 1.dac.h #ifndef DAC_H_ #define DAC_H_ #include "common.h" // 2.2 DAC控制寄存器0 位定义 #de ...
- 【SQL Sever】将SQL Sever中的一个数据表的数据导出为insert语句
例如:这SQL Sever中的一张数据表,想要将这张数据表中的数据 转化成一个一个的insert语句存储在txt的文档中,那么不论走到那里这个insert语句一执行,我们就能将这个数据表中的数据 ...