08 2019 档案
摘要:A. There Are Two Types Of Burgers 水题。题意:给你面包片数,两种不同的肉饼数(制作一个汉堡要消耗两片面包和一片肉饼),之后再给你两种不同的汉堡售价,问你如何取得最大收益。 思路:照题意模拟即可 ,简单贪心。 #include <iostream> #include
阅读全文
摘要:A. Choose Two Numbers 题意:让你从A集合里取一个数a,B集合里也取一个数b,使得a+b同时不存在于集合A和集合B中 思路:直接取A和B集合中最大元素,最大元素相加必然不在A集合或者B集合里 #include <cstdio> #include <algorithm> #incl
阅读全文
摘要:题意:输入 A B X,表示 B 的权值比 A 多 X,以300为周期,求描述错误的数目 思路:标准带权并查集
阅读全文
摘要:并查集。 新兵入伍。三种操作:①入伍②合并队伍③查找一个队伍里面战斗力最弱的。注意队伍编号从0开始。 多了一个记录每个集合最小值的minn数组而已,然后判断的时候小心一点就可以了。
阅读全文
摘要:这是并查集很常见的题型。 对于A~B之间的和是S,其实可以理解成B比A-1大S; 这样和普通的并查集就很类似了。
阅读全文
摘要:大意:告诉你有n个点 m个边的无向图 然后问有多少点对 他们的路径上节点之间的距离都少于 x 思路: 并查集 离线处理。将边权值按从小到大排序,查询标号后按照从小到大排序。对于每次查询,依次将比当前查询值小的边加入并查集。
阅读全文
摘要:题意:输入n个点,要求选m个点满足连接m个点的m-1条边权值和sum与点的权值和ans最小,即sum/ans最小,并输出所选的m个点,如果有多种情况就选第一个点最小的,如果第一个点也相同就选第二个点最小的........分析:因为n<=15,所以可以暴力枚举出所选的m个点,然后对这m个点进行最小生成
阅读全文
摘要:最小生成树。 题意就是有N座城市,每个城市有一定的幸福值a[i]。对于任意两个城市i和j,如果a[i],a[j],a[i]+a[j]中任意一者的值为素数,那么他们的边权就是min(min(a[i],a[j]),abs(a[i]-a[j]))。问题就是这一幅图的最小生成树。显然,边一旦建出来了,这就是
阅读全文
摘要:并查集求最大集合中元素数量
阅读全文
摘要:建图+最小生成树
阅读全文
摘要:基础并查集 要注意的点就是成环和空集,成环即Union拥有相同的根的两个点必然就会成环,此时是输出“NO”的。 而空集是要输出“YES”的。
阅读全文
摘要:基础并查集,统计有多少个根节点即可。我这里用set
阅读全文
摘要:还是最基础的最小生成树。 这道题我是真的无语,不加#include <iostream>就会wa
阅读全文
摘要:典型的打怪兽贪心。 题目讲的是在你打游戏时面对了以一打多的情况,这时你开了无敌状态,有无限的生命,但是你的攻击力变为了1,试问你把所有敌人打倒时你消耗的最少生命值。将DFS与HP的比值进行从大到小的排序,然后按这个顺序依次打。
阅读全文
摘要:不得不说这道题的贪心策略对于那时我来说真的挺难想的,不过贪心策略难想好像就是贪心题目的特色? 按照结束时间排序,优先选取结束时间早的。
阅读全文
摘要:题意:从小到大每三杯第三杯免费,就是每第三杯不要钱,问你要花多少钱。 hint:贪心,就是简单的sort函数运用
阅读全文
摘要:这道跟前面的油田挺像的,不过从四个方向变成了八个方向
阅读全文
摘要:还是很简单的水题。不过他的边界条件我到现在还是不是很懂hhhh
阅读全文
摘要:还是迷宫只是从之前的二维变成了三维而已。
阅读全文
摘要:水题不多说。上代码
阅读全文
摘要:这道也是典型的DFS迷宫。算是简单的了。 /*对于此题的理解 一开始认为与走砖块差不多但后来发现有很多地方我实现不了 学习了此题便可以解决一系列找宝藏问题 这题重要的地方就是 1.奇偶剪枝 2.找到目标退出(最优路径便无需推出) 3.方向循环里该如何编写的学习 4.墙数与地图可行数对题目的优化*/
阅读全文
摘要:因为是否放在这个入门专题里的所以就没怎么想直接就做了。 但是超时了,于是去网上看题解去学DFS剪枝,但是神奇的是剪枝之后居然还是超时。 由于题目的N是小于等于10的 所以。。 如果不喜欢这样的骚操作。 当然推荐的还是楼天城的位运算剪枝。真的很神奇。想去了解的还是自行百度。
阅读全文
摘要:也是很简单的DFS水题,就跟求有多少连通块差不多。(只有上下左右四个方向有联通才是连通块)
阅读全文
摘要:传送门problem_link 这道就是DFS的入门题。没啥好说的 唯一要注意的可能就是输出格式吧,记得有空行
阅读全文
摘要:题目传送门problem_link 题意:给出一个区间,选择这段区间的某个子区间,使得在这段子区间内的元素最小值*这段区间所有元素之和最大。 具体看代码吧。
阅读全文
摘要:这道题就是最基础的单调栈。 所谓的单调栈就是,维护栈内元素使其保持单调性。有了单调栈我们就可以在O(n)的复杂度下解决一些特定的问题 这道题的意思是问你所有的牛都往右看,能看见牛的数目总和。 题目样例都解释的很清楚了。直接上代码吧。
阅读全文
摘要:这题没啥好说的。就是烂模拟,我的是这样想: 每次读三个数和两个运算符,如果第一个运算符是“+”或者“-”,后面的是“*”或者“/”那么就先将后面处理,之后将处理之后的值和还没用的数字再放回去,第一个运算符也同样放回。 其他情况便都是先算前面之后把处理之后的值和还没用的数字放回,将第二个运算符同样放回
阅读全文
摘要:这道题直接模拟即可,我也不是很懂为什么放在队列和栈里,估计学长是想让我们用栈和队列写吧。但是个人觉得数组更好理解,其实栈和队列跟数组本质上都差不多。 1 #include <bits/stdc++.h> 2 #define maxn 5000 + 10 3 int main(){ 4 int in;
阅读全文
摘要:传送门problem_link. 很简单的阅读题,主要要看懂题意:给你N个游戏,每个游戏的价格是Ci。之后给你M份钱,每份钱是Ai。 注意:钱是花掉一份才能有下一份,就像第二个样例,19块什么游戏都买不了,所以就不能用下一份钱,所以就是0份 hint:队列模拟即可 #include <bits/st
阅读全文
摘要:传送门(problem_link) 这道题目就是很普通的一道水题,容易错的点可能就是题目问你是最少要拆多少礼物。 ((()()(B)))这样的话最少应该是3个才对 当拆到()()(B)的时候直接拆有B的就行了,因为题目求的是最少 所以这道题的解题思路就是一直读,遇到"( "入栈,遇到" )"出栈,遇
阅读全文
摘要:#include <bits/stdc++.h> using namespace std; int main() { cout << "Hello, World!" << endl; return 0; }
阅读全文