摘要: 1 01背包 问题描述: 有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。 基本思路 : 这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。 顺序写: 这样写要开二维数组,浪费空间 怎么节省空间呢? 观察上面的状态转 阅读全文
posted @ 2018-07-30 20:24 raincle 阅读(138) 评论(0) 推荐(0) 编辑
摘要: A题: Description 为了检验你上午有没有好好听课,于是又了这一题。给你一个N*M的方格网,左上角为(1,1)右下角为(N, M),每个方格中有一个数a[i][j],刚开始你在位置(1, 1)你每次可以往下走或者往右走一步,你需要确定一种走的方案,最后走到(N, M),使得途径格子的数的和 阅读全文
posted @ 2018-07-29 21:26 raincle 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 存图 1.vector(操作简单,浪费空间) 2.前向星:最高效的存图方式 链式结构,结构体保存边 图的遍历 最短路 Dijstra算法:适用于求边权为正,由单个源点出发到其他所有点的最短路 SPFA算法:可以处理负边,不能有负的双向边,一定会存在负环,那样子就没有最小的了,因为可以到无穷小(可以有 阅读全文
posted @ 2018-07-27 20:40 raincle 阅读(395) 评论(0) 推荐(1) 编辑
摘要: 状压搜索 广搜 用广搜好保存状态(钥匙)对钥匙的状态进行状态压缩,每一个位置上1或0对应有没有这种钥匙 C题: AveryBoy又又又被关在一个n*m的迷宫里,这次还有了检查人员防止他逃跑。,并在迷宫的某些地方安装了带锁的门,钥匙藏在迷宫另外的某些地方。刚开始AveryBoy被关在(sx,sy)的位 阅读全文
posted @ 2018-07-26 11:54 raincle 阅读(667) 评论(0) 推荐(1) 编辑
摘要: 深搜(DFS) 关键词:回溯 栈实现,(递归本质和栈一样)一直走到底再回溯,时间复杂度高,空间低 #include<iostream> #include<cstring> using namespace std; int R,C; char maps[40][40]; int dp[40][40]; 阅读全文
posted @ 2018-07-25 20:56 raincle 阅读(302) 评论(0) 推荐(0) 编辑
摘要: 二分搜索作用:降低时间复杂度到log(n);求满足条件的最大的最小值,或是最小最大值; 设计一个bool judge 函数,判断该点是否合法(满足条件) A题: 还记得我们新生赛上的这题Averyboy的筷子这题吗?众所周知,Averyboy是一个非常的男孩,既然是一个非常的男孩,那么他就会有许多奇 阅读全文
posted @ 2018-07-25 19:38 raincle 阅读(139) 评论(0) 推荐(0) 编辑
摘要: A题:给你一个序列,长度为n。问是否存在一个连续的子序列和是m的倍数 鸽巢原理,求出序列的前缀和数组,若pre[i]%m==pre[j]%m,则(pre[j]-pre[i])%m==0; B题:给出5个整数a,b,c,d,k。你要在[a,b]中找一个x,在[c,d]中找一个y,使得gcd(x,y)= 阅读全文
posted @ 2018-07-25 19:04 raincle 阅读(344) 评论(1) 推荐(1) 编辑