08 2020 档案

摘要:例题P2455 [SDOI2006]线性方程组 高斯消元做法 首先声明一个变量存当前已经确定的方程组的数量 1.枚举每一列 2.找... 阅读全文
posted @ 2020-08-28 08:00 DSHUAIB 阅读(70) 评论(0) 推荐(0)
摘要:裴蜀定理:对于任意x,y,若满足$k_1x+k_2y=d$有解,则d一定为$k_1,k_2$的最大公约数 证明: ∵d为$x,y$的最大公约数 ∴x,y一定为d的倍数 ∴$k_1x+k_2y$也一定为d的倍数,则一定存在$k_1,k_2$为方程的一组解 通过欧几里得算法递归来求$k_1,k_2$ 核 阅读全文
posted @ 2020-08-27 15:51 DSHUAIB 阅读(80) 评论(0) 推荐(0)
摘要:例题P4777 【模板】扩展中国剩余定理(EXCRT) 对于每一个$x≡ b_1(\mod a_1)$,可以设k为$x/a_1$的商,易得$a_n*k_n+b_n=x$。 对于前两个式子 \[ \begin{cases} a_1*k_1+b_1=x \\ a_2*k_2+b_2=x \end{cas 阅读全文
posted @ 2020-08-26 22:00 DSHUAIB 阅读(139) 评论(0) 推荐(0)
摘要:例题 给定一颗多叉树,求两个点的最近公共祖先 dfs遍历预处理出每个节点的父亲信息,存在fa[x][0]中。 fa[x][j]为x点... 阅读全文
posted @ 2020-08-19 15:33 DSHUAIB 阅读(116) 评论(0) 推荐(0)
摘要:次短路 目前知道的方法有:1.跑一遍最短路,一次枚举删边 2.在跑最短路时同时记录最短路与次短路 3.起点和终点分别跑一次最短路,枚... 阅读全文
posted @ 2020-08-15 09:07 DSHUAIB 阅读(78) 评论(0) 推荐(0)
摘要:迭代加深 DFS在一些问题模型中可能无限扩展,如8数码问题,无限扩展会有些问题,增 加深度限制:假设目标状态所处深度不超过某阈值。人为设定,当搜索深度到达阈 值时直接剪枝,不再往下搜索。 Iterative Deepening Depth - First Search 适用:求最优/深度最低/步数最 阅读全文
posted @ 2020-08-08 20:19 DSHUAIB 阅读(455) 评论(0) 推荐(0)
摘要:例题:P1397 八数码难题 ###双向BFS 普通BFS 双向BFS 所谓双向广度优先搜索指的是搜索沿两个方向同时进行 正向搜索:从初始点向目标点搜索; 逆向搜索:从目标点向初始点搜索; 从正反两个方向搜索,理论上可以节省二分之一的搜索量,从而提高搜索速度,节约内存空间。 从初始状态和目标状态向两 阅读全文
posted @ 2020-08-08 20:02 DSHUAIB 阅读(389) 评论(0) 推荐(0)
摘要:大致思路 这个题给了主件,附件,很明显按照主件来分组,然后再转化为背包问题 各变量 int v[65],p[65],q[65],ty... 阅读全文
posted @ 2020-08-07 11:46 DSHUAIB 阅读(50) 评论(0) 推荐(0)
摘要:质数 试除法判断质数 #includeusing namespace std;int ai[105];int main(){ int... 阅读全文
posted @ 2020-08-07 11:45 DSHUAIB 阅读(33) 评论(0) 推荐(0)
摘要:图论 模板 Dijstra算法 #include#includeusing namespace std;int sq[505][50... 阅读全文
posted @ 2020-08-07 11:45 DSHUAIB 阅读(113) 评论(0) 推荐(0)
摘要:这道题就是一道简单的搜索题,用广搜就可以做出来,如果没有传送门,就往四个方向走,如果遇到传送门,就直接传送到另一个传送门,但是还有一... 阅读全文
posted @ 2020-08-07 11:44 DSHUAIB 阅读(82) 评论(0) 推荐(0)
摘要:普通(原理自行理解) int Fast_power(int a,int b)//a:底数,b:指数 { int s=1,base=a... 阅读全文
posted @ 2020-08-07 11:43 DSHUAIB 阅读(53) 评论(0) 推荐(0)
摘要:此题就是广度优先搜索题再稍加修改即可,再队列不为空时,一直通过第一个元素扩展出其他点 根据广搜的性质,第一个被存入队列的点的步数一定... 阅读全文
posted @ 2020-08-07 11:43 DSHUAIB 阅读(65) 评论(0) 推荐(0)
摘要:快速排序(升序) void qsort(int l,int r,int a[]){ int l1=l,l2=r; int mid=a... 阅读全文
posted @ 2020-08-07 11:42 DSHUAIB 阅读(90) 评论(0) 推荐(0)
摘要:这道题可以通过直接一行一行输出 大致可以将数字分为五部分 顶部,顶部下方,中部,中部下方,底部 代码 char top[10]={'-',' ','-','-',' ','-','-','-','-','-'};//如果有就为横线,没有就为空格,如“1”和“0” char left_top[10]= 阅读全文
posted @ 2020-08-07 11:41 DSHUAIB 阅读(49) 评论(0) 推荐(0)
摘要:这道题稍微思考一下就可以做出来 由题可知,每行每列可以隔开的同学不会重复, 所以只要将每行每列可以隔开的同学的对数统计出来,再从大到小排序,最后输出即可。 代码如下 #include<iostream> #include<algorithm> using namespace std; int ans 阅读全文
posted @ 2020-08-07 11:40 DSHUAIB 阅读(58) 评论(0) 推荐(0)
摘要:这道题直接模拟就可以做出来 了。 首先是顺时针旋转90°部分 如图一个3*3的矩阵 | 1 | 2 | 3 | | : : | : : | : : | | 4 | 5 | 6 | | 7 | 8 | 9 | 顺时针旋转过后 | 7 | 4 | 1 | | : | : | : | | 8 | 5 | 阅读全文
posted @ 2020-08-07 11:39 DSHUAIB 阅读(97) 评论(0) 推荐(0)