2020.3.1 Codeforces 赛后补题&总结

博主分享了参加CodeForces比赛的经历,详细解析了四道题目的解题思路与错误,强调了阅读理解、数据结构选择及算法实现的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

比赛网址:https://codeforces.ml/contest/1321

A:
这一题我哭死啦!!!也怪我思考的不全面吧。刚开始因为读英文的时候本来就有点抵触,之后读题愣是花了很久。题意读懂之后,就差不多有思路啦。我已第一想到的是二分,因为这差不多是一个很正宗的二分的题啦,但我看了数据范围,我就差不多明白了,n的范围只有100,所以这一题直接枚举最大值就好啦,最大还能查过1000不成。但无奈的超时啦!!!当时我第一想法就是,这一题逼我用二分,之后又写了两个二分的算法,直接WA,之后心态直接炸裂!!!后来冷静下来才想到我是那个判断“-1”的条件漏掉了一个,之后加上之后,就过啦。

B:
思路全对,代码没什么错,但是是直接一发过啦。赛后RE!!!就这样,完美的掉分啦。这一题本来就不难,可我却偏偏用vector来存储数据,也怪我平时学的不过扎实,连map可以建立负数到正数的映射都不知道!!!啊啊啊啊,赛后用map写直接过啦。

C:
可能因为前两题的缘故,这一题我当时直接不想写啦。我看到那个字符串的数据范围只有100,我知道就算最暴力的算法一定可以过,可是,我却没有去想,没有去写。赛后看来一下别人的代码。确实吧,自己懂得还是太少啦,string自带的erase操作我都不知道!!!
AC代码如下:

#include <set>
#include <map>
#include <List>
#include <queue>
#include <vector>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>

using namespace std;

#define LL long long
#define lson l , m , rt << 1
#define rson m + 1 , r , rt << 1 | 1

const int maxn = 2e5 + 7;
const LL INF = 1e18;

int main() {
    int n;
    while(cin >> n) {
        string s;
        cin >> s;
        int ans = 0;
        for(int i = 25 ; i >= 1 ; i--) {
            for(int j = 0 ; j < s.size() ; j++) {
                if(s[j] == 'a' + i) {
                    if(j == 0) {
                        if(s[j] - s[j+1] == 1) {
                            s.erase(s.begin() + j);
                            j = -1;
                            ans++;
                        }
                    } else if(j == s.size() - 1) {
                        if(s[j] - s[j-1] == 1) {
                            s.erase(s.begin() + j);
                            j = -1;
                            ans++;
                        }
                    } else {
                        if(s[j] - s[j-1] == 1 || s[j] - s[j+1] == 1) {
                            s.erase(s.begin() + j);
                            j = -1;
                            ans++;
                        }
                    }
                }
            }
        }
        printf("%d\n",ans);
    }
    return 0;
}

D:
题解

总而言之,cf的比赛还是得多打,不能在鸽啦,掉分也无所谓,多掉掉,还能掉成负分不成!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值