当前位置: 首页 > news >正文

笛卡尔树 (区间最小值)

笛卡尔树 (区间最小值)

https://codeforces.com/gym/105588/problem/M

#include<bits/stdc++.h>
using namespace std;#define vcoistnt ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 
#define int long long
#define vi vector<int>
#define vb vector<bool>
typedef pair<int,int> pll;const int N=2e5+10;
const int inf=1e18;
const int mod=998244353;int n,m;
vi a(N);
vi b(N);//构建笛卡尔树
vi ls(N),rs(N),sta(N);
void build(){int top=0;for(int i=1;i<=n;i++){int pos=top;while(pos>0 && b[sta[pos]]>b[i]){pos--;}if(pos>0){rs[sta[pos]] = i;}if(pos<top){ls[i]=sta[pos+1];}sta[++pos] =i;top=pos;}
}bool dfs(int l,int r,int x,int fa){if(fa && b[x]%b[fa]) return 0;if(l>=r) return 1;return dfs(l,x-1,ls[x],x)&&dfs(x+1,r,rs[x],x);
}bool check(int x){for(int i=1;i<=n;i++) b[i]=a[i]+x;for(int i=1;i<=n;i++) ls[i]=rs[i]=0;    //重置笛卡尔树build();return dfs(1,n,sta[1],0);}void solve(){cin>>n>>m;int mn=inf;for(int i=1;i<=n;i++){cin>>a[i];mn=min(mn,a[i]);}int g=0;for(int i=1;i<n;i++){g=__gcd(g,abs(a[i]-a[i+1]));}  //求最大公约数做差之后即使+x最大公约数也不会受到影响if(g==0){   //只有一个数以及所有数都相等的情况cout<<m<<" "<<m*(m+1)/2<<"\n";return;}vi d;   //统计因子d.push_back(0);     //我习惯从下标1开始for(int i=1;i*i<=g;i++){    //求最大公约数的因子if(g%i==0){d.push_back(i);if(i*i!=g) d.push_back(g/i);}}int id=d.size()-1;int cnt=0,sum=0;for(int t=1;t<=id;t++){     //检查所有合法的因子int x=d[t]-mn;if(x<1 || x>m) continue;int ret=check(x);if(ret) cnt++,sum+=x;}cout<<cnt<<" "<<sum<<"\n";}
signed main() {vcoistntcout<<fixed<<setprecision(2);int _=1;cin>>_;while(_--) solve();return 0;
}
http://www.rkmt.cn/news/14392.html

相关文章:

  • CF2003F. Turtle and Three Sequences
  • Python 标准库 unittest 不同遮掩方式的比较
  • 天线增益与有源接收面积之间的关系
  • 流量分析
  • 阿里云函数计算 AgentRun 全新发布,构筑智能体时代的基础设施 - 教程
  • DevEco Studio 编辑器的使用 - 实践
  • rhel8无法输入中文问题(红帽8安装中文输入法)
  • 2025-2026-1 20231301 《信息安全设计》第八周学习总结
  • 2025-2026-1 20231301 《信息安全设计》第七周学习总结
  • 2025-2026-1 20231301 《信息安全设计》第六周学习总结
  • 贼猴 0930 模拟赛 T2 | 计数
  • 题解:AT_abc311_h [ABC311Ex] Many Illumination Plans
  • SuperMap iObjects .NET 11i 二次开发(十五)—— 类型转换之面转点 - 教程
  • AT_agc035_c [AGC035C] Skolem XOR Tree
  • 炼石#8 T1
  • AI+手搓第一个AI Agent“AI胜铭兰”
  • 电脑开机显示屏表现无信号怎么办 原因及解决方法
  • 用 Nim 实现英文数字验证码识别
  • 【Rust GUI开发入门】编写一个本地音乐播放器(8. 从文件中提取歌曲元信息) - Jordan
  • 地产行业,居然还有这样的开发商 - 智慧园区
  • VMware vSphere Replication 9.0.4 发布 - 虚拟机复制和数据保护
  • 【Rust GUI开发入门】编写一个本地音乐播放器(5. 制作音乐列表组件) - Jordan
  • 【半导体物理 | 学习笔记】第一章 半导体中的电子状态
  • 计数(5):多项式相关
  • 【Batch】批量修改文件后缀
  • 【solace】基于docker部署solace环境
  • Vue-element-admin开发指南 - 教程
  • 2025 年国内工作服厂家最新推荐排行榜:聚焦工艺设计与服务,精选权威榜单助企业采购冬季/春季/工人/车间/防静电/餐饮/劳保工作服厂家推荐
  • 在 Vue 3 的 script setup 语法中,定义组件名称(name)
  • ClickHouse ReplacingMergeTree 去重陷阱:为什么你的 FINAL 查询无效? - 若