【校赛】一道题面很长的题并且题目标题也长以及这题可能很难也可能很简单

题目:

描述

作为一个刚刚接触ACM的菜鸟,需要刷哪些题?

作者:向盆(axp)

来源:知乎

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

入坑已经快一年了,先分享下我的入坑之路。。。

我刚开始是在hdoj刷些水题同时学c++,熟悉了语言之后,开始看紫书也就是算法入门经典(书名看起来真心像大路水货),基本顺着章节刷,但是题目实在太多了所以跳了一部分= =其实题目还是很有质量的。
紫书刷完之后,买了白书当参考书,没错是参考书。。因为感觉再一步步刷下来有些吃力了,就先把第一章刷了,剩下的部分大概扫了扫,然后就开始网上四处扫荡(bei)比(nue)赛。这一时期是比较爽的,看着cf,tc,bc慢慢涨rating,编程之美,GCJ以及各种公司的比赛还有奖品。这时候比赛大概可以刷掉一小半的题目,混到部分比赛的衣服了(开心)。
又过了一段时间之后,已经达到分分钟切水题的境界了(分分钟还没切掉的也就切不动了),比赛也经常是前半小时搞定水题然后无所事事,于是知道要进一步学习算法了。遂开始开一些数据结构以及其他算法的专题刷,同时在清以前比赛时候的题,尽量做到AK掉所有可做的题,没学过的算法也试图现学一下(虽然经常跪。。。)

总结下自己到目前为止的几个阶段就是:

  1. 学习语言,理解代码在编译运行之后具体实现方式,好好看课本。 这点很重要= =)保证以后不会写出一些奇葩而SB的BUG然后四处问拉嘲讽。。。
  2. 学习计算思维和编程技巧。包括C++的STL库,以及看到问题之后分析思路和建模方法,还有EOF啦前缀和啦之类的零零碎碎的技巧。后期要慢慢熟悉枚举贪心二分等思想。 刷hdoj11页,之后到cf切A,B题
  3. 学习基础算法和基础数据结构。dfs,bfs,dp,以及stl中的vector,satck,set,map之类。 切cf的C题,四处蹭比赛打
  4. 线段树,图论基础(最小生成树,最短路,网络流),数论基础(筛法,gcd)。 此处应清题尝试AK cf div2
  5. 答主目前正在刷数据结构/数学。死磕伸展树主席树各种树以及各种定理各种构造等。。。(待答主升级后也许会更新

tips:

  • 不存在ACM必刷100题什么之类的东西。有许多经典的题目十分的纯粹,并不意味着它就非刷不可。刷题无非是熟练算法/思维,高质量的题目往往都是非常考验思维的,解决他们得到exp也是大涨。在学习了一个算法之后回头看某些“经典题目”,无非是将情况简化到只单纯考虑这个算法而已。
  • 部分OJ提供数据,但是不要养成依赖数据的坏习惯,四处贴代码求DEBUG更是大忌。你可以google一个标称,再写一个数据生成器,暴力对拍出数据来进行DEBUG。
  • 多看别人代码,学习别人的技巧。尤其入门时,不管这道题你多么轻松的切掉了,也要看看别人的代码,有没有更简洁有效的写法。
  • 百毒谷狗是最好的老师(知乎也是),伸手可耻。平常学习算法可以搜博客和书籍,最好可以学大牛直接搜论文(orz)

再说几个比较熟悉的或者有人提过的oj:
cf:强力推荐,题目高质量,难度梯度合理,公开代码及数据,基本都有官方题解,更有强力虚拟比赛功能(我还没见过其它提供此功能的oj)。没事去打个比赛涨涨分好开森,就是比赛时间往往比较坑,喜欢凌晨00:30开始。里面还有个GYM,收录了许多比赛真题(多为欧洲区域赛和俄罗斯某某杯),难度较大。
tc:题目质量极高,但是要下载客户端(现在貌似出网页版了),但是间歇性抽风(墙的问题?)
hdoj:题目多且杂,入门必水。同时杭电还搞了个bc(题目质量不稳定,经常会坑),现在算是国内唯一时间稳定且参加人数比较多的比赛
poj:题目难度比较高但是数据往往水得一笔。。。
bzoj:国内OIer聚集地,好多难的一笔的数据结构orz。。。
51nod:题目难度偏高,有不少“经典题目”,题目数量少而涵盖面广

最后,ACM之路漫长,祝你能找到乐趣并坚持下去啦~

阅读完这篇文章,请问题中有几对括号?(划掉 这才不是题目叻

现给出一篇文章,其中的字符全由字母、数字、小括号、空格、换行符及字符[?!.,-";:]组成。

求文章中出现了几对匹配的括号。

注:左括号与右括号匹配称为一对括号,若两左右括号中出现空格、字符[?!.,-";:]或跨行,则为不匹配

例(此处中文字符应替换为英文,请自行理解):

【两对匹配】((啊啊啊啊啊啊啊啊啊))

【匹配】(我还没见过其它提供此功能的oj)

【不匹配】(待答主升级后也许会更新

【不匹配】(百毒谷狗        是最好的老师)

【不匹配】

这时候比赛大概可以刷掉一小半的题目,混到部分比赛的衣服了(开心。

又过了一段时间之后),已经达到分分钟切水题的境界了

【不匹配】学习计算思维和(编程技巧。包括C++的STL库)

输入

若干行字符串,每行字符串仅由字母、数字、小括号、空格及字符[?!.,-";:]组成
字符串总长度不超过300000

输出

括号配对的数量

样例输入1
Lorem ipsum dolor sit amet, consectetur adipisicing elit, (sed) do eiusmod tempor incididunt ut lab(ore) (et dolore) magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo con(sequat. Du)is aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla (paria)tur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est (labor)um.
样例输出1
4

思路:

哇这题目简直有毒!之前写的时候漏了一个逗号,然后和队友妹纸一起debug,然后在txt的数据和在word的数据(相同的!)运行出来结果居然不同!!最后我ac了,但是,我的ac的代码和她的ac的代码得到的结果居然相差1,但我们都神奇的ac了……

玄学ac!

代码:

#include<iostream>
#include<stdio.h>
using namespace std;
int main()
{
    char a;
    long long int sum=0;
    long long int left=0;
    int t;
    while(scanf("%c",&a)!=EOF)
    {
        if(a=='(')left=left+1,t=1;
        if(left>0&&(a=='.'||a=='\n'||a=='?'||a=='!'||a==';'||a==':'||a=='-'||a==' '||a=='['||a==']'||a=='"')||a==','){t=0;left=0;}
        if(left>0&&t==1&&a==')'){sum=sum+1;left=left-1;}
    }
    cout<<sum<<endl;
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值