🌓

蓝桥杯真题——分巧克力(二分)

思路: 使用二分查找[1,1e5],每次取中值作为正方形边长x,统计在所有巧克力中能分割出多少块边长为x的正方形当正方形数量小于k时,我们知道边长越大能分割的数量越少,此时将区间更新为 [l,mid-1] 继续查找。当正方形数量大于等于k时,猜测x可以更大且能满足>=k,将区间更新为[mid,r] 12345678910111213141...

阅读全文

POJ1135 奇怪的电梯 DFS深搜

原题链接: https://www.luogu.com.cn/problem/P1135 考虑用dfs来做的话,单纯的深搜会超时,而且不一定搜出来的就是最小的(bfs: ?)我们需要一边判断当前搜到的按按钮数,取最小的存下来,同时存下状态进行记忆化搜索。 1234567891011121314151617181920212223242526272829...

阅读全文

蓝桥杯真题——路径之谜,DFS深搜

题目链接: https://www.lanqiao.cn/problems/89/learning/ AC代码如下: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636...

阅读全文

转载的一篇有关学习的文章

原文地址: https://www.zhangxinxu.com/life/2019/03/study/张鑫旭老师真是吾辈前进的灯塔 招聘高峰季,最近面试了一些人,聊到关于学习话题的时候,发现很多人有学不进去,没时间学的问题,加上之前断断续续有很多人咨询我关于如何学习的问题,我觉得可以好好讲讲我对于学习这件事的一些经验和看法。 这些经验与看法不局限于IT...

阅读全文

算法中一些关于质数的概念以及模板整理

首先质数的概念为: 质数(Prime number,又称素数),[1] 指在大于1的自然数中,除了1和该数自身外,无法被其他自然数整除的数 1. 怎么高效判断数n是否为质数?最为暴力的方法便是从2~n-1中逐个遍历得i,判断n%i==0是否成立,如果成立说明n不为质数(如下代码) 1234567bool is_prime(int x)&...

阅读全文

NOI2001 食物链(带权并查集)

先整理一下思路:A吃B,B吃C,C吃A,由此形成以下的环形关系因为会一直循环(即对3取余做条件),我们可以用一个并查集来维护查询他们的身份 想象一个食人族家庭来说明他们之间的关系第1代吃掉第0代,第2代吃掉第1代,第3代吃第2代,第0代会吃掉第3代那么如果有吃掉第3代的第4代,那么他必定与第0代是同一代 采用并查集,维护多一个数组d来表示当前节点到根节点...

阅读全文

剑指 Offer II 067. 最大的异或 (使用Trie树求解)

剑指 Offer II 067. 最大的异或 题目如下: 首先考虑使用朴素算法完成,数据的长度为10^5^,O(n^2^)的复杂度直接爆了,肯定会TL回顾一下Trie树的结构,我们可以将数组里的所有数二进制形式预处理出来一颗字典树 如对于 [3,2,1] 这个序列: 在第一层遍历中,我们首先选择 3 这个数 ,那么序列中什么数与3异或后最大呢? 观察3的...

阅读全文

数组模拟队列与单调队列

队列即是一个特殊的数组,这个数组最前面的元素称为 队头 尾部元素称为 队尾 1234567891011121314151617181920212223242526272829303132#include <iostream>using namespace std;const int N = 100010;int q[N];//[hh, tt] ...

阅读全文

栈的应用——单调栈

我们先考虑暴力做法: 1234567891011121314151617181920212223#include <iostream>using namespace std;const int N = 1e6+10;int arry[N];int main(){ int n; cin>>n; for(int...

阅读全文

数组模拟栈

数组模拟栈 stk[N] 栈; tt表示栈顶所在索引下标(初始时tt=0,表示栈为空) 入栈: ++tt,存入x。 stk[++tt] = x; 出栈: tt– empty: tt<=0时栈为空.top <= 0 ? “empty” : “not empty”; query: 返回栈顶元素 stk[...

阅读全文