
【SSL_2020.10.27】小biu闯关
发布日期:2021-05-06 16:01:02
浏览次数:17
分类:精选文章
本文共 1023 字,大约阅读时间需要 3 分钟。
小biu~闯关
蛶磃糹樐(解题思路)
首先,我们要知道一个东西:
[ A , B ] ⟹ [ 2 A , 2 B ] ⟹ [ K A , K B ] [A,B] \implies [2A,2B] \implies [KA,KB] [A,B]⟹[2A,2B]⟹[KA,KB] 那么这是为什么呢?以样例为例: [ 8 , 10 ] = 8 , 9 , 10 [8,10]=8,9,10 [8,10]=8,9,10 8 + 8 = 16 , 8 + 9 = 17 , 9 + 9 = 10 , 9 + 10 = 20 8+8=16,8+9=17,9+9=10,9+10=20 8+8=16,8+9=17,9+9=10,9+10=20 = [ 16 , 20 ] = [ 2 ∗ 8 , 2 ∗ 10 ] =[16,20]=[2*8,2*10] =[16,20]=[2∗8,2∗10] 然后呢,我们又要知道另一个东西: ∵ a < b \because a<b ∵a<b ∴ b − a > 0 \therefore b-a>0 ∴b−a>0 ∴ k b − k a 单 调 递 增 \therefore kb-ka单调递增 ∴kb−ka单调递增 ∴ ( k + 1 ) a − k b 单 调 递 减 \therefore (k+1)a-kb 单调递减 ∴(k+1)a−kb单调递减 那么区间总有一天会重合,我们可以找出这个K,然后暴力求和就可以了。code
#include#include #include #define ll long longusing namespace std;int T;ll a,b,x,y;ll ans;int main(){ cin>>T; while(T--) { scanf("%lld%lld%lld%lld",&a,&b,&x,&y); ll ans=0,k=1; if(b y) break; if((k+1)*a<=k*b+1) { ans+=y-max(x,k*a)+1; break; } else ans+=min(y,k*b)-max(x,k*a)+1; k++; } cout< <
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2025年03月31日 06时26分26秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
记SpringBoot 遇到的Whitelabel Error Page
2019-03-04
面试时被问技术栈底层 , 机智小伙反秀面试官一脸
2019-03-04
学而时习之网络篇: 又是HTTP缓存的锅 !
2019-03-04
初学源码如何越学越香 ?
2019-03-04
[百度搜索框Bootstrap模仿]
2019-03-04
XCTF web Web_php_include (php://过滤)
2019-03-04
记录一次需求变动导致的重构
2019-03-04
python-requests模块实现ip代理池
2019-03-04
使用async、await改善异步代码
2019-03-04
洛谷 1115 最大子段和、HDU 1003 Max Sum(最大字段和问题)
2019-03-04
BugkuCTF web_1-10
2019-03-04
零基础入门JavaScript 这一篇笔记就够了
2019-03-04
MySQL_属性、记录长度、设计范式、表关系
2019-03-04
MySQL_安全管理、表单传值、php操作
2019-03-04
POJ 2299 Ultra-QuickSort(树状数组+离散化+求逆序数)
2019-03-04
BUUCTF web WarmUp
2019-03-04
hcnp笔记
2019-03-04
python数据分析
2019-03-04