备考CSP刷题经验总结
(目标300+)
目录
- 经验
- 1.对题目中的数据范围进行枚举、试探,找到一个大致的范围
- 2.递归求解的思想
- 3.字符串处理类的模拟题,一定要有清晰的结构,可以采用一定的存储结构先存储再处理,不要想着在主函数中边输入边处理,那样反而会让过程更加复杂。清晰的数据结构是关键。
- 4.感觉一道很简单的题做出来了却一直WA的时候,一定要多读几遍题目,想一想有没有别的没有考虑到的情况,这种情况往往是先入为主带来的对题意的误解。另外在读题目思考场景的时候不要想当然,一定要仔细分析一下各种可能性
- 5.时间复杂度优化技巧
- 6.有限状态机的思想
- 7.基本的数学知识和从题目中思考、发现技巧的能力,对题目中的数学关系进行分析和建模的能力
- 8.AC自动机
- 9.动态规划
- 10.树
- 技巧
- 1.数字转16进制(转义字符表示)
- 2.求素数的方式
- 3.拓扑排序判断是否存在环
- 4.C++大段IO时提高效率
- 5.C++16进制字符串(string类型)转数字
- 6.C++输出16进制数字
- 7.需要对数组中元素进行删除时,可以采用一个下标数组来保存顺序,类似于静态链表。
- 8.十进制转二进制
- 9.string类用法小结
- 10.尽量用vector,少用数组+下标变量的方式,很容易出错,并且涉及两个数组赋值的时候很容易运行错误
经验
1.对题目中的数据范围进行枚举、试探,找到一个大致的范围
例题:ADPC01-正赛D质数区间
在这题中1<=l<=r<=1e18,乍一看好像区间太大。但是明确思路以后,发现素数集合是按照集合元素和的大小从小到大排序的,那么可以根据素数和进行枚举,记录下字符串长度。经过试探,素数和最大到2096,那么这个范围就找到了。
scanf("%lld%lld",&a,&b);for(int i=2;i<100000&&cur<b;i++){ //试探过,i最大到2096,这个范围的素数也就300来个,所以记忆化ll len=calc(0,i).second;if(cur+len>=a) print(0,i);//进入区间,开始输出else cur+=len;}
例题:ADPC01-正赛K关于哥俩好的数字这件事
这道题的解决思路不难想到,从1开始枚举自然数,找到符合题目要求的集合。这道题首先一个问题就是我不知道要寻找大概的数据范围,枚举到哪一个自然数?在我的潜意识里就认为题目中的数位和太大,要找的自然数太大,无法确定范围。但其实仔细思考一下,一个6位整数的数位和,最大也是6*9=54,也就是说所有<=6位的整数的数位和都在【1,54】这个范围内,那么进一步可以算出枚举的最大自然数不会超过600000。我在做题时因为认为无法找到枚举的最大自然数(我压根就想不到要找),所以就认为找到的第一个满足n要求的集合就是答案,但其实之后满足n要求的集合也有可能是答案。所以正解应该是要保存最小值,并且继续枚举到最大范围。
2.递归求解的思想
同样是例题:ADPC01-正赛D质数区间 杨净 发自 凹非寺 量子位 报道 | 公众号 QbitAI 今天,你刷LeetCode了吗? 最近,GitHub上这样一套LeetCode笔记火了. 一位Java研发工程师分享了一个名为「LeetC ... 杨净 发自 凹非寺 量子位 报道 | 公众号 QbitAI 今天,你刷LeetCode了吗? 最近,GitHub上这样一套LeetCode笔记火了. 一位Java研发工程师分享了一个名为「LeetC ... csp刷题总结(如此编码python版本) 2023年大年初一 -- 牛客网刷题经验分享~ 杨净 发自 凹非寺 量子位 报道 | 公众号 QbitAI 今天,你刷LeetCode了吗? 最近,GitHub上这样一套LeetCode笔记火了. 一位Java研发工程师分享了一个名为「LeetCo ... 本文经AI新媒体量子位(ID:QbitAI)授权转载,转载请联系出处 杨净 发自 凹非寺 今天,你刷LeetCode了吗? 最近,GitHub上这样一套LeetCode笔记火了. 一位Java研发工程 ... 点击上方"Github中文社区",关注 看遍Github好玩的项目 作者:huber 转载自:量子位 今天,你刷LeetCode了吗? 最近,GitHub上这样一套LeetCode ... 2021年开始咯~各位小伙伴们开始备考初级职称的考试了吗?肯定有很多积极的小伙伴很早就开始备战了吧~最近小编收到不少同学的备考疑问,其中问的最多就是关于备考期间只刷题不买教材不看理论行不行?这样的备考 ... 这里是引用 1.出现次数最多的数 问题描述 给定n个正整数,找出它们中出现次数最多的数.如果这样的数有多个,请输出其中最小的一个. 输入格式 输入的第一行只有一个正整数n(1 ≤ n ≤ 1000), ...
在试探以后得出素数和最大不超过2096,那么我们就可以从2开始到2096进行枚举,按照从小到大和字典序的顺序计算字符串长度,从l开始输出,一直到r。那么关键问题在于如何按照从小到大和字典序的顺序计算字符串长度? 题解用到这样一个思想:用
备考CSP刷题经验总结相关推荐
最新文章
热门文章