
Algorithm
一些常用算法的题目练习,包括在比赛时补的题。
乡野麦穗
未来是否繁花似锦,源自我们当下之努力。做一个勇敢的人,做一个好奇的人,做一个坚定的人,翻山越岭,事竟成。
展开
-
poj3061:Subsequence(最短子序列和) -- 前缀和与二分
题面:题目链接: http://poj.org/problem?id=3061题目大意:给出了一个N个正整数(10 <N <100 000)的序列,每个正整数小于或等于10000,并给出了一个正整数S(S <100 000 000)。编写程序以查找序列中连续元素的子序列的最小长度,其总和大于或等于S。题目分析:求连续元素的子序列,可以知道我们最后得到的序列是原序列中的一个区间,要想求出序列中某个子序列的和,我们可以采用前缀和的知识,例如 l ~ r 的区间.原创 2020-10-27 09:47:44 · 1220 阅读 · 0 评论 -
基础模板--快速幂
题面:题目链接:快速幂 // 注意用 long long #include <cstdio> #include <string> #include <cstring> #include <iostream> #include <algorithm> using namespace std; const int maxn = 205; long long a,b,p; long long qsm(lo..原创 2020-10-16 20:07:53 · 208 阅读 · 0 评论 -
最小生成树详解(模板 + 例题)
作为一个伪ACMer,先来首广为人知的打油诗:模拟只会猜题意,贪心只能过样例,数学上来先打表,规律一般是DP,组合数学碰运气,计算几何瞎暴力,图论一顿套模板,数论只会GCD,递归递推伤不起,搜索茫然TLE,分治做得像枚举,暴力枚举数第一,数据结构干瞪眼,怒刷水题找信心。文章目录1、什么是树2、最小生成树3、最小生成树的应用4、实现最小生成树的两种算法4.1 prim (普里姆算法)4.2 kruskal (克鲁斯卡尔算法)5、总结1、什么是树如果一个无向连通图不包含回路(连通图中不存在环),.原创 2020-10-15 16:04:26 · 149731 阅读 · 51 评论 -
Educational Codeforces Round 94 B. RPG Protagonist
题面:题目大意:给出一个人 Y 和跟随者的背包最大容量p、f,现在有 cnts 把剑 和 cntw 把斧头,每把剑的重量是 s,每把 斧头的重量是 w,问 Y 和他的跟随者最多总共能容纳多少的剑和斧头?考察点: 贪心、枚举。侃侃:由于剑和斧头的数量都是随机数量的,简单的我们可以一眼就看出需要 多少把剑和多少把斧头对于 Y 和其跟随者是最优的(例如给出的样例),但是一旦稍微复杂点,我们就很难看出了。我们并不知道要拿多少把斧头,多少把剑对于 Y 的背包是较为优秀的选择,也不知道留.原创 2020-10-14 20:24:01 · 181 阅读 · 0 评论 -
Educational Codeforces Round 96 D. String Deletion -- 尺取
题目描述:题目大意:给出一个由 0 和 1 组成的字符串,可以对字符串进行操作,每次操作分为两步:删掉某个位置上的字符。将前缀字符相同且数量最大的所有字符删掉。问最多可以将这个字符串最多操作多少次?侃侃:题目要求我们求出这个字符串可以最多操作多少次,那么我们就需要采取一种策略使得每次选择的结果是最优的。如果字符串中相邻的字符之间都是不同的,例如 101010,我们从某个位置删掉一个字符后,由于前缀中没有相同的,所以删掉第一个就可以。如果字符串中相邻的..原创 2020-10-13 15:18:53 · 205 阅读 · 0 评论 -
牛客IOI周赛19-普及组 A:小y的考试 (自定义排序)
吐槽:这道题没什么难的,题意也很好懂,但是我竟然忘了自定义排序函数时使用时还需要加上cmp,结果就很尴尬了,另外 sort 的时候也要注意数组的范围 sort(0,3) 只能将数组中 [0,3) 中的数进行排序。题面:水题没水着,被水戏弄啦。 #include <string> #include <cstdio> #include <cstring> #include <iostream> #include <algorith.原创 2020-10-05 21:40:14 · 346 阅读 · 0 评论 -
Codeforces Round #674 (Div. 3) A ~ D 题
文章目录1、A. Floor Number2、B. Symmetric Matrix3、C. Increase and Copy4、D. Non-zero Segments1、A. Floor Number题目链接: A. Floor Number题目大意: P 在 n 号房间,除第一层有两个房间外,之后每一层都有 x 个房间,算一下 P 在第几层?考察点: 好像没什么好侃的。。。。。Code: #include <string> #include <cst原创 2020-10-05 00:44:59 · 202 阅读 · 0 评论 -
关于线段树的感悟(Segment Tree)
文章目录线段树的感悟 :线段树的 Introduction :线段树长个啥样子?线段树的基本结构 :线段树经常处理那些区间问题 ?线段树需要注意的地方 :线段树的基本操作 :1、Struct结构体存储2、 Build3、Update4、Query :Lazy(懒) 标记应运而生加上 Lazy 标记的其他操作 :总结 :例题(模板题):线段树的感悟 :学过的东西一定要多回头看看,不然真的会忘个干干净净。线段树的 Introduction :English Name : Segment Tree原创 2020-09-27 12:08:26 · 368 阅读 · 2 评论 -
Poj1579:Function Run Fun -- 记忆化搜索板子
题面:侃侃:题目简明扼要,按照我们的习惯,直接按照选择语句进行递归,走一发,然后就会遇到下面的结果:原因可想而知,递归的层数太多,而且还是多组测试数据,所以说一旦某个数据范围过大,则凉凉啦,从根源出发,如果在第一次递归的时候就先记录下每个状态的值,那么在第二次如果遇到同样的状态,就不需要再走之后的路了,直接就可以得出这个结果。那么用什么来存储每个状态的值呢? 我们发现有三个数 a,b,c,假设 a = 15,b = 16,c = 14,可以选择用一个三维数组记录这个状态 dp[a]原创 2020-09-08 17:05:55 · 227 阅读 · 0 评论 -
牛客IOI周赛18-普及组 C:智斗恶龙 -- BFS +尺取
文章目录1、题面:2、题目链接:3、考察点:4、侃侃:5、Code:1、题面:2、题目链接:智斗恶龙3、考察点:BFS、STL库的运用、区间离散化。4、侃侃:需要注意的几点:只能从起点出发走 d 步,方向可以任意(也就是说我们需要记录一下走的步数)。至少需要 x 种不同的能量值中的最小差值(当我们选刚好 x 的时候,差值一定是最小的,但是如果有 x + 1个,这时候就有两个区间了: 1 ~ x, 2 ~ x + 1),所以我们就需要去记录并且超过 x 的时候就需要枚举找到最合适原创 2020-09-07 22:54:31 · 236 阅读 · 2 评论 -
Leetcode:974. 和可被 K 整除的子数组 --前缀和,哈希,同余定理
题目链接:.和可被 K 整除的子数组题目:侃侃:先考虑一下暴力(必然是不行的),通过暴力开拓思路,通过暴力来个双循环进行计算每一段的和,然后进行统计。 int res = 0; for(int i = 0; i < A.length; i ++) { int sum = 0; for(int j = i; j < A.length; j ++) { sum += A[i]; if(sum % K == 0) { res ++; } } }原创 2020-05-27 13:45:47 · 410 阅读 · 0 评论 -
AtCoder Beginner Contest 168 D - .. (Double Dots) --最短路树
题目:题目链接:点我就可以做题啦题目大意:给一个双向图,以 1 号节点为根节点,在其他节点上竖立一个牌子,代表可以到达几号点,问最后是否存在这样一棵树:满足所有点都可以到达 1 号点 -- 并且每个点到 1 号点的距离都是最短的。 侃侃:先来看一下第二个样例: 6 9 3 4 6 1 2 4 5 3 4 6 1 5 6 2 4 5 5 6我们发现如果要在每个节点的位置竖立一个牌子,那么一定是竖立它的父节点(因为我们最 后要想到达 根节点,必然是向上走的),所原创 2020-05-18 10:01:33 · 317 阅读 · 0 评论