关于T3 O(n^3) 能草过去这件事

一开始我写了个暴力:

/*
 * @Author: Aisaka_Taiga
 * @Date: 2023-08-27 19:42:45
 * @LastEditTime: 2023-08-27 20:33:48
 * @LastEditors: Aisaka_Taiga
 * @FilePath: \Desktop\牛客C.cpp
 * 心比天高,命比纸薄。
 */
#include <bits/stdc++.h>

#define int long long
#define N 1000100

using namespace std;

int ans, n;
char s[N];

signed main()
{
    scanf("%s", s + 1);
    n = strlen(s + 1);
    for(int i = 1; i <= n; i ++)
    {
        for(int j = i + 1; j <= n; j ++)
        {
            int c1 = 0, c2 = 0;
            for(int k = i; k <= j; k ++)
            {
                if (s[k] - '0' == (k & 1)) c1 ++;
                if (s[k] - '0' == ((k + 1) & 1)) c2 ++;
            }
            ans += min(c1, c2);
        }
    }
    cout << ans << endl;
    return 0;
}

然后T了,我就开始想正解,赛后我问另一个人怎么做的,他说暴力不就行吗。

然后这是 AC 代码:

/*
 * @Author: Aisaka_Taiga
 * @Date: 2023-08-27 19:42:45
 * @LastEditTime: 2023-08-27 20:33:48
 * @LastEditors: Aisaka_Taiga
 * @FilePath: \Desktop\牛客C.cpp
 * 心比天高,命比纸薄。
 */
#include <bits/stdc++.h>

// #define int long long
#define N 1000100

using namespace std;

int ans, n;
char s[N];

signed main()
{
    scanf("%s", s + 1);
    n = strlen(s + 1);
    for(int i = 1; i <= n; i ++)
    {
        for(int j = i + 1; j <= n; j ++)
        {
            int c1 = 0, c2 = 0;
            for(int k = i; k <= j; k ++)
            {
                if (s[k] - '0' == (k & 1)) c1 ++;
                if (s[k] - '0' == ((k + 1) & 1)) c2 ++;
            }
            ans += min(c1, c2);
        }
    }
    cout << ans << endl;
    return 0;
}

是的把第11行的define注释掉就A了。

我怎么也想不到暴力能草过去啊??

全部评论
这就是用 c++ 的好处吗
点赞 回复 分享
发布于 2023-08-27 22:17 安徽
555我也用了define int long long
点赞 回复 分享
发布于 2023-08-27 21:23 广东
数据弱了
点赞 回复 分享
发布于 2023-08-27 21:20 河北
离谱
点赞 回复 分享
发布于 2023-08-27 20:57 广东

相关推荐

05-26 09:07
已编辑
门头沟学院 Java
点赞 评论 收藏
分享
屌丝逆袭咸鱼计划:心态摆好,man,晚点找早点找到最后都是为了提升自己好进正职,努力提升自己才是最关键的😤难道说现在找不到找的太晚了就炸了可以鸡鸡了吗😤早实习晚实习不都是为了以后多积累,大四学长有的秋招进的也不妨碍有的春招进,人生就这样
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务