随笔分类 - 算法入门到入土
刷题记录
摘要:题目链接 https://www.luogu.com.cn/problem/P1162 题目思路 主要是找到被1围着的0,但是刚开始找的最后一个,然后WA两个点,最后找到第一个0的位置,然后宽搜成功AC 题目代码 #include <iostream> #include <algorithm> #i
阅读全文
摘要:题目链接 https://www.luogu.com.cn/problem/P1141 题目思路 一开始觉着是个宽搜就兴冲冲地背一了波模板,然后很高兴的TLE三个 所以这题需要优化,不能每个点都跑一边bfs,所以应该将连通块染色,相当于把一条路上的元素都标记成一样的,最后通过一个数组来存每个连通块的
阅读全文
摘要:题目链接 https://www.luogu.com.cn/problem/P1451 题目思路 只需要搜索在四个方向且不为0的数字块即可 dfs和bfs都可 题目代码 bfs #include <iostream> #include <algorithm> #include <cstring> #
阅读全文
摘要:题目链接 https://www.luogu.com.cn/problem/P1332 题目思路 还是bfs题,但初始加入队列的有多个元素,所以我就没写成函数形式 题目代码 #include <iostream> #include <algorithm> #include <cstring> #in
阅读全文
摘要:题目链接 https://www.luogu.com.cn/problem/P2298 题目思路 依旧是bfs,记得这个有 无答案 情况 题目代码 #include <iostream> #include <algorithm> #include <cstring> #include <queue>
阅读全文
摘要:题目链接 https://www.luogu.com.cn/problem/P1746 题目思路 今天全是bfs题,这道题记住只有0可以走 题目代码 #include <iostream> #include <algorithm> #include <cstring> #include <queue
阅读全文
摘要:题目链接 https://www.luogu.com.cn/problem/P1747 题目思路 还是经典的bfs模板题,只是多了四个方向 题目代码 #include <iostream> #include <algorithm> #include <cstring> #include <queue
阅读全文
摘要:题目链接 https://www.luogu.com.cn/problem/P1443 题目思路 经典宽搜问题,记住马走日! 题目代码 #include <iostream> #include <algorithm> #include <cstring> #include <queue> using
阅读全文
摘要:题目链接 https://www.luogu.com.cn/problem/P1434 题目思路 这里借用一下小呆呆大佬(https://www.acwing.com/user/myspace/index/7416 )的图 如果用暴搜会有大量重复搜索,所以可以通过空间换时间。 DP思想:确定当前位置
阅读全文
摘要:题目链接 https://www.luogu.com.cn/problem/P1219 题目思路 dfs搜索,枚举每一行,查找合法的位置 关键:正对角线用一维表示为 \(u + i\),反对角线为了不超范围表示为 \(n - u + i\) 题目代码 #include <iostream> #inc
阅读全文
摘要:题目链接 https://www.luogu.com.cn/problem/P3397 题目思路 直接暴力求解,枚举$x_1 \sim x_2$,\(y_1 \sim y_2\) 或者二维差分 题目代码 暴力 #include <iostream> #include <algorithm> usin
阅读全文
摘要:题目链接 https://www.luogu.com.cn/problem/solution/P4995 题目思路 就是一高一低来回跳,由于数据大,所以答案用long long(用int只a一半) 题目代码 #include <iostream> #include <algorithm> using
阅读全文
摘要:题目链接 https://www.luogu.com.cn/problem/P2678 题目思路 记着存起点和终点。。 二分 mid 为两点之差 当前点和上一点的距离 >= mid时,更新上一点为当前点,当 < mid时cnt++相当于移除这块石头 当移除石头 ⇐ m 时 l 更新 mid 增大,>
阅读全文
摘要:题目链接 https://www.luogu.com.cn/problem/P1024 题目思路 二分 :根据题意,两根乘积 < 0,两根之间必有根,并且两根之差 >= 1,所以以1为大区间,若两根乘积为负则二分寻找 暴力 :因为保留两位小数,则每次缩小区间0.01,直接寻找乘积为0的两根,其平均数
阅读全文
摘要:题目链接 https://www.luogu.com.cn/problem/P1923 题目思路 利用快排 + 二分来实现分治,从而求得第k小的数 题目代码 快排 + 二分 #include<bits/stdc++.h> using namespace std; int q[5000005], k;
阅读全文
摘要:题目链接 https://www.luogu.com.cn/problem/P1098 题目思路 模拟,注意记录偏移量来去掉 ''-'' 题目代码 最傻的模拟 #include <iostream> #include <algorithm> using namespace std; const in
阅读全文
摘要:题目链接 https://www.luogu.com.cn/problem/P1518 题目思路 模拟农夫和奶牛行动路线,为了避免死循环,当ans到一定值时跳出 题目代码 #include <iostream> #include <algorithm> using namespace std; ch
阅读全文
摘要:题目链接 https://www.luogu.com.cn/problem/P1328 题目思路 用二维数组存每种情况的得分情况,然后枚举来计算分数 #include <iostream> using namespace std; int main() { int vs[5][5] = {{0, 0
阅读全文
摘要:题目链接 https://www.luogu.com.cn/problem/P4924 题目思路 顺时针转是第$i$行第$j$列的数字转移到第$j$行倒数第$i$列 \(temp[n - m + j][n + m - i] = g[i][j]\) 逆时针转是第$i$行第$j$列的数字转移到倒数第$j
阅读全文