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

2025牛客暑期多校第4场——G

在这里插入图片描述

考虑一个序列最中间的左括号和右括号,如果这两个交换那么序列是不合法的,由此可以猜测确定操作序列唯一确定的条件。利用一种抽象的前缀和,把左括号看成 111 ,右括号看成 −1-11 ,对于一个左括号,如果和一个右括号中间的有一个前缀和是 <2<2<2 的,那么操作序列就可以唯一确定,每次枚举左括号位置,计算合法方案数求和即可.

为什么每个左括号都可以计算答案,因为一个合法序列的左括号都有一个右括号与之匹配

#pragma GCC optimize(3,"Ofast","inline")
#include<bits/stdc++.h>
using namespace std;
using i64 = long long;
using i128 = __int128;constexpr int mod = 998244353;
constexpr int maxn = 1e6+10;
int pre[maxn];
i64 qp(i64 a,i64 b){i64 ans = 1;while(b){if(b&1) ans = ans*a%mod;b>>=1;a = a*a%mod;}return ans;
}
void solve(){string s;cin>>s;for(int i = 0;i<s.size();++i){pre[i+1] = pre[i]+(s[i]=='('?1:-1); }int n = s.size();i64 ans = qp(2,n>>1);int cntl=n/2, cntr = 1,cntrr=1;for(int i = s.size()-2;i>=0;--i){if(pre[i+1]<2){cntr=cntrr;}if(s[i]=='(') cntl--;else cntrr++;if(s[i]=='('){(ans+=qp(2,cntl+cntr))%=mod;}}cout<<ans*qp(qp(2,n),mod-2)%mod<<"\n";
}signed main(){ios::sync_with_stdio(0);cin.tie(0);int t=1;//cin>>t;while(t--) solve();return 0;
}
http://www.dtcms.com/a/300161.html

相关文章:

  • Polyhedral Approaches in Combinatorial Optimization组合优化中的多面体方法(下)
  • Java实现大根堆与小根堆详解
  • 每日面试题15:如何解决堆溢出?
  • 如何检查服务器数据盘是否挂载成功?
  • Android-三种持久化方式详解
  • 【硬件-笔试面试题】硬件/电子工程师,笔试面试题-32,(知识点:模数转换器,信噪比,计算公式,)
  • 深入理解C语言快速排序与自省排序(Introsort)
  • 【每天一个知识点】GAN(生成对抗网络,Generative Adversarial Network)
  • Compose笔记(三十八)--CompositionLocal
  • 安卓学习记录1——持续更新ing
  • React组件中的this指向问题
  • 三防平板支持DMR对讲有什么用?实现高效集群调度
  • 如何理解“测试场景”与“测试要点”的区别和联系?
  • Linux系统架构核心全景详解
  • 从0到1学Pandas(六):Pandas 与数据库交互
  • KiCad 与 CircuitMaker 使用方法分享:从零开始学电子设计
  • JavaWeb(苍穹外卖)--学习笔记11(Filter(过滤器) 和 Interceptor(拦截器))
  • Windows开发,制作开发软件安装程序(一)
  • MySQL的底层原理--InnoDB数据页结构
  • 关于GateWay网关
  • 基于HMM的词性标注方法详解(HMM+Viterbi,例题分析)
  • 【专业扫盲】电压/电流反馈和串联/并联反馈
  • CSP2025模拟赛2(2025.7.26)
  • 机器人仿真(2)Ubuntu24.04下RTX5090配置IsaacSim与IsaacLab
  • Jenkins持续集成工具
  • swagger基本注解@Tag、@Operation、@Parameters、@Parameter、@ApiResponse、@Schema
  • (1-7-4) MySql 的高级查询
  • 20250726-2-Kubernetes 网络-Service 定义与创建_笔记
  • 【Spring Cloud】微服务学习
  • 超时进行报警例子