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

题解:洛谷 CF149D Coloring Brackets

本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。欢迎大家订阅我的专栏算法题解C与Python实现附上汇总贴算法竞赛备考冲刺必刷题C | 汇总【题目来源】洛谷CF149D Coloring Brackets - 洛谷【题目描述】给出一个配对的括号序列如 “(())() \texttt{(())()}(())()”、“() \texttt{()}()” 等“)() \texttt{)()})()”、“(() \texttt{(()}(()”是不符合要求的对该序列按照以下方法染色。一个括号可以染成红色、蓝色或者不染色。一对匹配的括号需要且只能将其中一个染色。相邻两个括号颜色不能相同但都可以不染色。求符合条件的染色方案数对1000000007 10000000071000000007取模。【输入】一行一个字符串s ss表示括号序列2 ⩽ ∣ s ∣ ⩽ 700 2 \leqslant |s| \leqslant 7002⩽∣s∣⩽700。【输出】一个数字表示染色的方案数对1000000007 10000000071000000007取模。【输入样例】(())【输出样例】12【算法标签】#提高plus #区间DP【代码详解】#includebits/stdc.husingnamespacestd;#defineintlonglongconstintN705,mod1e97;// 定义常量和模数intn,match[N],ans;// n: 括号序列长度match: 匹配括号的位置ans: 答案intf[N][N][3][3];// DP数组f[i][j][x][y]表示区间[i,j]的染色方案数i染x色j染y色string s;// 括号序列stackintstk;// 用于括号匹配的栈signedmain(){cins;// 输入括号序列ns.length();// 获取长度s s;// 在字符串前加空格使下标从1开始for(inti1;in;i)// 括号匹配{if(s[i]()// 左括号入栈stk.push(i);else{// 右括号匹配match[stk.top()]i;// 记录匹配位置match[i]stk.top();stk.pop();// 弹出栈顶左括号}}// 区间DPfor(intlen2;lenn;len)// 枚举区间长度for(inti1;ilen-1n;i)// 枚举区间起点{intjilen-1;// 区间终点if(i1j)// 区间长度为2即一对括号{// 相邻括号的合法染色方案f[i][j][0][1]f[i][j][0][2]f[i][j][1][0]f[i][j][2][0]1;continue;}if(match[i]j)// i和j是匹配的括号{for(intx0;x2;x)for(inty0;y2;y){// 枚举内部区间的染色if(y!1)// 右括号不能染1f[i][j][0][1](f[i][j][0][1]f[i1][j-1][x][y])%mod;if(y!2)// 右括号不能染2f[i][j][0][2](f[i][j][0][2]f[i1][j-1][x][y])%mod;if(x!1)// 左括号不能染1f[i][j][1][0](f[i][j][1][0]f[i1][j-1][x][y])%mod;if(x!2)// 左括号不能染2f[i][j][2][0](f[i][j][2][0]f[i1][j-1][x][y])%mod;}}else// i和j不匹配{intkmatch[i];// i的匹配位置for(intx0;x2;x)for(inty0;y2;y)for(intp0;p2;p)for(intq0;q2;q){// 枚举四个端点的颜色if((p1q1)||(p2q2))// 相邻颜色不能相同continue;f[i][j][x][y](f[i][j][x][y]f[i][k][x][p]*f[k1][j][q][y]%mod)%mod;}}}// 统计答案for(inti0;i2;i)for(intj0;j2;j)ans(ansf[1][n][i][j])%mod;// 累加所有染色方案coutansendl;// 输出答案return0;}【运行结果】(()) 12
http://www.zskr.cn/news/1414617.html

相关文章:

  • 下载无水印短视频的工具推荐,亲测一圈给你交底
  • 四川高考志愿填报机构避坑指南:5个问题问完再交钱
  • 为什么聚簇索引数据物理存储按聚簇索引排序?
  • 基于Arduino与DTMF解码技术,打造离线智能音频门锁系统
  • 不止是打包:用Player面板配置提升你的Unity游戏专业度(从图标到启动动画全流程)
  • 我用 AI 写了一个完整的电商系统,只用了 3 天!2026 年 AI 编程终极指南(附完整代码 + 工具对比)
  • 解决Mentor许可冲突,让您的业务无缝运行
  • Docker 部署 MongoDB / MySQL / PostgreSQL 安全加固实录:TLS 双向认证、双因素鉴别与审计
  • RedisDesktopManager Windows版:免费高效的Redis可视化管理工具终极指南
  • Botty:暗黑破坏神2重制版自动化工具完整技术指南与实现原理深度解析
  • 大模型时代已来临!小白程序员必备:收藏这份AI前端转型指南
  • 2026年第二季度GEO服务商按预算选型指南:
  • 【紧急避坑指南】:Gemini 1.5 Pro在东南亚小语种(泰/越/印尼)翻译中隐藏的5类事实性谬误
  • 将Hermes Agent自定义提供方指向Taotoken的配置指南
  • 超详细!uni-app Android本地打包傻瓜式教程(转载)
  • 2026年AI大模型API接口中转站排行榜:主流服务商性能与成本权威实测排名
  • 【Sora 2 3D场景生成革命性突破】:20年AIGC架构师亲测的5大工业级落地陷阱与避坑指南
  • 定制款重锤式电阻测试仪,真能满足特殊工位的各类检测需求?
  • 手写签名解决方案终极指南:如何用signature_pad快速构建专业的电子签名功能
  • 如何快速掌握UEFI固件分析:专业工具完整使用指南
  • 新手首次使用Taotoken从注册获取API Key到完成第一次调用的全流程
  • 如何快速下载B站4K高清视频:bilibili-downloader终极指南
  • 820亿Credits等于多少Tokens?
  • 通达信缠论插件:让复杂技术分析变得简单直观
  • 别再写死负责人了!Flowable候选人组实战:用Java代码搞定研发部请假审批
  • RPG Maker解密实战:3步提取加密游戏资源的完整指南
  • Cursor AI Pro破解工具:3步解锁永久VIP功能的终极指南
  • 从摩尔定律到韬定律:半导体产业六十年的范式转移
  • 在Taotoken模型广场对比并选用合适大模型的实际体验
  • 完整记录一套学生智慧平台渗透全流程