首页 > 其他分享 >陨石的秘密

陨石的秘密

时间:2025-01-16 13:09:56浏览次数:1  
标签:11 int 陨石 秘密 括号 L2 L3 L1

题目链接:
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;
    }
}

标签:11,int,陨石,秘密,括号,L2,L3,L1
From: https://www.cnblogs.com/jumaoxiangrijui/p/18674784

相关文章

  • 3分钟搞懂Arrow Flight SQL,让数据传输提速100倍的秘密
    3分钟搞懂ArrowFlightSQL,让数据传输提速100倍的秘密数据传输提速100倍!如何做到100倍提升?让数据传输起飞!小结此时,数据分析师小华揉着发酸的眼睛,望着电脑屏幕发呆。他忍不住抱怨道:“这数据导出也太慢了吧!”是的,又一次等待MySQL协议传输大批量数据,这感觉像是用吸管......
  • JVM内存模型:Java的秘密引擎
    Java虚拟机(JVM)内存模型是Java程序性能优化和代码调优的核心。理解JVM内存模型对于编写高效、稳定的Java程序至关重要。1.1JVM内存模型概述JVM内存模型定义了Java程序中变量的存储位置以及变量在不同线程间可见性、访问权限等规则。它包括以下几个主要部分:方法区(MethodAr......
  • 性能分析工具:Java的秘密探测器
    Java性能分析工具是开发人员用于监控、分析和优化Java应用程序性能的必备工具。以下是一些常用的Java性能分析工具及其特点:1.JProfilerJProfiler是一款功能强大的Java性能分析和调优工具,它提供了深入分析Java应用程序的性能指标的能力,包括CPU分析、内存分析和线程分析。JPr......
  • 代码优化技巧:Java的秘密加速器
    代码优化是提升Java应用程序性能的关键环节。以下是一些有效的代码优化技巧,它们可以被视为Java的秘密加速器:1.选择合适的数据结构和算法选择合适的数据结构和算法对于优化Java性能至关重要。不同的数据结构和算法在时间和空间复杂度上存在差异,因此需要根据具体需求进行选择......
  • 学霸的秘密武器:个人知识库搭建指南
    在信息爆炸的时代,知识如同海洋般浩瀚无垠。如何在这片知识的海洋中高效地获取、整理和应用信息,成为了每一位追求卓越的学习者必须面对的课题。学霸们之所以能够脱颖而出,往往得益于他们高效的学习方法和强大的知识管理能力。其中,个人知识库的搭建,便是他们的秘密武器之一。本文将详......
  • 云平台运维监控套件:确保业务稳定运行的秘密武器
    云平台运维监控套件:确保业务稳定运行的秘密武器随着云计算技术的蓬勃发展,越来越多的企业选择将业务迁移到云端,以享受弹性扩展、高可用性和成本效益等优势。然而,云平台环境的复杂性和多样性也给运维工作带来了前所未有的挑战。为了应对这些挑战,一套高效、全面的云平台运维监......
  • 软件架构师的秘密武器:23个经典案例助你轻松驾驭复杂系统
    设计模式的重要性设计模式,听起来挺高大上的,但其实它就是一些解决常见编程问题的“套路”或“模板”。想象一下你在做饭,有时候你会按照某个固定的步骤来做一道菜,这样既能保证味道好,又省时省力。设计模式在编程中也是这样的作用。设计模式提供了一套经过验证的解决方案,可以在不......
  • 解锁C#数据库编程性能优化的秘密——从基础到高级技巧全解析
    在当今数据驱动的世界中,数据库操作的性能直接关系到应用程序的整体响应速度和用户体验。对于C#开发者来说,掌握数据库编程的性能优化技巧不仅是提高工作效率的关键,更是确保系统稳定运行的重要保障。今天,我们将一起揭开C#数据库编程性能优化的秘密,带你从基础走向高级,探索如何......
  • Linux内核的固定映射:提升性能的秘密武器
    在当今数字化时代,高效稳定的Linux内核是众多技术应用的基石。你是否好奇,如何让Linux内核在复杂任务中实现卓越性能?今天,我们要揭开其提升性能的秘密武器——固定映射。它就像一位默默发力的幕后英雄,通过独特的机制,优化内核内存访问,让系统运行如丝般顺滑。下面,让我们一同走......
  • 提升效率的秘密武器:【2025年】8款最佳项目管理软件推荐
    在当今竞争激烈的商业环境中,高效的项目管理对于企业的成功至关重要。无论是大型企业还是小型团队,都需要借助合适的项目管理工具来优化流程、提高协作效率、确保项目按时交付。今天,我们将为大家介绍2025年的8款最佳项目管理软件,它们涵盖了不同类型的工具,能够满足各种规模和行业的......