陨石的秘密

题目链接:
https://www.acwing.com/problem/content/319/

题目描述

提取题目大意:

构造 L1对{},L2对[],L3对() 组成的深度为D的括号序列,求方案数。
并且中括号里不能有大括号,小括号里不能有中括号和大括号。
思路:考虑“第一段”括号序列(它作为一个整体,只能是{} [] 或 (),不能是其他)即划分成 {A}B、[A]B 或 (A)B,其中 A,B 是子问题。

我们没有必要枚举每一段的确切深度。
可以用a[i,j,k,l]表示深度不超过i,由j对{},k对[],l对()组成的括号序列数量。
最终答案变为 a[D,L1,L2,L3] - a[D-1,L1,L2,L3]
转移简化为:枚举第一段的最外层括号和枚举第一段的三种括号数
时间复杂度为 O(D*n^6)‘
但数据范围为
0≤L1,L2,L3≤10;
0≤D≤30。
是绰绰有余的

代码:

#include<iostream>
#include<algorithm>
using namespace std;
int a[31][11][11][11];
int L1, L2, L3, D;
int main() {cin >> L1 >> L2 >> L3 >> D;for (int i = 0; i <= D; i++) {a[i][0][0][0] = 1;}for (int i = 1; i <= D; i++) {for (int j = 0; j <= L1; j++) {for (int k = 0; k <= L2; k++) {for (int o = 0; o <= L3; o++) {if (j > 0) {for (int p = 1; p <= j; p++)for (int q = 0; q <= k; q++)for (int r = 0; r <= o; r++)a[i][j][k][o] = (a[i][j][k][o] + a[i - 1][p - 1][q][r] * a[i][j - p][k - q][o - r]) % 11380;}if (k > 0) {for (int q = 1; q <= k; q++)for (int r = 0; r <= o; r++)a[i][j][k][o] = (a[i][j][k][o] + a[i - 1][0][q - 1][r] * a[i][j][k - q][o - r]) % 11380;}if (o > 0) {for (int r = 1; r <= o; r++)a[i][j][k][o] = (a[i][j][k][o] + a[i - 1][0][0][r - 1] * a[i][j][k][o - r]) % 11380;}}}}}if (D) {cout << (a[D][L1][L2][L3] - a[D - 1][L1][L2][L3] + 11380) % 11380 << endl;}else {cout << (a[D][L1][L2][L3] +11380) % 11380 << endl;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/870085.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Xorto

给定一个长度为n的整数数组,问有多少对互不重叠的非空区间,使得两个区间内的数的异或和为0。暴力,每次找一个中点,找左右两边异或值一样的区间 #include<bits/stdc++.h> #define int long long #define TEST #define TESTS int _; cin >> _; while(_--) using…

【OAuth2框架】理解和实战 OAuth2 认证授权

你知道互联网大厂最怕的是什么吗?但凡有点这样的风吹草动,我们就要花费大量的时间进行修复和上线。一点都不敢耽误,对于紧急类型的,基本当天发现,当天就要升级上线。那是什么问题呢?🤔 其实最怕的就是各类组件漏洞! 有这么一个东西,13scan - 安全漏洞扫描 它可以扫描…

2025.1.15——1200

2025.1.15——1200Q1. 1200 简单来说就是给定3个数组,每个数组选择一个数,三者下标不同,问三者和的最大值。 Winter holidays are coming up. They are going to last for \(n\) days. During the holidays, Monocarp wants to try all of these activities exactly once wi…

【附源码】JAVA大学生竞赛管理系统源码+SpringBoot+VUE+前后端分离

学弟,学妹好,我是爱学习的学姐,今天带来一款优秀的项目:大学生竞赛管理系统 。 本文介绍了系统功能与部署安装步骤,如果您有任何问题,也请联系学姐,偶现在是经验丰富的程序员! 一. 系统演示 系统测试截图系统视频演示https://githubs.xyz/show/343.mp4二. 系统概述【 系…

Ubuntu升级Linux内核教程

本文作者CVE-柠檬i:https://www.cnblogs.com/CVE-Lemon 本文使用的方法是dpkg安装,目前版本为5.4.0-204,要升级成5.8.5版本下载 下载网站:https://kernel.ubuntu.com/mainline/ 在该网站下载deb包,选择自己想要升级的版本,这里是5.8.5https://kernel.ubuntu.com/mainline/…

psSign、random推导

入口:传递的参数值:sign函数 function() {var _0x36c5d3 = _0x79c1ce;let _0x479298 = arguments[_0x36c5d3(0x5a9, PHXL)] > 0x0 && void 0x0 !== arguments[0x0] ? arguments[0x0] : {};try {var _0x1a6f66;if (!_0x32d6a8[_0x36c5d3(0x4d7, l!Uo)][_0x36c5d3(…

渗透测试中如何反编译JAR

反编译是渗透测试中的重要环节之一。 通过反编译,我们可以得到程序的项目结构、相关资源以及配置的数据库等信息。 本文以常见SpringBoot项目为例,对其进行反编译。 Spring Boot 是一个基于 Spring 的框架,旨在简化 Spring 应用的配置和开发过程,通过自动配置和约定大于配置…

专项训练2

贪心专题 1. [NOIP2015 普及组] 推销员 link:https://www.luogu.com.cn/problem/P2672 思路跟正解大差不差,但想的有点复杂了。先把所有的按疲劳值排个序,(这样省却了找最大疲劳值的过程),然后只用考虑第x大的和后面距离+疲劳值最大值的比较即可(累了,不想写了) 2. Tw…

vue2子组件获取父组件的实例以及数据,vue2子组件获取父组件的数据

多个组件引入同一个js文件,实例化对象,数据不会错乱,再引入相同的组件,例如每个页面都需要引入到一个分页组件,然后分页组件需要获取各自父组件中的实例对象 通过 this.$parent 即可获取到父组件中的数据 所以在使用子组件时可以不用在组件上传入数据 公共js文件functi…

专利申请审批流程

依据专利法,发明专利申请的审批程序包括受理、初审、公布、实审以及授权五个阶段。实用新型或者外观设计专利申请在审批中不进行早期公布和实质审查,只有受理、初审和授权三个阶段。 发明、实用新型和外观设计专利的申请、审查流程图如下:

深入理解第二范式(2NF):提升数据库设计的有效性与灵活性

title: 深入理解第二范式(2NF):提升数据库设计的有效性与灵活性 date: 2025/1/16 updated: 2025/1/16 author: cmdragon excerpt: 数据库的规范化是确保数据完整性和消除数据冗余的关键过程。第二范式(2NF)是关系数据库设计中的重要概念,进一步建立在第一范式的基础之上…