分类 技术 下的文章

快速幂:a的b次方对n取余

int ksm(int a, int b, int n)
{
    a %= n;
    int ans = 1;
    while(b)
    {
        if(b%2 == 1)
            ans = ans*a%n;
        b /= 2;
        a = a*a%n;
    }
    return ans;
}

第一次碰到需要剪枝优化的题

题目描述

设有n件工作分配给n个人。为第i个人分配工作j所需的费用为ci 。试设计一个算法,计算最佳工作分配方案,为每一个人都分配1 件不同的工作,并使总费用达到最小。

输入

第一行一个正整数n(1<=n<=20),接下来的n 行,每行n 个数,表示工作费用 。

输出

输出有m行,每行输出最小总费用。

样例输入

5
50 43 1 58 60
87 22 5 62 71
62 98 97 27 38
56 57 96 73 71
92 36 43 27 95

样例输出

144

第一次提交代码:






- 阅读剩余部分 -

碰到一个题目

题目描述

玛雅人有一种密码,如果字符串中出现连续的2012四个数字就能解开密码。给一个长度为N的字符串,(2=<N<=13)该字符串中只含有0,1,2三种数字,问这个字符串要移位几次才能解开密码,每次只能移动相邻的两个数字。例如02120经过一次移位,可以得到20120,01220,02210,02102,其中20120符合要求,因此输出为1.如果无论移位多少次都解不开密码,输出-1。

输入

第一行输入N,第二行输入N个数字,只包含0,1,2

输出

样例输入

5
02120

样例输出

1

虽然知道是bfs,但实现起来总觉得哪里不对,参考大佬们的博客后解决了几个难点:

  • 存储类型 虽然题目说是输入n个数,但是使用字符串存储会使后续的处理更方便,题目出处九度OJ_1482输入写的也是长度为n的字符串

- 阅读剩余部分 -

这两天看了廖雪峰老师的 Git 教程,受益匪浅。

以下为常用基本命令总结:

  • 创建本地版本库:git init
  • 添加文件到库:git add <file>git commit -m "messages"
  • 查看工作区状态:git status
  • 查看修改内容:git diff
  • 查看提交历史:git log
  • 返回历史版本:git reset --hard commit_id
  • 查看返回历史:git relog
  • 丢弃工作区修改:git check -- file
  • 丢弃暂存区修改:git reset HEAD file
  • 删除一个文件:git rm
  • 关联一个远程库:git remote add origin git@server:path/repo.git
  • 关联后第一次推送:git push -u origin master
  • 之后进行推送:git push origin master
  • 克隆远程库:git clone ssh://user@domain.com/repo.git
  • 查看分支:git branch
  • 创建分支:git branch <name>
  • 切换分支:git checkout <name>
  • 创建+切换分支:git checkout -b <name>
  • 合并某分支到当前分支:git merge <name>
  • 删除分支:git branch -d <name>
  • 新建标签:git tag <name> 默认为HEAD
  • 指定标签信息:git tag -a <tagname> -m "balabala……"
  • 查看所有标签:git tag
  • 推送全部未推送过的本地标签:git push origin --tags
  • 删除本地标签:git tag -d <tagname>
  • 删除远程标签:git push origin :refs/tags/<tagname>

什么是 Gist

Gist 是 github 的一个保存代码片的网站,大陆需要翻墙才能访问。

关于 Gist 的管理,推荐一款非常方便的工具:Lepton

在博客中引用 Gist 代码块

复制 js 代码:

如上图的

<scriptsrc="https://gist.github.com/heart4lor/0dda9bea781c5501c3bb50e6f5ab7756.js"></script>

粘贴到Markdown文档中想要的位置即可,像 hexo typecho 这样的博客系统会直接输出如下的代码块:

- 阅读剩余部分 -