【每日总结】2021-11-19

【每日总结】2021-11-19

学习时长:6h
刷题数:4
学习知识:排序,博弈,快速幂,二分;
总结
1、今天上午注册了GitHub账号,git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。但是我并不知道该如何使用这个东西。
2、下载并配置了vscode用来debug。
3、晚上写了四个题,并学了二分。
反省
我好像已经进入了放假的状态,不过现在应该还没有放假,得改变一下心态。
题目
1、排序
在这里插入图片描述
这个题比较简单,两次冒泡排序就行了,要注意一下循环的边界。
2、博弈
在这里插入图片描述
在这里插入图片描述
这两个题是博弈,代码很简单,主要是思路;我的做法是先分析n,m底层的状态,然后就可以发现二者之间存在的关系,当满足这个关系时就会存在先手必胜或者后手必胜的情况,做推算的过程中我感觉有一点像递归,可以一层一层往下推。
3、快速幂
在这里插入图片描述
这给题图片太长了,就截个标题吧。
这个复杂度就是要进行乘法运算的次数,所以就用字符串来表示二进制的数,用指针来表示除二的操作,当base为奇数时就减一,偶数时就将指针左移一位,然后count++,当移到第一位且剩余的base为0时结束,此时的count就是复杂度了。

#include<stdio.h>
#include<string.h>
int main()
{
    int a;
    char b[5001];
    scanf("%d",&a);
    getchar();
    scanf("%s",b);
    int len=strlen(b);
    char *p=&b[len-1];
    int count=0;
    while(1)
    {
        if(p==b&&*p=='0')break;
        if(*p=='1')
        {
            *p-=1;
            count++;
        }
        else
        {
            p--;
            count++;
        }
    }
    printf("%d",count);
    return 0;
}

二分
听了学长讲的网课,
在这里插入图片描述
我觉得二分的思想就是通过不断取中间值来缩小范围。
需要注意的就是两个端点可能有时无法取到,这时候就要扩大或者缩小;然后不同的题目可能运行的条件不一样。

英特纳雄耐尔一定会实现!!!
庚子年 冬 怀化

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值