【2021寒假集训营第一场】B-括号

括号

https://ac.nowcoder.com/acm/contest/9981/B


构造类问题往往都是由特殊到简单
我一般做构造题就是写写画画,对于本题来说在写写画画的过程中看你加的每个括号都贡献了什么就可以了(所以最开始要把所有的情况争取都列一下)。
大家注意千万不要超长度要算好呀

#include <bits/stdc++.h>
using namespace std;
int k;
int main()
{
    cin >> k;
    int a = k / 50000;
    for (int i = 1; i <= a; i++) cout << "(";
    int b = k % 50000;
    for (int i = 50000; i >=1 ; i--)
    {
        if(i == b) cout << "(";
        cout << ")";
    }
    return 0;
}
全部评论
问一下如果是先开根号得到x,再令y=k/x(特判x等于0),再得到还要几个括号z=k-x*y,这样就是让x和y尽可能接近。这样虽然能过,但会不会有些数据能把这种做法hack掉
点赞 回复 分享
发布于 2021-02-02 11:58
很好的题解,不过如果测试数据小的话,打出来看着冗长。
点赞 回复 分享
发布于 2021-02-01 20:03
这个方法没有超长度,1e9数据长度才6w多。真的疑惑是算法问题还是评测机问题?
点赞 回复 分享
发布于 2021-02-01 18:52
B题评测估计有问题😅。比如输入k,如果不是素数,找两个因子n,m使n*m=k,那么左边n个"("括号,右边m个")"括号。比如(((()))那么可以得到n*m=k个括号。如果k是素数,那么k一定是奇数,所以k-1一定是偶数,所以先按照之前方法把k-1个括号构建出来,再把左数第一个"("括号后面加一个")",就是(k-1)+1=k个括号。这个方法本地数据测了好多都过了,交上去就是过不了😅。是不是评测机有问题啊?
点赞 回复 分享
发布于 2021-02-01 18:50

相关推荐

Beeee0927:正确的建议
点赞 评论 收藏
分享
评论
21
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务