博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CodeForces - 992D Nastya and a Game
阅读量:4971 次
发布时间:2019-06-12

本文共 692 字,大约阅读时间需要 2 分钟。

 

    显然一段区间的 mul - sum * k = 0 才合法,然鹅我们发现sum * k 对于本题的数据来说最大才是1e18,也就是说mul必须得<=1e18.

    我们不妨从这里入手,因为mul最多只能乘log个>1的数,所以我们用lef[]记录每个数往左第一个不是1的数在哪,于是前后两个位置中间就是一坨子1,讨论一下就好啦。

 

#include
#define ll unsigned long longusing namespace std;const int maxn=200005;const ll inf=(ll)1e19;inline int read(){ int x=0; char ch=getchar(); for(;!isdigit(ch);ch=getchar()); for(;isdigit(ch);ch=getchar()) x=x*10+ch-'0'; return x;}int a[maxn],n,k,lef[maxn];ll sum,mul,ans,w;inline void solve(){ const int ha=k; for(int i=1;i<=n;i++){ sum=mul=a[i],ans+=(k==1); for(int pre=i,now=lef[i];;pre=now,now=lef[now]){ w=mul-sum*(ll)k; if(w>0&&w%ha==0&&w/ha

  

转载于:https://www.cnblogs.com/JYYHH/p/9232219.html

你可能感兴趣的文章
算法7-10:拓扑排序
查看>>
快速智能数据导入工具1.0
查看>>
态度决定品质
查看>>
NPOI Excel 单元格背景颜色对照表
查看>>
微信小程序去除button默认样式
查看>>
11/26
查看>>
Where does Visual Studio look for C++ Header files?
查看>>
JSP生成Excel报表
查看>>
Java打包可执行jar包 包含外部文件
查看>>
python第一周语言基础
查看>>
kettle的基本使用
查看>>
伪装虽易测试不易之微信浏览器
查看>>
Xcode 5.1.1 与 Xcode 6.0.1 共存
查看>>
窥探 kernel --- 进程调度的目标,nice值,静态优先级,动态优先级,实时优先级...
查看>>
使用bootstrap table时不能显示筛选列和分页每页显示的行数
查看>>
利用php cookie实现浏览历史功能
查看>>
机器学习:R语言中如何使用最小二乘法
查看>>
神兽保佑-代码无BUG
查看>>
写在学习Java GUI之前
查看>>
词型还原
查看>>