周学习总结

1.qsort库函数排序

    qsort(需要被排序的数组,数组元素个数,每个元素大小,排序函数名)

需要自己写一个排序函数,其实就是比大小

int  cmp(const void  x,const void y)

{

 return *(int *)x-*(int *)y;

}

这是按升序排序,降序的话只要换个顺序就行了

每个元素大小不能弄错,否则会发生错误

2.快速幂

a^b mod c=((a²)^(b/2)) % c , b=偶数

a^b mod c=((a²)(b/2)*a) % c ,b=奇数

运用这个公式能迅速将答案算出来

3.深搜基础题

P1036 [NOIP2002 普及组] 选数 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

跟暴力差不多,将每个数搜出来就行了,在判断是不是素数

核心代码为:

void dfs(int m,int s,int x)
{
	if(m==k+1)
	if(isprime(s)) {s=0;ans++; return ; }
	
	for(int i=x;i<n;i++)
	dfs(m+1,s+a[i],i+1);
	
	
	
}

P1294 高手去散步 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

首先将可以互相到达的点设置为1并且把时间保存下来:
因为一个点只能访问一次,所以要做标记,搜完一遍后一定要将标记撤掉:
P1605 迷宫 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

基本dfs模板,但是一定要将起点和障碍标记为访问过,否则会访问两遍,然后将走过的点标记

4.dp

474. 一和零 - 力扣(LeetCode)

dp[i][j]:最多有i个0和j个1的最大子集的大小为dp【i】【j】

首先要将集合中的0和1统计一下

递推公式为:

完全背包:

完全背包与之前的差别就在于可以拿无数件,开始我在想为什么不能用贪心做,按价值与重量之比求解,后面举了一个例子就明白了,容量为4的背包,两件物品分别是
2  4
3  5

原因就是不能保证背包的容量,但如果是物品可以拆解的话就是用贪心做

递推公式为:

与01背包的区别在于j是从小到大遍历,因此可以添加很多件

. - 力扣(LeetCode)零钱和

典型的完全背包问题

dp【j】:金额为j的合成方法有dp【j】种,

因此递推公式为:

初始话dp[0]一定要初始化为1,否则后面都是0

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值