刷题总结
Catherine-lisa
这个作者很懒,什么都没留下…
展开
-
AtCoder Beginner Contest 176 D - Wizard in Maze
题目链接:atcoder D题传送路线图的题目一般都会往bfs上想,因为这个题要用魔法的次数越少越好,所以优先走路,走不了再去用魔法~这个题有两个很巧妙的点:1、因为要同时存x,y两个点,用que = x1 * N + y1的方式直接存,后面用int x = que[s1++], y = x % N; x /= N重新获得xy2、用s和s1两个指针来进行bfs,并根据题意确定优先顺序#define _CRT_SECURE_NO_WARNINGS#include <cstdio>#原创 2020-09-01 21:52:42 · 182 阅读 · 0 评论 -
洛谷P2678跳石头和P3853路标设置的二分题解
我平时一般是每道题分开写博客的,但为什么这次两道题放在一起了呢?因为实在是太像了!但是它们是相似又相反的,在这好好分析对比一下。1、P2678 跳石头这道题是求最小值的最大值,画个图示如下:如果判断mid符合题意,那么先把mid存到ans里,然后l = mid + 1,往右边找如果不符合题意,r = mid - 1,往左边找代码就长这样(说实话我也没想到我能一遍过#include <cstdio>#include <iostream>#include <cma原创 2020-08-05 16:55:43 · 185 阅读 · 0 评论 -
洛谷P1678 烦恼的高考志愿二分和STL题解
和这道题死刚了一下午…对二分的认识加深了不少 但我还是好菜啊啊啊啊啊以这道题的数据范围暴力肯定过不了,下面两道题都是O(ologn)可以过的。基本的思路都是找到比分数大的最小的数,然后把它和前一个数(即比分数小的最大的数)与目标分数相减做比较即可。1、现说偷懒的STL大法用upper_bound函数找到比目标大的最小的数,返回其所在的位置,对比所有学校分数都低的数特判一下即可#include <iostream>#include <cstdio>#include &l原创 2020-08-04 19:06:10 · 562 阅读 · 0 评论 -
洛谷P5019 铺设道路的递归和贪心题解
写了一下午代码越发地觉得自己是个傻逼这和这篇博客并没有什么关系只是单纯地感叹一下这是一道2018、2013以及USACO都考过的题目,非常地经典,这里提供递归和贪心的两种题解。1、递归题目很简单,就是填坑嘛,能一起填的就一起填呗,这样省事,然后依次找可以一起填的子区间填就是了,发现处理过程非常相似就想到递归咯。这道题如果用暴力的话会超时,这里把能一起填的直接加就会简便一些,时间复杂度大致O(nlogn)具体细节见代码:#include <cstdio>#include <i原创 2020-07-25 17:15:38 · 181 阅读 · 0 评论 -
洛谷P1102 A-B数对的双指针和hash和(彩蛋)解法
题意很简单,就是找出有多少对满足A-B=C的A和B一开始看哦呦这不是个普及-题么,上来就暴力,然后果然 t掉然后开始优化:通过看题解 发现有重复数字时会有重复计算的情况,就出现了两种优化:1、B一个个列举,找到A的重复区间,就是下面的双指针法#include <iostream>#include <cstdio>#include <algorithm>using namespace std;#define MAXN 200005typedef long原创 2020-07-17 15:05:43 · 256 阅读 · 0 评论 -
洛谷P1164 小A点菜的dfs和dp题解
我又来了,因为我又干了和上次差不多的事:把一道dp的题写成了dfs(具体情况请看我的上篇博客)说不定是我搜索写得牛逼呢不同的是,这次我用dfs过了嘿嘿嘿,想用dp再来一遍先上dfs代码:#include <iostream>#include <cstdio>#include <vector>using namespace std;int n, m;vector<int> a;int ans = 0;void dfs(int dishes,原创 2020-07-12 20:07:55 · 230 阅读 · 0 评论 -
洛谷P1002 过河卒的dfs和dp题解
过河卒算是很经典的一道题了吧,NOIP 2002年的题目,我在学习递推的时候遇上的,明明是一道dp题,我看数据不是非常大(1≤n,m≤20,0≤马的坐标≤20)然后我就试了一下dfs,想练练手防止搜索忘了。上代码:#include <iostream>#include <cstdio>#include <cstring>using namespace std;int ans = 0;bool vis[25][25];int a, b, n, m;int原创 2020-07-08 15:09:55 · 1035 阅读 · 3 评论