第一次月考核后讲题总结
第一次写博客,不知道能做得多好,但是至少是个开端
本次讲题时间、内容都很长,以时间顺序来归纳本次博客内容
新生赛题目
1. 双十一大礼包
学姐说了三种方法:暴力、辗转相除法、更相减损术。(最优不用说也知道了叭。
然后讲了一下递归做法(一行代码实现目的)
typedef long long ll;//下面代码全都进行预处理
ll getgcd(ll a,ll b)
{
return b==0?a:getgcd(b,a%b);
}
2. Circle
这道题没什么难的,找找规律就出来了。
关键是学姐指出n*(n-1)这个表达式中有个n2,然后就给我们说了说快速幂,尽管组长台下摇头劝阻,但学姐还是讲了(哈哈哈哈哈嗝)
快速幂
这个鬼东西好像很神奇,可以降低时间复杂度,但是我只是听得一知半解。
根据讲题时的笔记,它主要是对幂的指数进行操作
(递归思想)比如232变2个216,27先变一个2出来,再平分指数变成2个23,当指数位等于1时return。(好吧还是没懂怎么能转化为代码,后期再看看补上)
(RJversion)任何一个数都能由1、2、4、8……2n组成,所以先mod2,看有没有1,再mod4,看有没有2。(还是不懂怎么实现鸭)来康康阿圈怎么讲的叭!代码板子还是贴出来:
ll quickpow(ll a,ll b)
{
ll ans=1;
while(b)
{
if(b&1) ans*=a;
a*=a;
b>>=1
}
return ans;
}
3. 相亲
相亲题目好长 有点狼人杀的感觉呢
注意以下几点:1.多开几个结构体重的变量存类似总分,序号这种题目中第一眼可能看不出来的需求量;2.男生被女生选择后要被剔除出数据,RJ说又要多开一个bool int变量,我的想法是把他的各项分数变成0 变成负数。
4. chocolate
这道题我当初没看懂牛客网搬的题目果然 ,原来异或3、4、5……项也可以嘛?。嗯是可以的,甚至还能异或前缀和来玩它(运用0 ^ 本身=本身, 本身 ^ 本身=0来处理, 还要考虑移位的次数q-1=i-j),假设a为结果串,b为原串。sum[i]=b[i] ^ b[i-1] ^…… ^b[0], sum[j,i]=sum[i] ^ sum[j-1], a[i]=b[i] ^ sum[j,i-1]。
5. 时间排序
用特殊格式输入进结构体,再排序,没什么好说哒。
6. 粉色冒泡
蔡哈哈:这么简单还要讲什么规律。
然后噼里啪啦讲了一堆如何运用功能函数,关键就是怎么运用行指针。
虽然她发的代码中并没有行指针,全都是光秃秃的int
7. 完美巧克力
组长月考核结束后顺带讲了哈,正方形的判断:任何两点之间长度只有两种可能。第二天阿咆在群里展开了一顿惊天动地的讨论,判断条件可能还要加上点构成的直线之间只含有90°、45°的角。
8. 破解密码
这个题我后来补题时候想法和学长基本一样,但是略有不同,都用了一个代表ascii码的数组来表示该字符之前出现情况,都是一次遍历循环。学长存的是1,用L、R表示字符串边界。我的数组直接存的这个字符之前在串中出现的位置,用下标来做。
纸质任务1(位运算符)
讲的过程真的很无聊
主要注重几个点:
- 异或^可以不借用其他变量来交换两变量的值:
a = 3 (011), b=4 (100)
a = a^b; a=(011) ^(100)=(111)
b = b^a; b=(100) ^(111)=(011)=3
a = b^a; a=(011) ^(111)=(100)=4 - 位运算以补码形式进行,计算结果要由补码还原为原码(符号位为1则-1再除符号位取反);
- 计算符的先后顺序,左右结合性;
- 组长补充了^的交换律、结合律
a ^ b=b ^ a; (a ^ b) ^ c = a ^ (b ^ c)
以及恒等式?
a ^ b = c <=> a ^ c = b、b ^ c = a、a ^ b ^ c = 0.
纸质任务2(程序输出结果)
这里重点还是C语言基础(例会说了我一直在搞基础,结果做得稀烂,还是太菜)涉及了自增自减符号、->和指针的联系、运用malloc函数防止空指针(貌似是指针的高级运用那一章)、输入的奇妙操作。
这个奇妙操作就包括:
scanf正则表达式
- %*c跳过一个字符;
- %[ ^\n ]读到\n前一个为止(可用于scanf读一行);
- %[a-zA-Z]只读到a-z,A-Z之间的字符为止
居然不要加&&!; - scanf("%1d)读宽度一位的数。
上面的是组长讲的例子,正则表达式详解还得看阿圈的博客
月考核题目
这次题目比较容易,虽然补题做完了,但是还是有一些点要留意
- 判断分数大小一定要交叉相乘比较 from天壤之别;
- 以后可能会经常遇到只给代码的题目,要对原代码进行转化:公式的转化,代码内容优化
from莫辩楮叶 - 前缀和这道题没什么好说的,组长的方式是用高度进行判断,我是先把高度问题转化为天数问题,数组开大点 from暗香浮动
- 错综复杂这题组长讲得最久,因为这个题他用的是数论的知识(弱鸡如我还没学),包括向量叉乘、2*2行列式
讲了这一堆之后组长带我们康了好长一串代码,反复提及面对对象,这种代码才有ACM内味(蔡哈哈发的代码也有这味),目前还没有习惯,希望能尽早有这味叭。
from错综复杂
听到这里已经听了差不多三个半小时了,真就有点脑壳容量爆炸,之后有时间再康康博客,把不懂的点再补一下。