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

题解:AT_agc052_c [AGC052C] Nondivisible Prefix Sums

题意:很简单了,不再赘述。

做法:

首先去掉一种很明显不行的方案即数的和为 \(P\) 的倍数,那不为 \(P\) 的倍数的有多少种呢?

因为不像正常的一样有 \(a_i=0\),不能说每次后面怎么填都有唯一一个对应,我们考虑记两个东西 \(f,g\) 代表长度为 \(n\) 的序列有多少个模 \(P\)\(0\) 的和不为 \(0\) 的,有转移式:

\[f_{i+1} = g_i \]

\[g_{i+1}=f_{i} + \frac{P-2}{P-1}g_i \]

然后我们就要算有多少个和不为 \(P\) 倍数且满足条件的数组。

首先我们不妨设最多的为 \(1\),如果不是我们乘上众数的逆元即可。

那么我们想一个事情,最后的序列一定是形如一段 \(1\) 然后间隔一个非 \(1\) 的数 \(b_i\),其实等同于我们一直在按 \(1\) 这样的小步在长度为 \(P\) 的环上走,然后一个大步,那我们的大步肯定是尽量用来跨过 \(0\) 的位置,因此我们其实可以很方便地得出来一个必要条件,假设有 \(k\) 个非 \(1\) 的元素 \(b_1,b_2\cdots b_k\),我们肯定要满足 \(n-k\le\sum\limits_{i=1}^k{P-b_i} + P-1\) 的,可以很方便用构造证明必要性。

那么是否一定是充分的呢?我们考虑反证,如果这个必要条件不成立,那么就要求我这个序列总和一定是至少为 \(\sum\limits_{i=1}^k{P-b_i} + P + \sum\limits_{i=1}^k b_i = P(k+1)\),同时不能是 \(P\) 的倍数,所以我们需要跨过 \(0\) 这个位置 \(k+1\) 次,但是只有 \(k\) 个数帮我们跨,所以矛盾了,充分性证毕。

然后我们就可以用这个条件去计算,计算合法的比较困难,我们考虑计算不合法的,这样右侧的柿子就直接被限制在 \(n\) 的范围内了,可以直接跑背包算右边的东西。注意到 \(P-b_i\) 其实是一个区间状物,所以可以前缀和优化做到 \(O(n^2)\)

那么还剩最后一步,因为我们 dp 出来这个东西是没有加入众数排位置的,所以对于 \(dp_{i,j}\)\(b\) 用了 \(i\) 个数且 \(\sum P-b_k = j\),要求 \(n-i-j\) 这个东西不能是 \(P\) 的倍数,贡献为 \(dp_{i,j}\times\binom{n}{i}\times(P-1)\),最后这个 \(P-1\) 是众数有 \(P-1\) 种。

按上述过程计算即可。

http://www.zskr.cn/news/9819.html

相关文章:

  • 2025年9月22日 - 20243867孙堃2405
  • 二进制 - 20243867孙堃2405
  • 如何让AI生成多页面APP原型图?AI原型设计实用指南
  • 代码随想录算法训练营第五天 | leetcode 242 349 202 1
  • 原码补码反码与位操作
  • 特殊句式
  • RAG系统嵌入模型怎么选?选型策略和踩坑指南
  • (应该写的比较清晰)D2. Max Sum OR (Hard Version)
  • Linux运维
  • day001
  • # Xilnx FPGA 资源结构
  • 借助S参数测量评估电容器阻抗第 2 部分
  • 实战:Android 自定义菊花加载框(带超时自动消失) - 教程
  • 超级恶心的题面 [USACO21OPEN] Portals G
  • 昆仑通态触摸屏保存参数到内部存储器并读取的方法成都控制器开发提供
  • 使用reCAPTCHA提升WordPress网站安全性 - 指南
  • LaTeX入门:10分钟掌握核心用法 - 详解
  • Codeforces 2127 D(图论,组合数学,DFS,分类讨论)
  • 每日报告-关于本学期的计划
  • 若依前后端分离版本二次开发(一 搭建开发环境,新建模块)
  • 每日博客
  • STM32HAL 飞快入门(十九):UART 编程(二)—— 中断方式实现收发及局限分析
  • 详细介绍:uniapp | u-waterfall实现瀑布流商品列表(支持筛选查询)
  • 负载分析和排查六
  • 6月6日证书 - 工信部人才交流中心PostgreSQL中级PGCP高级PGCM认证
  • 【下一款产品】
  • # MySQL索引结构发展历史:从B树到B+树的演进之路
  • 通过ML.Net调用Yolov5的Onnx模型
  • 元宇宙与零售业变革:沉浸式体验重构消费全链路 - 指南
  • c# 反射动态添加Attribute