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

贪心+构造,CF1153 C. Serval and Parenthesis Sequence

一、题目

1、题目描述

2、输入输出

2.1输入

2.2输出

3、原题链接

Problem - 1153C - Codeforces


二、解题报告

1、思路分析

对于括号匹配问题我们经典做法是左括号当成1,右括号当成-1

那么只要任意前缀非负且最终总和为0那么该括号序列就是合法

对于本题,由于我们要保证任意前缀都不合法,所以任意严格前缀和都是正数(如果出现负数那么说明非法,如果为0则不满足本题要求)

所以前缀和要尽可能大

我们把'?’当成-1,预处理后缀和

遍历序列,如果当前sum + suf[i] < 0,说明我们还需添加左括号

否则添加右括号

如果中途存在sum <= 0且i != n -1说明非法

最后输出前如果sum != 0也说明无解

2、复杂度

时间复杂度: O(N)空间复杂度:O(N)

3、代码详解

 ​
#include <bits/stdc++.h>
using i64 = long long;
using i128 = __int128;
using PII = std::pair<int, int>;std::ostream& operator<< (std::ostream& out, i128 x) {std::string s;while (x) s += ((x % 10) ^ 48), x /= 10;std::reverse(s.begin(), s.end());return out << s;
}void solve() {int N;std::string s;std::cin >> N >> s;if (N & 1) {std::cout << ":(";return;}std::vector<int> suf(N + 1);std::unordered_map<char, int> mp;mp['('] = 1, mp[')'] = -1, mp['?'] = -1;for (int i = N - 1; ~i; i -- ) suf[i] = suf[i + 1] + mp[s[i]];int sum = 0;for (int i = 0; i < N; i ++ ) {if (s[i] == '?') {if (sum + suf[i] < 0) sum ++, s[i] = '(';else sum --, s[i] = ')';}else sum += mp[s[i]];if (sum <= 0 && i + 1 < N) {std::cout << ":(";return;}}if (!sum) std::cout << s;else std::cout << ":(";
}   int main(int argc, char** argv) {std::ios::sync_with_stdio(false), std::cin.tie(0), std::cout.tie(0);int _ = 1;// std::cin >> _;while (_ --)solve();return 0;
}

http://www.lryc.cn/news/371212.html

相关文章:

  • 网络安全等级保护基本要求 第1部分:安全通用要求
  • ubuntu22.04防火墙策略
  • selenium的使用教程
  • Centos: ifconfig command not found且ip addr查不到服务器IP
  • WPF学习(2)--类与类的继承2-在窗口的实现
  • Docker面试整理-Docker容器与虚拟机比较,安全性如何?
  • Python私教张大鹏 Vue3整合AntDesignVue之Checkbox 多选框
  • flutter 导出iOS问题3
  • 用winform开发一个笔记本电脑是否在充电的小工具
  • 构建汛期智慧水利新生态:EasyCVR视频汇聚监控综合管理方案解析
  • linux中HADOOP_HOME和JAVA_HOME删除后依然指向旧目录
  • C++中的结构体——结构体案例1_2
  • python接入汇率换算工具提高网站/小程序日活度
  • Ubuntu 网络重置
  • 防护DDoS攻击出现的常见误区
  • 入门 Axure RP 9 | 原型设计基础教程
  • 一线大厂都在高薪抢AI产品经理?
  • html实现粘贴excel数据,在页面表格中复制
  • WPF视频学习-简单应用篇图书馆程序(一)
  • Java+前端+Vue 后端Spring boot 开发的全套UWB定位方案,0.1米高精度定位系统源码
  • Mysql查询分析工具Explain的使用
  • OpenCV中的圆形标靶检测——findCirclesGrid()(一)
  • 2025广州眼博会,2025广东省眼睛健康及眼科产业展览会
  • Vue3 自定义渲染器 API createRenderer()(七)
  • 二分+ST表+递推,Cf 1237D - Balanced Playlist
  • 被裁员不可怕,可怕的是你只会写代码!
  • 服务器之间的时间如何保证一致
  • 算法体系-20 第二十节暴力递归到动态规划
  • 字符集相关变量理解
  • 618哪些数码产品比较好?2024超高人气产品推荐!