- 博客(13)
- 收藏
- 关注
原创 牛客《追债之旅》NC14700
题目链接:登录—专业IT笔试面试备考平台_牛客网题目简述:你需要在k天内赶往n号点,否则你的借你的钱的人就会跑路了,并且你每在路上花费一天,你的钱就会被别人挥霍,并且每天的挥霍数额不等,你通过一条边的时间为一天,并且有相应的费用。你需要算出你在赶往n号点之后你的花费加上他挥霍的钱的最小值。首先我们不难发现,题目的K很小只有10,因此我们可以利用这个k来算出在第k天到达n号点的最小路费。那么我们在进行最短路转移的时候就多记录一下天就可以了code:#include <b
2022-03-22 14:00:12
1470
原创 最短路树的简单应用 题目:(洛谷)P5201 [USACO19JAN]Shortcut G
首先什么是最短路树:最短路树是指通过Dijkstra算法在求出以某一个点为起点的最短路之后,以这个起点为树的根节点所构造的一颗树,这棵树满足如下条件,即:树上某点到根节点的路径对应原图上的一条最短路径。题目链接:[USACO19JAN]Shortcut G - 洛谷所以在知道上述知识后我们来看这道题,题目要求在一号点和某个点直接连一条边,使得牛在到所有牛在前往一号的过程中少走的路最大,题目强调了牛可以走新边的条件:(1)走了这条路会比原最短路径更短,(2)这条边出现在原最短路径的某个节点上。如果不满
2021-11-11 09:03:08
241
原创 树形dp洛谷P2996 [USACO10NOV]Visiting Cows G
题目链接:[USACO10NOV]Visiting Cows G - 洛谷题目大意:有个人要去拜访牛,这些牛都在树上,而且通过一条路径相连的两条牛只能拜访其中的一个,问最多可以拜访多少头牛。如果学过树形dp的同学肯定可以直接看出来这就是一道没有上司的舞会。没有学习过树形dp的同学可以继续观看了。首先我们不难发现树上的每个节点都有两种状态(选或者没选)。而他们的上下层之间是可以进行状态转移的,也就是说我们上面的节点的状态是和它下面的节点的状态相关的。所以我们可以由此联想到dp。我们定义dp..
2021-10-28 14:35:41
176
原创 洛谷P1284三角形牧场题解
题目简单描述:有n个长度一定的木棍,问这些木棍组成的三角形的最大面积为多少?题目链接:三角形牧场 - 洛谷我来分享一下搜索的解法,虽然正解是dp(bushi)。首先暴力搜索的思路就是我们枚举每一条木棍看把他加到三条边的那一条边中,但是这样显然会tle的。所以我们先考虑第一个优化就是进行排序,排序后的序列我们保证他是一个有序序列,在序列有序的情况下我们是从小到大排序,所以我们在进行了多次递归之后我们在回溯的时候是优先对于较大的边进行调整所以可以较为优先的搜到答案,可是我们发现这样做只有56分,那么我们
2021-10-11 20:24:08
303
原创 BOI2003 洛谷1892 (并查集入门)团伙
题目链接:[BOI2003]团伙 - 洛谷首先对于两个人,如果是朋友关系的话,那么就直接用并查集并在一起就好了。但是如果是敌人关系那么在操作的时候就会复杂一点了,我们先使用一个数组来记录每个人的敌人有哪些,vis1[这个人的编号][第几个敌人] = 敌人的编号。那么我们在处理敌人关系的时候 ,例如a和b是敌人,那么就用并查集把a和b的所有敌人并在一起。再把b和a的所有敌人并在一起。最后再统计答案的时候就看看有多少人的fa[i] = i即为答案的数量。code:#include <bits
2021-10-11 10:31:44
234
原创 洛谷P2417课程 二分图匹配模板
虽然这道题是道蓝题,实际上我觉得最多算是绿题。首先为什么会考虑到二分图匹配呢,因为教室之间不会相互建边,所以很自然的就想到了二分图的定义,但是这道题其实就是求一下当前状态下的最大匹配数,然后判断一下是否是完全匹配。首先简单的讲一下匈牙利算法,就用上题为例子,我们把教室放在左边,同学放在右边。这是第一个样例的图。其实匈牙利算法其实我觉得就是一种贪心的过程,如果当前可以匹配那么就匹配,如果同学已经被匹配了,那么就去找到 哪个同学是和那个教室匹配了,然后看看 那个教室能不能和其他同学匹配....
2021-09-26 17:52:44
234
原创 图论入门题目:旅行计划洛谷P1137题解
题目:P1137 旅行计划 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)题目描述小明要去一个国家旅游。这个国家有#NN个城市,编号为11至NN,并且有MM条道路连接着,小明准备从其中一个城市出发,并只往东走到城市i停止。所以他就需要选择最先到达的城市,并制定一条路线以城市i为终点,使得线路上除了第一个城市,每个城市都在路线前一个城市东面,并且满足这个前提下还希望游览的城市尽量多。现在,你只知道每一条道路所连接的两个城市的相对位置关系,但并不知道所有城市具体的位置。现在对于
2021-09-13 13:55:58
653
原创 NOIP 2012 文化之旅 题解
来水一篇题解,我看洛谷上说的这道题的数据特别水,于是就写了很水的做法。题目:P1078 [NOIP2012 普及组] 文化之旅 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)题目背景本题是错题,后来被证明没有靠谱的多项式复杂度的做法。测试数据非常的水,各种玄学做法都可以通过(比如反着扫),不代表算法正确。因此本题题目和数据仅供参考。题目描述有一位使者要游历各国,他每到一个国家,都能学到一种文化,但他不愿意学习任何一种文化超过一次(即如果他学习了某种文化,则他就不能到达其
2021-09-13 11:22:42
286
原创 分块学习心得
首先想必不用我介绍分块是一种很优雅的暴力算法。它的思想比较好理解,但是在实现的过程中还是比较复杂的。顾名思义分块就是把一个数列分成n快,每个块的大小为根号n。 dis = sqrt(a); //确定块的大小 num = ceil(1.0 * a / dis); // 确定有多少个块 for(int i = 1;i <= num;i ++) { //处理出每个块的左右边界(相邻块的左右边界是不重复的) l[i] =
2021-08-31 10:47:30
177
原创 NOIP2014寻找道路
我看很多大佬都用的是bfs,我今天来发一篇dfs的题解。作为一名省队水平选手我竟然不会bfs但是很显然这道题dfs更好理解(自卖自夸)很显然这道题中不是所有的边都能跑的,所以找到那些边可以走才是这道题的关键,剩下的就是一个最短路的板了,那么怎么找呢?首先我们在建正图的时候统计每个点的出度,然后在建反图。 我们用一个cnt[]数组来存在跑反图的时候每个点能到达的次数,而且还要用一个vis[]数组来标记每个点只能跑一次。很显然我们在跑完dfs后一个for循环遍历每个点看他的cnt[]值是不是
2021-08-26 12:38:41
109
原创 图的遍历题解落谷3916
看了很多这道题的题解,大多数都是反向建图和tarjan的做法。但是我觉得tarjan对于初学者来说有点复杂了。所以我就写了一篇正向建图的dfs做法。题目链接:P3916 图的遍历 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)代码上有详细的注释#include <bits/stdc++.h>#define N 100010using namespace std;struct node { int t,nex;}rt[N];int head[N],
2021-08-26 12:35:47
148
原创 NOIP2013落谷P1311选择客栈题解
O(N)做法看过来!!!!!我刚才看了一下题解好像还没有看到和我想法相同的同学。其实这道题也没有想像中的那么难。话不多说直接进入主题。首先题意想必大家都知道了。 首先直接枚举的方法肯定是过不去的,而且直接枚举的话还不怎么好写。该怎么办呢?因为我们要在两个人之间找到一个价格小于P的餐厅,所以我们可以不用去枚举两个人住在哪里。我们可以去求每个小于P的餐厅对于答案的贡献是多少。(思路转化,由已知条件去求另一个东西)如果我们这样想的话就会好想很多。也就是说符合条件的餐厅两边的客栈都是符合
2021-08-26 12:30:41
245
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人