(2016弱小联盟十一专场10.3)Parentheses 找规律

2024-02-05 02:38

本文主要是介绍(2016弱小联盟十一专场10.3)Parentheses 找规律,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Parentheses
Input: Standard Input
Time Limit: See AtCoder
Dave loves strings consisting only of (' and)’. Especially, he is interested in balanced strings.
Any balanced strings can be constructed using the following rules:
A string ()” is balanced.
Concatenation of two balanced strings are balanced.
If T is a balanced string, concatenation of (', T, and)’ in this order is balanced. For
example, ()()” and (()())” are balanced strings. )(” and )()(()” are not balanced
strings.
Dave has a string consisting only of (' and)’. It satis es the followings:
You can make it balanced by swapping adjacent characters exactly A times.
For any non-negative integer B (B < A), you cannot make it balanced by B swaps of
adjacent characters.
It is the shortest of all strings satisfying the above conditions.
Your task is to compute Dave’s string. If there are multiple candidates, output the minimum in
lexicographic order. As is the case with ASCII, (' is less than)’.
Input
The input consists of a single test case, which contains an integer A(1 <= A <= 109).
Output
Output Dave’s string in one line. If there are multiple candidates, output the minimum in lexicographic order.


Sample Input 1
1


Output for the Sample Input 1
)(


There are in nitely many strings which can be balanced by only one swap. Dave’s string is the shortest of them.


Sample Input 2
4


Output for the Sample Input 2
)())((


String ))(()(” can be balanced by 4 swaps, but the output should be )())((” because it is the minimum in lexicographic order.

题意:
在一个只有‘(’,‘)’的字符串中,()是平衡的,连续的平衡字符串也是平衡的,给你一个数字a,问你怎样的字符串要通过最少a次交换相邻的字符才能变为平衡的。

分析:
这题我写时一遍直接AC了,哈哈哈。。。

这种题目一看就是要慢慢列出来然后找规律:
a=1 : )(
a=2 : )()(
a=3 : ))((
a=4 : )())((
……
a=6 : )))(((
写出了这么多后,我们会发现这样一个规律,当上一个存在()时,只要将第一个()相互交换位置就可以使最少交换次数加一。当不存在()时,就在最前面加上)(即可使最小交换次数加一。
交换第一个 ()和在前面加)(可以使其字典序最小

所以现在我们可以从一开始模拟就可以求出所以的了,但是会超时。
我们还发现不存在()的情况很特殊,))((的最少交换次数为(2*3)/2,)))(((的最少交换次数为(3*4)/2 ….. 所以t个)和t个(构成的字符串最小的交换次数为(t*(t+1))/2

最后我们先求出t*(t+1)/2<=2*a 的最大的t,然后在进行处理就可以了。

AC代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;int main()
{int a;while(scanf("%d",&a)!=EOF){int t = (int)sqrt(2.0*a);while(t*(t+1)>2*a) t--;int c = a - t*(t+1)/2;if(c == 0){for(int i=1;i<=t;i++) printf(")");for(int i=1;i<=t;i++) printf("(");printf("\n");}else{printf(")");for(int i=1;i<c;i++) printf(")");printf("(");for(int i=c-1;i<t;i++) printf(")");for(int i=1;i<=t;i++) printf("(");printf("\n");}}return 0;
}

这篇关于(2016弱小联盟十一专场10.3)Parentheses 找规律的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/679531

相关文章

计蒜客 Half-consecutive Numbers 暴力打表找规律

The numbers 11, 33, 66, 1010, 1515, 2121, 2828, 3636, 4545 and t_i=\frac{1}{2}i(i+1)t​i​​=​2​​1​​i(i+1), are called half-consecutive. For given NN, find the smallest rr which is no smaller than NN

hdu 6198 dfs枚举找规律+矩阵乘法

number number number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem Description We define a sequence  F : ⋅   F0=0,F1=1 ; ⋅   Fn=Fn

STM32(十一):ADC数模转换器实验

AD单通道: 1.RCC开启GPIO和ADC时钟。配置ADCCLK分频器。 2.配置GPIO,把GPIO配置成模拟输入的模式。 3.配置多路开关,把左面通道接入到右面规则组列表里。 4.配置ADC转换器, 包括AD转换器和AD数据寄存器。单次转换,连续转换;扫描、非扫描;有几个通道,触发源是什么,数据对齐是左对齐还是右对齐。 5.ADC_CMD 开启ADC。 void RCC_AD

【算法专场】模拟(下)

目录 前言 38. 外观数列 算法分析 算法思路 算法代码 1419. 数青蛙 算法分析 算法思路 算法代码  2671. 频率跟踪器 算法分析 算法思路 算法代码 前言 在前面我们已经讲解了什么是模拟算法,这篇主要是讲解在leetcode上遇到的一些模拟题目~ 38. 外观数列 算法分析 这道题其实就是要将连续且相同的字符替换成字符重复的次数+

十一、C语言:字符串函数

目录 一、strlen 二、strcpy 三、strcat  四、strcmp 五、strstr 六、strtok 七、strerror 一、strlen 注意:strlen()函数的返回值是size_t,两个size_t相减仍为无符号数 int main(){char arr[10] = "abc";char brr[10] = "abc123";if (strl

856. Score of Parentheses

856. Score of Parentheses class Solution:def scoreOfParentheses(self, s: str) -> int:stack=[]i=0for c in s:if c=='(':stack.append(c)else:score=0while stack[-1]!='(':score+=stack.pop()stack.pop()score

python基础语法十一-赋值、浅拷贝、深拷贝

书接上回: python基础语法一-基本数据类型 python基础语法二-多维数据类型 python基础语法三-类 python基础语法四-数据可视化 python基础语法五-函数 python基础语法六-正则匹配 python基础语法七-openpyxl操作Excel python基础语法八-异常 python基础语法九-多进程和多线程 python基础语法十-文件和目录操作

2024年AI芯片峰会——边缘端侧AI芯片专场

概述 正文 存算一体,解锁大模型的边端侧潜力——信晓旭 当下AI芯片的亟需解决的问题 解决内存墙问题的路径 产品 面向大模型的国产工艺边缘AI芯片创新与展望——李爱军 端侧AI应用“芯”机遇NPU加速终端算力升级——杨磊 边缘端的大模型参数量基本小于100B AI OS:AI接口直接调用AI模型完成任务 具身智能的大脑芯片 大模

leetcode#32. Longest Valid Parentheses

题目 Given a string containing just the characters '(' and ')', find the length of the longest valid (well-formed) parentheses substring. For "(()", the longest valid parentheses substring is "()", wh

2024年AI芯片峰会——AI芯片架构创新专场

概述 2024年9月7日于北京举行。 官方链接: 大会官网 正文 对存内计算的思考——戴瑾 面向边缘端大语言模型的RPP架构芯片与落地实践——李原 LLM推理端的特征 边缘计算的特征 来源《联想集团边缘计算白皮书》出炉 Llama2计算过程举例 RPP架构 RPP软件栈 RPP的PPA AI 芯片架构创新开启打算里第二增长曲