小包有N个球和A个盒子。球标号为0到N-1,盒子编号为0到A-1。标号为x的球放在下标为x mod A的盒子里。
然后他得到了B个新盒子,编号为0到B-1。他想把所有球从旧盒子里面拿出来放到新盒子,标号为x的球放在下标为x mod B的盒子里。
对于某个球来说,如果原本放在下标为a的旧盒子,现在放在下表为b的新盒子,那么费用为|a-b|。
求出总花费。a,b<10^6 N<10^9

这个题比较有趣

首先我们发现一个性质,对于0~a-1这a个数,我们只需要知道0对应的是哪个数,就可以快速算出这a个数的贡献

比如a=3 b=5

012|012|012|012|012

012|340|123|401|234

对于第一组,我们知道贡献显然为0

第二组贡献为3*2+2*1=8

第三组类似

另外呢,我们发现对于c=lcm(a,b)来说,0~c-1和c~2c-1的答案相同,即有循环

所以我们可以将时间复杂度优化到O(a)

#include<stdio.h>
#include<algorithm>
#define L long long
using namespace std;
L gcd(L a,L b){for(L c;b;a=b,b=c) c=a%b;return a;
}
inline L f(L i,L j,L k){L S1=min(i,j-k)*k;L S2=(i-min(i,j-k))*(j-k);return S1+S2;
}
int main(){L i,n,a,b,S=0,r,c,S1=0;scanf("%lld%lld%lld",&n,&a,&b);r=gcd(a,b); c=a/r*b;if(a>b) swap(a,b);for(i=0;i<c;i+=a)S1+=f(a,b,i%b);S+=S1*(n/c); n%=c;for(i=0;i<n;i+=a)S+=f(a,b,i%b);if(i>a){ i-=a; S-=f(a,b,i%b); }for(;i<n;++i) S+=abs((i%a)-(i%b));printf("%lld\n",S);
}

转载于:https://www.cnblogs.com/Extended-Ash/p/9477355.html

Jzoj3192 球相关推荐

  1. 是否存在分布式的【大泥球】?

    2021-11-11 15:08 是否存在分布式的[大泥球]? 人们往往把微服务架构当成一剂良药,用以解决单体应用内的大泥球问题.然而,大泥球的本质问题是因为代码都位于同一个进程里运行的吗?换言之,如 ...

  2. NOIP模拟 数球(思维题)

    [题目描述] 小A有n个球,编号分别为1到n,小A每次都会从n个球中取出若干个球,至少取一个,至多取n个,每次取完再放回去,需要满足以下两个条件. (1)每次取出的球的个数两两不同. (2)每次取出的 ...

  3. PRT(Precomputed Radiance Transfer)球谐光照(Spherical Harmonic Lighting)

    最近因为开始做PRT(Precomputed Radiance Transfer),看了一些资料.wikipedia上的解释:       Precomputed Radiance Transfer ...

  4. 华为畅享8的悬浮窗在哪里_华为畅享8悬浮球设置 | 手游网游页游攻略大全

    发布时间:2015-12-03 华为畅享5s是近期华为推出的金属指纹识别千元机,较高的售价和十足的卖点让华为畅享5s关注度颇高.但是真正用起来华为畅享5s表现怎么样呢?好不好呢?下面99安卓网小编就分 ...

  5. 悬浮球 / 悬浮按钮 / 辅助按钮

    原文链接:https://github.com/jinht/FloatingBall 类似于 iOS 系统自带的 AssistiveTouch / 京东 / 聚划算 / 建行等的辅助按钮 -- 由an ...

  6. 使用自定义材质球,实现NGUI屏幕溶解和灰显

    UITexture实现的溶解: 重设UITeture的材质球实现上述效果,把当前屏幕渲染的Texture2D丢给UITexture,即可实现UI屏幕特效,背景模糊等都可以. 难点主要是实时刷新问题 解 ...

  7. 一个球从100米高度自由落下,每次落地后反弹回原高度的一半; * 再落下,求在第几次之后反弹高度小于0.1米, * 并计算在这一次落地时共经过多少米?...

    package com.db2;/*** 一个球从100米高度自由落下,每次落地后反弹回原高度的一半: * 再落下,求在第几次之后反弹高度小于0.1米,* 并计算在这一次落地时共经过多少米?* * @ ...

  8. 首款AI看球机器人亮相北京,已上线IOS版和安卓版

    3月9日,魔方元科技在北京举办"机器人陪你看世界杯"为主题的产品沟通分享会,发布了其自主研发的产品"AI球".据悉,"AI球"是首款立足于足 ...

  9. ACMNO.14一球从M米高度自由下落,每次落地后返回原高度的一半,再落下。 它在第N次落地时反弹多高?共经过多少米? 保留两位小数 输入 M N 输出 它在第N次落地时反弹多高?共经过多少米

    题目描述 一球从M米高度自由下落,每次落地后返回原高度的一半,再落下.它在第N次落地时反弹多高?共经过多少米? 保留两位小数 输入 M N 输出 它在第N次落地时反弹多高?共经过多少米? 保留两位小数 ...

最新文章

  1. Opencv学习笔记之OpenCV介绍
  2. Curl http_code 状态码
  3. php phar包require报错,php,_很奇怪,php 引入了phar,但是报错,说Predis\Client类找不到?,php - phpStudy...
  4. Dynamic动态类型
  5. 仿iReader-按menu键弹出PopupWindow布局界面
  6. mysql ---事务
  7. slf4j没有在linux中生成日志,logback+SLF4J 没打印日志
  8. 螃蟹保存方法保存时间_中秋吃不完的螃蟹如何保存?蟹农:生螃蟹冰箱冷藏,熟螃蟹别隔夜...
  9. 上周Asp.net源码(11.5-11.10)免费下载列表
  10. Backward_chaining
  11. Matpower疑惑解答
  12. 红外接收电路自己制作,我用过的
  13. 服装系统mysql设计_服装行业ERP系统的设计与实现-店铺模块(SSH,MySQL)(含录像)
  14. HTML源码大放送1
  15. 输入两个正整数m和n,求其最大公约数和最小公倍数(常见的错误代码分析)
  16. sketch交互动效能导入html吗,UI设计利器Sketch +最新交互利器 Framer 配合使用和动效制作...
  17. 【使用C++开发MCU】02-IIC实例之读取温度
  18. 打开Docx文件的方法
  19. 复试-网安开放性问题
  20. 买了SKS的W530

热门文章

  1. 电动车爬坡时究竟应该用最快档还是用最慢档?
  2. 做外贸出口,要想快速开发客户,快速赚大钱
  3. 赚钱的一大障碍:知道的赚钱门路太多
  4. P5 周志华:“数据、算法、算力”,人工智能三要素在未来还要加上“知识”
  5. 在构造函数中使用new时应注意的事项
  6. 用字符数组存放和处理字符串
  7. 微软power bi_Microsoft Power Platform快速概述
  8. aws rds监控慢sql_在AWS RDS SQL Server上的SSAS中部署表格数据库
  9. SQL Server舍入功能概述– SQL舍入,上限和下限
  10. 在AWS RDS SQL Server中恢复数据