02 2021 档案
摘要:定义: 尺取法,又称双指针法(此指针非彼指针)。双指针顾名思义,有两个“指针”,根据实际情况不断地移动,从而推进区间的左右端点以得出答案 适用性: 适用于移动方向确定(一般是从头到尾)、连续区间的最小或最大问题 板子 int r = 1, l = 1;//确定两个指针的初始位置 while(l <=
阅读全文
摘要:传送门 食物链 题意: 有三种动物,其食物链形成一个环,即A吃B,B吃C,C吃D。 现在有n个动物,每个动物都属于ABC中的一种,给你k个描述,判断这k种描述的真假,求出假话的总数。 每次描述输入三个数字d,x, y。 d = 1时,表示X和Y是同类 d = 2时,表示X吃Y 思路: 对于每个动物,
阅读全文
摘要:优先队列朴素版之简单应用 合并果子 题意: n个果子,数目为tr[i],进行n - 1次合并操作,每次都消耗两堆果子的重量和的体力,耗费的总体力等于每次合并所耗费的体力和,求最小值 思路1: 使用秘技STL,priority_queue来操作,但这个优先队列是从大到小的,有一个非常非常非常简便的方法
阅读全文
摘要:dequeue双向队列 dequeue<int>que;//创建双向队列 que.push_front()//在队列前面塞一个元素 que.push_back()//在队列后面塞一个元素 que.pop_front()//删除队列第一个元素 que.pop_back()//删除队列的最后一个元素 q
阅读全文
摘要:传送门 L - 同余方程 题意: 关于x的同余方程ax三1(mod b)的最小正整数解。 思路: 板子题 #include<bits/stdc++.h> using namespace std; #define inf 0x3f3f3f3f #define MAX 500000 + 5 typede
阅读全文
摘要:威佐夫博弈 黄金分割比 经典例题: 有两堆石子,有两个绝顶聪明的人在玩一个游戏,每次每个人可以从一堆石子中取任意数量但不少于1个的石子,或从两堆中同时取走相同数量的石子,最后一个取完石子的人获胜。 面对博弈题,最重要的找出必败点 (0,0)(1,2)(3,5)(4,7)(6,10)…… 通过观察可以
阅读全文
摘要:什么是循环字符串的最小表示法 就是对于一个字符串来说,其同构字符串中字典序最小的一个 比如说:S = bacd,则其同构字符串有 acdb、cdba、dbac,其中acdb事S串的最小表示法,因为其字典序最小 如何求字符串的循环同构的最小表示 暴力的方法是,你将所有的同构都写出来,如何拍个序,输出第
阅读全文
摘要:概念: 顾名思义,单调栈即位满足单调性的栈结构,包括递增栈、递减栈。 指的是栈内元素从底到顶是单增、单减。一般来说从栈底到栈顶依次变大的就叫单调递增栈。 用途: 1.对于每个元素而言,可以看到之前比他大的所有的数和数量,且是依次的 比如:10 3 7 4 12 2.在1的基础上我们就可以知道右边第一
阅读全文
摘要:题意: 将n分成k个数,每个数不能为0,分法不能重复(不考虑顺序) 思路: 神奇的dp! dp[i] [j] = dp[i - j] [j - 1] + dp[i - j] [j] (dp[i] [j]指将i分成j份) 因为每个数不能为0,所以对于数i,先减去j,得到能支配的数,在将这些数进行分配。
阅读全文
摘要:传送门 题意: 给出n个矩形,把重合的矩形归成一个图形,问合并以后剩下几个图形 思路: 我开始想用dfs,但是发现不太行。 后来知道才是并查集 Orz 用一个结构体数组存矩形的左下角和右上角的坐标,再用一个一维数组来进行并查集的查找合并。 进行两层for循环,对i找i以后的矩形用不用合并,判断用不用
阅读全文

浙公网安备 33010602011771号