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

CF1485F Copy or Prefix Sum 分析

题目概述

给定一个整数数组 \(b_1, b_2, \ldots, b_n\)

如果一个整数数组 \(a_1, a_2, \ldots, a_n\) 满足对于每个 \(i\)\(1 \leq i \leq n\)),至少满足以下两个条件之一:

  • \(b_i = a_i\),或者
  • \(b_i = \sum_{j=1}^{i} a_j\)

则称该数组为“混合数组”。

请你计算有多少个“混合数组” \(a_1, a_2, \ldots, a_n\)。由于答案可能很大,请输出对 \(10^9 + 7\) 取模后的结果。

数据范围:\(1\leq n\leq 10^5\)

分析

套路地设 \(f_{i,j}\) 表示前 \(i\) 个都填了其和 \(j\) 的方案。

有:

  • \(a_i=b_i\),所以 \(f_{i,j}=f_{i-1,j-b_i}\)
  • \(b_i=\sum a_j\),所以 \(f_{i,b_i}=f_{i-1,x}\),其中 \(x\) 为任意数。

考虑到这样存会炸,而 \(x\) 显然只是和出现过的数相关,直接用 \(map\)

第一个情况相当于位移,第二个情况相当于全局和。

所以考虑维护全局和,第一种情况对全局和不会造成影响,而第二种情况会对全局和贡献上一个的全局和除开上一个本身(应为第二种情况需要覆盖第一种情况)。

直接做就行了。

代码

时间复杂度 \(\mathcal{O}(n\log n)\)

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <stdlib.h>
#include <vector>
#include <map>
#define int long long
// #define N 
using namespace std;
const int mod = 1e9 + 7;
map<int,int> f;
signed main(){int T;cin >> T;for (;T--;) {f.clear();int n,res = 0,ans;ans = f[0] = 1;scanf("%lld",&n);for (int x;n --;) {scanf("%lld",&x);int val = ans - f[res];f[res] = ans;ans = ((ans + val) % mod + mod) % mod;res -= x;}printf("%lld\n",ans);}return 0;
}
http://www.zskr.cn/news/45818.html

相关文章:

  • 在电脑上操作手机,并把手机黑屏 - 昵
  • 如何确保安全的就是​HTTPS
  • Paytium 3.0.13 WordPress插件存储型XSS漏洞分析
  • 使用爬虫技术抓取网站数据的方法和工具
  • 20232419 2025-2026-1 《网络与系统攻防技术》实验四实验报告
  • svn提交显示is out of date
  • MacX DVD Ripper Pro for Mac v6.8.2 安装教程|MacDVD转换软件怎么安装?
  • CSP2025 T3 replace
  • 日志 | 2025.11
  • 完整教程:【C++】继承(1)
  • 高级语言程序第四次作业 - 102300317
  • 打印机出现print job cancled at printer
  • [ARC107D] Number of Multisets 分析
  • 2025年3000卫生纸加工设备推荐排行
  • 项目管理系统开发指导
  • 2025年做工精细的小白瓶前置过滤器哪家靠谱
  • 2025年11月滑梯厂家推荐榜: 解锁安全户外滑梯/不锈钢滑梯/组合滑梯/非标滑梯/儿童滑梯趣味游乐新体验
  • 2025年资深的大型展厅设计渠道哪家强
  • 2025年超融合渠道口碑推荐榜
  • day24-langgraph基础
  • 2025年毛发检测企业推荐排行榜单
  • 2025年资深的青少年心智成长训练企业哪家强
  • Cuda C++:Tensor Core 数值行为分析之测试复现
  • 推荐几家城际出行网约车公司
  • WORK 4
  • 2025年知识付费软件平台不踩坑:五星推荐创客匠人,知识店铺搭建/知识内容变现系统/在线教育SaaS平台/线上卖课平台/AI赋能和陪跑服务双保障
  • 校园二手物品交易平台
  • pytorch、torchaudio、torchvideo版本对应关系
  • 微信小程序开发过程中,体验版调试模式是一个非常实用的功能,尤其适用于测试人员、产品或团队成员在正式发布前进行作用验证。以下是对微信小应用“体验版调试模式”的详细设置说明,包括操作步骤等
  • 【四级】全国大学英语四级历年真题及答案解析PDF电子版(2015-2025年6月) - 详解