Codeforces 567C - Geometric Progression - [map维护]
题目链接:https://codeforces.com/problemset/problem/567/C
题意:
给出长度为 的序列 ,给出公比 ,要求你个给出该序列中,长度为 的等比子序列的数目。
题解:
首先倒着遍历,用map记录曾经出现过的每个数字的出现次数,然后再用另一个map来记录曾经出现过的所有满足 的二元组的数目,最后就直接维护答案即可。
AC代码:
#include<bits/stdc++.h> #define IO (ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)) #define mk make_pair #define fi first #define se second using namespace std; typedef long long ll; typedef pair<ll,ll> P; const int maxn=2e5+10; int n; ll k,a[maxn]; map<ll,ll> mp1; map<P,ll> mp2; int main() { IO; cin>>n>>k; ll mx=-1e10, mn=1e10; for(int i=1;i<=n;i++) cin>>a[i], mx=max(a[i],mx), mn=min(a[i],mn); ll ans=0; for(int i=n;i>=1;i--) { if(mn/(k*k)<=a[i] && a[i]<=mx/(k*k)) ans+=mp2[mk(a[i]*k,a[i]*k*k)]; if(mn/k<=a[i] && a[i]<=mx/k) mp2[mk(a[i],a[i]*k)]+=mp1[a[i]*k]; mp1[a[i]]++; } cout<<ans<<endl; }
转载请注明出处:https://dilthey.cnblogs.com/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
2018-05-02 CSU 1804 - 有向无环图 - [(类似于)树形DP]
2018-05-02 CSU 1803 - 2016 - [同余]