04 2022 档案
摘要:这道题目亿看就是二分,因为假设间距为n,能满足要求,那么比n小的数一定能满足要求。反正,n不能满足要求,则比n大的数一定不能满足要求,所以可以用二分来找到最大满足要求的间隔。 int l = 1,r = a[N];//针对此题目l与r应当做出相应调整。 while(l+1!=r) { int m=(
阅读全文
摘要:道题目就是二分而已,大体都一样,只是有一个小细节值得注意,在后面ans累加时需要分几种情况: 1.b[i]<=a[1],说明这个童鞋没好好复习,挂科了。 2.b[i]>=a[n],说明这个童鞋是个学霸。 3.else情况,说明这个童鞋不像前面两个童鞋不是挂科就是实力爆表,是个普通人。 程序: 1 #
阅读全文
摘要:又是被迫营业。 这道题目很简单但我错了 二分模板题. 1 int l = -1,r =N; 2 while(l+1!=r) 3 { 4 m=(l+r)>>1; 5 if(check(m)) l=m; 6 else r=m; 7 } 8 return l or r; 这个模板有几亿个细节值得注意: 1
阅读全文
摘要:这道题非常简单但为了应付完成老师的作业还是写吧 思路:与有向图(Cow Picnic S Cow Picnic S 更新了(在后面) - 王浩泽 - 博客园 (cnblogs.com))差不多,只是输入以及写法注意一下即可。有 普通mp写法 🔥推荐 宽搜写法 深搜写法(要剪枝)🔥推荐 vecto
阅读全文
摘要:解题思路: 从每头奶牛的节点开始做搜索,用dfs走遍所有路径(走到底,不回头)。每遍历到一个节点该节点遍历次数就加一,最后所有奶牛都搜索完之后,检查每个节点的遍历次数,如果该节点的遍历次数等于奶牛数则该节点能被所有奶牛走到。 坑: 1.每头奶牛搜索的时候要有清空的vis数组记录走没走过该点,否则可能
阅读全文
摘要:题目 这道题目的主要思路是: 就是正常的dfs就有几个点值得注意: 1.我写的程序函数算一层循环里面再加一层循环 2.对角线的处理: 👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇
阅读全文
摘要:题目: 这道题目有几亿个坑来具体说一下: 1.熟悉的边界问题 2.需要输出printf 3.还需要一个a数组来记录p数组会被刷掉的数 4.在k>10或者c>m时都要return 程序: 1 #include<bits/stdc++.h> 2 using namespace std; 3 const
阅读全文
摘要:题目: 这道题目非常难简单就花了我一个上午小时而已这道题就在bfs的模板上加亿些东西即可,这道题有守卫之后就要+2,要按step顺序从小到大遍历因此新的节点入队后要根据step值从小到大排序,还有一个点值得注意这道题要用到手写队列。 这道题目可以用优先队列来解决,但是我不会为了更直观就用手写队列 这
阅读全文
摘要:题目: 这道题的思路是: 把景点之间的、起始点与景点之间的最短路径都用bfs求出来放入二维数组,数组的下标即景点的序号,数组的值表示他们的最短距离。 接下来将景点的浏览顺序做全排列,用到dfs,所有的全排列的组合求最小值。 注意: 1.dfs中需注意当完成排列时 (k2>k)计算路径总长时从起始点开
阅读全文
摘要:题目: 这道题非常简单: 就是一道非常简单的bfs模板题思路就不多讲了,主要讲一下坑: 1.end是一个函数 2.要有一个状态变量flag来记录能不能到 3.需要用 string (其实我也不知道怎么回事char一直错) 4.改string的时候各种地方都要改。 程序: 1 #include<bit
阅读全文
摘要:题目: 这道题呢需要用到一个知识点scanf("%1d",&a[i][j]);(精确输入一个数字在这里非常有用) 思路: 找到一个细胞数以他作为起点进行宽搜同时细胞数加1,所有能搜到点都对他的vis赋值为细胞数。 程序: #include<bits/stdc++.h> using namespace
阅读全文
摘要:题目: 这道题呢是一位的不需要用结构体一维数组就够。 bfs的模板加上亿点改动即可: 1.删掉所有结构体。 2.这道题不用for+方向数组 单个手写。 3.这道题不用ans,用vis代替即可(just like vis[old+1]=vis[old]+1),最后输出vis[k]。 这道题呢非常之难简
阅读全文