xtuoj-part1
- 记载刷xtuoj遇到的一些题目
xtuoj-part1
maze
- Maze
模拟题,第一次写是照着别人的思路写的,这是第二次写的代码,老师说可以更改一下逻辑,直接检查,避免回溯,但是我懒的调了,就这样吧
code
1 |
|
最大的数
- 最大的数
完完全全的思维题
我不是完全理解这个思路,也就是说,我不会证明这个为什么可行,只是觉得,啊啊,对啊,就是这样,很有道理
······
The Max Number
1 |
|
刷油漆
- 先上题 刷油漆
题目大意 n,m,c,t表示行数,列数,颜色数,刷漆次数
谢大以前给研究生出的压轴题,还是具有一定的思维难度的
算法的核心在于构建O(T)的代码
突破点在于将操作顺序和读入顺序倒置
掌握了这点,剩下的就可以顺利突破了
上代码
code
1 |
|
完美回文数
- perfect palindrome Number
- 1e5内的完美回文数只有三个{11,1001,1111}
- 输入T(样例数),n(数据)
- 输出:每行输出一个样例的结果,如果n不能由完美回文数累加得到,输出0
- 思路:动态规划
- 很正常,如果从n反推由多少个pre_pal组成,思路会很复杂且不清楚,但是我倒过来思考
-
如果我提前把所有完美回文数可能的组成情况预先计算并储存进入数组,思路就会清楚很多
-
而且也很容易实现代码,甚至时间复杂度是O(T);
真是优雅啊
code
1 |
|
最多的可变字符串
- 最多的可变字符串
- 模拟题,重在实现代码,思路很直接
- 关于<string.h>头文件里的两个函数
- 1.strcpy
strcpy函数用于将一个字符串复制到另一个字符串中,其函数原型为:
其中,dest为指向目标字符串的指针,src为指向源字符串的指针。strcpy函数会将src指向的字符串复制到dest指向的字符串中,并返回dest指针
strcpy函数会复制包括字符串结尾的空字符’\0’在内,因此目标字符串dest必须有足够的空间来存储源字符串
- 2.strcmp
strcmp函数用于比较两个字符串的大小,其函数原型为:
参数说明:
str1:要比较的第一个字符串。
str2:要比较的第二个字符串。
返回值:
strcmp 函数返回一个整数,表示两个字符串的比较结果:返回 0:表示 str1 和 str2 内容相同。
返回正值:表示 str1 按字典顺序大于 str2,即 str1 中第一个不同字符的 ASCII 值大> 于 str2 中对应字符的 ASCII 值。
返回负值:表示 str1 按字典顺序小于 str2,即 str1 中第一个不同字符的 ASCII 值小> 于 str2 中对应字符的 ASCII 值。
工作原理:
strcmp 逐个比较两个字符串的字符,直到找到第一个不同的字符或其中一个字符串结束(遇到空字符 ‘\0’)。
如果字符串在比较之前的部分完全相同且长度不同,则较短的字符串按字典顺序被认为是较小的。
- 上代码
code
1 |
|
青蛙
该题不是很难,本质是一个数学题,找到规律即可做出
但是如果没有想到数学方法,就会很困难,纯模拟的思路只有循环队列可以较为轻松的实现
code
1 |
|
完全平方数2
找个时间重写一下
总结以下这类题型的规律
对于给定方程的求解,参变分离,把方程转化成两个因式相乘=一个已知数的形式
枚举其中两个因式,解方程,判断是否符合条件即可
所以,重点就在于怎么构造方程
code
1 |
|
拼图
这个题凭我自己是写不出来的,下面这个代码用了回溯,十分巧妙
详细过程我用流程图展示了
1 |
|
1 |
|
code
1 |
|
prime palindromes
problem
本题是在洛谷上的题
其实说明和提示在题目里面就有了
本题重要的是先生成所有的回文质数,然后再判断是否符合条件
否则,TLE警告
详细讲解在注释
code
1 |
|
众数
problem
二分基础题,但由于我刚接触二分的原因,这个题卡了很久,而且一贯的,这个题卡了Long long
二分+检查
二分查找区间最大值,区间最大值可以转化为众数的出现次数
在条件k的限制下,检查区间内的操作能否满足条件,满足则扩大区间,不满足则缩小区间
code1
1 |
|
code2
1 |
|
premixSum
- 前缀和
思路打开了,这个题目用二分
总结一下使用二分的情况:
在单个数组里高效的查找最大最小值,或者最小最大值
对于向下查找还是向上查找,就要看目的是什么了
使用二分时,往往有一个可以用在check函数里的限制条件
left和right可以对应区间里的最小值或者最大值
这些都是套路,真正重要的是明白二分查找什么时候该用,该怎么用
oj上使用二分的题目大部分都是一个套路,只是有些题目的二分方法比较难发现,比如众数,比如这道题
premix_sum
1 |
|
埃氏筛
两份代码没什么区别,只有一个关于埃氏筛的小细节,导致时间效率不一样
原题:哈希
code1
1 |
|
code2
1 |
|