快速幂
快速幂: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;
}
快速幂: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,但实现起来总觉得哪里不对,参考大佬们的博客后解决了几个难点:
这两天看了廖雪峰老师的 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>
默认为HEADgit tag -a <tagname> -m "balabala……"
git tag
git push origin --tags
git tag -d <tagname>
git push origin :refs/tags/<tagname>