当前位置:网站首页>ARC117E Zero-Sum Ranges 2
ARC117E Zero-Sum Ranges 2
2022-07-30 13:17:00 【心怀凉月】
ARC117E Zero-Sum Ranges 2
将区间和为零转换为前缀和相等,类似于这种东西:

答案显然是每层个数 k k k, k ( k − 1 ) 2 \frac{k(k-1)}{2} 2k(k−1) 的和。
考虑按层从上往下 DP,注意到前缀和相等的位置必然不相邻,并且两个位置中间都是一个峰或者坑,坑表示下一层必填。
记 f i , j , k f_{i,j,k} fi,j,k 表示从上往下当前有 i i i 个数,形成的相等对有 j j j 个,要填的坑有 k k k 个。
考虑转移,枚举下一层添加 x x x 个数: f i , j , k → f i + x , j + x ( x − 1 ) 2 , x − ( k + 2 ) f_{i,j,k}\to f_{i+x,j+\frac{x(x-1)}{2},x-(k+2)} fi,j,k→fi+x,j+2x(x−1),x−(k+2),系数为 C x − 1 k + 1 C_{x-1}^{k+1} Cx−1k+1(根据插板法)。
枚举一下变量合并零界上下即可。
时间复杂度 O ( n 5 ) \mathcal O(n^5) O(n5)。
#include<bits/stdc++.h>
using namespace std;
#define int long long
typedef long long ll;
#define ha putchar(' ')
#define he putchar('\n')
inline int read() {
int x = 0, f = 1;
char c = getchar();
while (c < '0' || c > '9') {
if (c == '-')
f = -1;
c = getchar();
}
while (c >= '0' && c <= '9')
x = (x << 3) + (x << 1) + (c ^ 48), c = getchar();
return x * f;
}
inline void write(int x) {
if (x < 0) {
putchar('-');
x = -x;
}
if (x > 9)
write(x / 10);
putchar(x % 10 + 48);
}
int n, k, f[105][1005][105], c[105][105];
signed main() {
n = read(), k = read();
for (int i = 0; i <= n + 1; ++i) {
c[i][0] = c[i][i] = 1;
for (int j = 1; j <= i; ++j) c[i][j] = c[i - 1][j] + c[i - 1][j - 1];
}
for (int i = 1; i <= 2 * n + 2; ++i) f[i][i * (i - 1) / 2][i - 1] = 1;
for (int i = 0; i <= 2 * n + 2; ++i)
for (int j = 0; j <= n * n + 1; ++j)
for (int l = 0; l <= n + 2; ++l) {
if (f[i][j][l] == 0) continue;
for (int x = l + 2; x <= 2 * n + 2; ++x) {
int nxt = j + x * (x - 1) / 2;
if (nxt > k) break;
f[i + x][nxt][x - (l + 2)] += f[i][j][l] * c[x - 1][l + 1];
}
}
ll ans = f[2 * n + 1][k][0];
for (int i = 0; i <= 2 * n + 1; ++i)
for (int j = 0; j <= k; ++j)
for (int l = 1; l <= n; ++l)
ans += f[i][j][l] * f[2 * n + 1 - i][k - j][l - 1];
write(ans), he;
return 0;
}
边栏推荐
- dolphinscheduler单机化改造
- 12、 学习MySQL 排序
- 【微信小程序】一文带你搞懂小程序的页面配置和网络数据请求
- [PostgreSQL] - Storage structure and cache shared_buffers
- R语言ggpubr包的ggboxplot函数可视化分组箱图、自定义移除可视化图像的特定对象(移除可视化图像轴坐标轴的刻度线标签文本、both x and y axis ticks labels)
- R语言ggplot2可视化:使用ggpubr包的ggboxplot函数可视化分组箱图、使用ggpar函数改变图形化参数(ylim、修改可视化图像y轴坐标轴数值范围)
- 机器学习——特征选择
- Scala基础:数组(Array)、映射(Map)、元组(Tuple)、集合(List)
- R语言向前或者向后移动时间序列数据(自定义滞后或者超前的期数):使用dplyr包中的lag函数将时间序列数据向后移动一天(设置参数n为负值)
- shell script flow control statement
猜你喜欢

Yilian: Activating the Value Potential of Data Elements and Unleashing the Innovation Dividend of SAS SSD

监控界的最强王者,没有之一!

Greenplum 6.0有哪些不可错过的硬核升级与应用?

There is no one of the strongest kings in the surveillance world!

svg波浪动画js特效代码

shell 编程规范与变量

C语言学习练习题:汉诺塔(函数与递归)

jsArray array copy method performance test 2207300823

PyQt5快速开发与实战 8.6 设置样式

dbaplus丛书丨《MySQL DBA工作笔记》限量签名版来了!
随机推荐
一本通循环结构的程序设计题解(2)
【23考研】408代码题参考模板——链表
R语言使用方差分析ANOVA比较回归模型的差异、anova函数比较两个模型并报告它们是否存在显著差异(两个模型的数据相同,一个模型使用的预测特征包含另外一个模型的特征)
[PostgreSQL] - 存储结构及缓存shared_buffers
【自校正控制】自校正PID
IDEA 重复代码快速重构(抽取重复代码快捷键)
Apache Log4j2漏洞
R语言ggplot2可视化:使用ggpubr包的ggboxplot函数可视化分组箱图、使用ggpar函数改变图形化参数(xlab、ylab、改变可视化图像的坐标轴标签内容)
RTSP/Onvif协议视频平台EasyNVR服务一键升级功能的使用教程
matlab画图,仅显示部分图例
js男女身高体重关系图
湖仓一体电商项目(一):项目背景和架构介绍
PyQt5快速开发与实战 8.6 设置样式
58. 最后一个单词的长度
dbaplus丛书丨《MySQL DBA工作笔记》限量签名版来了!
SQL 改写系列七:谓词移动
jsArray数组复制方法性能测试2207292307
Eleven BUUCTF questions (06)
基于柔性人机接口的人机协调运动控制方法
Raja Koduri澄清Arc GPU跳票传闻 AXG年底前新推四条产品线