洛谷刷题记录
天下第一行书
这个作者很懒,什么都没留下…
展开
-
CF545C Woodcutters
知识点:贪心难度:3看到这个题应该能感受到贪心的玄学了,感觉就是这样做的,,,并不会严格的证明#include <bits/stdc++.h>#define fi first#define se second#define pb push_back#define mk make_pair#define sz(x) ((int) (x).size())#define all(x) (x).begin(), (x).end()using namespace std;typ原创 2022-02-04 01:59:52 · 177 阅读 · 0 评论 -
P1281 书的复制
知识点:二分,贪心这个题主要是二分,读题可以看到最小化最大值的意思,所以是从右到左的二分,判定条件就是给定一个最大值,能不能让这些书划分成k个最值小于等于它的连续子段,这个判断函数就是用贪心的思想,因为是连续的子段,所有比较好写,太规整了,最后就是输出,这个题的输出也简化了,后面的尽可能的要多干点活,这样前面的就有可能没活干,以前的数据是会出现这种情况的,但是现在的数据保证每个人都有活可干,所以还是放心的输出就行,最后需要注意的是本题输出的是下标,并不是书的页数,#include <bits/st原创 2022-02-03 14:49:39 · 258 阅读 · 0 评论 -
P2033 Chessboard Dance
难度:5模拟做这道题是因为它比较简单,只有两种操作,一个转向一个是前进,转向是比较简单的,麻烦一点的是前进操作,但是只是分类讨论,两种情况,第一种情况,判断当前点在不在这个前进方向的边上,在的话不移动,跳过,第二种情况,找后面连续的障碍数,先用while循环找到当前方向上,最后一个连续障碍的位置,此时,这个障碍的前进一格,要么是空地,要么是超出范围1格,但是不用分类讨论,因为输入的时候1到8的下标存储数据,所以周围是有一格的缓冲地带的,不会超出存储区域,如果是0到7存储数据就需要分类讨论了(一开始就原创 2022-01-25 11:26:18 · 438 阅读 · 0 评论 -
P2802 回家
难度:2这是一道广搜,状态应该是3元的,除了坐标就是血量,因为有的路虽然近,但是到不了终点,有的路虽然远但是加血,能够到达,状态用三元表示就能过了,不过吐槽一下,这个难度太低了,算法竞赛入门经典上面有一道十分相似的习题,是绿题,貌似只要是状态三元起步的就是绿题了#include <bits/stdc++.h>#define fi first#define se second#define pb push_back#define mk make_pair#define sz(x)原创 2022-01-24 18:53:21 · 272 阅读 · 0 评论 -
P3916 图的遍历
建立反向图,然后从大到小遍历顶点,进行深搜,这样能到的点对应的答案就是遍历时出发的点#include <bits/stdc++.h>#define fi first#define se second#define pb push_back#define mk make_pair#define sz(x) ((int) (x).size())#define all(x) (x).begin(), (x).end()using namespace std;typedef lo原创 2022-01-24 15:01:28 · 130 阅读 · 0 评论 -
P5139 z小f的函数
难度:4一道一元二次函数背景的模拟题,我感觉比较简单了,基本就是照抄,先在演草纸上面写出来123操作之后的系数,然后照着写就行了,就连这道题里面最难的4操作,我看了看洛谷的题解,都往麻烦的地方写,先判断对称轴在不在所给的区间内,然后用max,min判断最大最小值,不香吗,结果我看题解都是各种分类讨论,写麻烦了,#include <bits/stdc++.h>#define fi first#define se second#define pb push_back#define mk原创 2022-01-17 10:06:45 · 163 阅读 · 0 评论 -
P2206 奶牛芭蕾
难度:4模拟,不涉及一点算法,写了32分钟直接过了,有点惊喜的,而且题目里面的特判我没有写,想着先看看主干是不是对的,结果还是通过了,说明测试数据里面没有-1的情形思路一开始想着在地图上模拟,这样子需要把奶牛放到中间,而且地图需要开的很大,因为是二维的,而奶牛只有四个脚,比较浪费,所以想到了直接对四只脚的坐标进行模拟,也就是x和y,记录中间的最大最小值,然后两个最值分别的差值相乘即可,然后是具体实现,首先是要映射,把四只脚分别映射为0123,顺序是左上,右上,左下,右下,这个需要记住,看移动一只脚的操原创 2022-01-14 11:58:22 · 111 阅读 · 0 评论 -
P1978 集合
难度:4模拟,根据题意,经过思考,给定一个k,可以将无穷的数分成无穷条链,链的起点就是不能整除k的数字,然后这个链后面的一个数就是乘以一个k,再后面再乘以一个k,以此类推,根据题意,倘若我们对其施加到无穷的链上面,那么最大的集合一定是链的第一个数字选取,第二个不要,第三个要,,等等,所以我们输入之后,先排序,然后从小到大遍历,如果它不能被k整除,那么当然可以选取,如果它能被k整除,就看它前面的一个数字在不在,也就是除以k的数字,在的话就不选,不在就选,最后输出统计即可,#include <bits原创 2022-01-14 09:45:15 · 97 阅读 · 0 评论 -
P1076 [NOIP2012 普及组] 寻宝
模拟题,大致来说需要三个数组,两个是记录输入的信息,然后一个是输入的第二个信息取余之后的值,因为我们通过样例发现,第二个信息,会超出楼层有梯子的总数,所以为了后面一圈遍历就能够找到上楼的房间,需要对它进行取余,但是第二个信息又是计算最终结果需要用到的,所以不能用取余覆盖原来的值,所以就只能再开一个数组来记录。#include <bits/stdc++.h>#define fi first#define se second#define pb push_back#define mk m原创 2022-01-14 07:57:15 · 339 阅读 · 0 评论 -
P1483 序列变换
首先这是一道模拟,不需要用什么高级的数据结构,看题目,查询是10的5次方,如果一步一步模拟的话,数据是10的6次方级别,那么肯定会超时,试了一下是60分,然后题目有个提示,特意说了一下,就是输出的查询操作的次数是10的4次方级别的,那么可以从这里入手,最直观的改变思路就是对于操作一我们不是每次都模拟一遍,而是先存储起来,等到输出操作的时候搬出来用,怎么存储,可以用散列的思想,下标就是x,然后我们可以找当前坐标的因数,看看这个因数对应的是不是需要加上某个数,数组散列时间复杂度是1,求因数的复杂度是根号,所以最原创 2022-01-13 19:43:25 · 194 阅读 · 0 评论 -
P2397 yyy loves Maths VI (mode)
本来是练习模拟,但是做了这个题,这个题和算法也是有一点关系的,题目让找众数,也就是出现次数最多的数,因为数据量很大,用普通的方法会超时,题目里面一个最重要的条件,这个众数的出现次数一半以上,那么输入一个数,如果和前面的一个数不一样,就把两个数都删了,也就是说一换一,如果和前面的一样那就先存着,最后剩下的一定就是若干众数,#include <bits/stdc++.h>#define fi first#define se second#define pb push_back#defin原创 2022-01-13 13:53:31 · 229 阅读 · 0 评论 -
P2348 三国杀I(洗牌&发牌)
不难,按照题目模拟就行,我就说一个坑点,牌不够是牌不够给所有人发四张,而我一开始理解为只需要判断是不是输出的那个人够不够四张牌,从来没玩过三国杀#include <bits/stdc++.h>#define fi first#define se second#define pb push_back#define mk make_pair#define sz(x) ((int) (x).size())#define all(x) (x).begin(), (x).end()us原创 2022-01-13 11:57:23 · 430 阅读 · 0 评论 -
P1193 洛谷团队训练VS传统团队训练
比前面的黄题要难一点,主要是要理清思路,首先不论是学校还是洛谷,都要把所有的题目加载,而不是说没人写的题目就不加载费时间,然后第二点,在学校,还有两种方法,去机房和自己弄,这里要明确取两者的最小时间,这里是以某人某道题为单位进行比较,所以要开两个数组,记录某人某道题分别去机房和自己弄,这道题耗费多少时间,最后取小的加,然后是自己弄,这里和学校洛谷有区别,自己做是做哪道题就装哪道题,而不是所有都装,这个要算在某人某道题里面的,#include <bits/stdc++.h>#define f原创 2022-01-13 11:10:08 · 223 阅读 · 0 评论 -
P5269 欧稳欧再次学车
一道模拟题,结合样例应该不难理解,题目也比较详细,把自己的话转化为程序就行,然后一个需要注意的地方,数据到了10的6次方,虽然输入的那些数据在int的范围内,不会超,但是结果是两个相乘的累加,可能会超,所以结果用longlong,然后程序里面只有一处需要类型转换,已经写出,我看了看洛谷的题解,都是一股脑的把所有的数据都设成longlong而不去找哪里会溢出,感觉有点随意然后还有一点转速最开始是L,这个题目没说,但是自己应该能猜的到#include <bits/stdc++.h>#defi原创 2022-01-13 09:31:50 · 123 阅读 · 0 评论 -
P2655 2038年问题
老生常谈的计算时间的题,我比较习惯设置一个二维数组和一个函数来区分闰年,然后两点,1是思路,采用的是将时间拨回到该年的1月1日0点0分0秒,然后再往后加,依次算出年月日时分秒,2是注意,月和日起始是从1开始的,它的1就相当于时分秒的0,是不起作用的(一开始不用加进去的),然后别的就没有需要注意的地方了,还是比较好写的题目#include <bits/stdc++.h>#define fi first#define se second#define pb push_back#defin原创 2022-01-13 08:30:57 · 172 阅读 · 0 评论 -
P5006 [yLOI2018] 大美江湖
一道完全没有坑点难点的纯模拟,除了题面看起来挺长的,题意也很简单,看了洛谷的题解很多用了oop,很长#include <bits/stdc++.h>#define fi first#define se second#define pb push_back#define mk make_pair#define sz(x) ((int) (x).size())#define all(x) (x).begin(), (x).end()using namespace std;ty原创 2022-01-13 07:35:52 · 79 阅读 · 0 评论 -
P1318 积水面积
这种题的做法应该五花八门,属于比较基础的算法题,我这个是递推的方法,两个数组来记录某一元素两边的最大值,然后由此来计算#include <bits/stdc++.h>#define fi first#define se second#define pb push_back#define mk make_pair#define sz(x) ((int) (x).size())#define all(x) (x).begin(), (x).end()using namespace原创 2022-01-12 20:04:22 · 207 阅读 · 0 评论 -
P1532 卡布列克圆舞曲
为什么写的代码这么瘦呢?总觉得不好看,,这道题就是模拟,然后需要注意的就是longlong,这个应该一眼就能看出来,然后就是纯模拟,想到什么需要用什么就去使用即可#include <bits/stdc++.h>#define fi first#define se second#define pb push_back#define mk make_pair#define sz(x) ((int) (x).size())#define all(x) (x).begin(), (x).原创 2022-01-12 17:12:33 · 535 阅读 · 0 评论 -
P1172 安全逃离
这是一道错题,也就是给的答案和题目的要求对不上,题目说的是如果删掉一个可以逃走的话先输出1,这个1答案是不用输出的,然后要输出最小的那个可以删掉的序号,答案是要按顺序输出所有满足的,第三是输入的时候后面可能会有乱七八糟的数据,看别人用了一个gets就过了,,,总之这是一道错题,真的浪费时间。#include <bits/stdc++.h>#define fi first#define se second#define pb push_back#define mk make_pair原创 2022-01-12 16:39:06 · 2621 阅读 · 0 评论 -
P1617 爱与愁的一千个伤心的理由
分成函数来写,两位数,三位数,四位数,不算难#include <bits/stdc++.h>#define fi first#define se second#define pb push_back#define mk make_pair#define sz(x) ((int) (x).size())#define all(x) (x).begin(), (x).end()using namespace std;typedef long long ll;typedef原创 2022-01-12 13:18:15 · 137 阅读 · 0 评论 -
P2728 [USACO3.2]纺车的轮子 Spinning Wheels
一道模拟题,然后有一个需要注意的点,也是我一开始错的点,例如,起始度数是10,宽度是10,那么终点度数是20,我一开始理解成应该是19,所以写错了,之所以会这么理解应该是受数组下标的影响,以为一度的宽度就是1,这是错误的,然后其它的地方比较好写,转了360圈,轮盘回到原位置,这个可以作为一个判断的条件#include <bits/stdc++.h>#define fi first#define se second#define pb push_back#define mk make_原创 2022-01-12 09:25:02 · 179 阅读 · 0 评论