HGDB
HGDB
全部文章
分类
学习笔记(1)
未归档(2)
概念(1)
模板(4)
转载(1)
题解(40)
归档
标签
去牛客网
登录
/
注册
HGDB的博客
TA的专栏
26篇文章
0人订阅
鸽子的每日一题
13篇文章
1423人学习
算法竞赛入门课习题
13篇文章
1267人学习
全部文章
(共49篇)
Cut
来自专栏
思路 这题和POJ 3253很像,有兴趣可以去看看 可以试着反向思维考虑,将n个长度为1的序列合并成一个长度为n的序列,合并的代价就是合并前的两个序列之和 最佳的合并方法应该是尽可能多的合并长的木板,所以最优的策略应该是将目前所有序列中长度最大和次大的序列合并 不妨将原序列按降序排列,每次取出最大的...
贪心
优先队列
2020-06-06
8
940
wyh的物品
来自专栏
思路 这题考虑二分答案,既选k个物品总价值与总重量的比值 价值 等式两边同时乘可以得到 我们要所选的k个总单位价值最大,即要选的数量中 最大,所以二分的check函数对按降序排列,算出前k个之和是否大于0,大于0就说明当前单位价值可以到达,反之不能 代码 #pragma GCC target(...
二分
2020-06-05
8
948
Cube Stacking
来自专栏
思路 先贴个翻译 很明显是裸裸的并查集。 先开一个fa数组表示这个箱子在哪个集合中,要合并就直接把fa【x】 = y就表示集合x加入到集合y里面 开一个ran数组统计每个集合中的数量,合并的时候就把该集合的ran加到另外一个集合就好 代码 #include<cstdio> #inclu...
2020-06-05
4
676
德玛西亚万岁
来自专栏
思路 因为题目的数据很小,所以直接二进制枚举就好了。 思路就是枚举每一行的二进制形式,1表示有人,0表示没人,dp[i][[j]表示第i行的放置状态是j 下面考虑下判断操作是否合法: 1、首先上一层 放了人的地方下一层必须不放,既上一层第 i位位1,下一层第i位必须为0,上一层第 i 位为0下一...
压状dp
二进制枚举
2020-06-02
2
860
新建 Microsoft Office Word 文档
来自专栏
思路 这里我是用了一个bool数组 表示第i个文档是否存在,然后建一个set里面存没有建的文档 建立文档的时候直接取set的首元素就好,删除就查询,若为true就输出Successful,并向set中插入该元素 简单来说直接模拟就好 代码 #pragma GCC target("avx,sse2,s...
set
模拟
2020-05-31
4
907
FBI树
来自专栏
思路 1、T的根结点为R,其类型与串S的类型相同 2、若串S的长度大于1,将串S从中间分开,分为等长的左右子串S1和S2;由左子串S1构造R的左子树T1,由右子串S2构造R的右子树T2 意思就是如果这个串都是0那根节点就是B,都是1根结点就是I,有0也有1根节点就是F 树的遍历通常都是用递归实现,这...
递归
2020-05-31
6
843
逆序数
来自专栏
思路 这题可以用树状数组做个数组![图片说明](https://www.nowcoder.com/equation?tex=c_%7Bi%7D "图片标题") 表示元素 i 是否存在,为1表示存在 第i个元素X的逆序对个数就是在i前面的数并且比i大,即 c[x] ~ c[n]位置为1的个数 树状数...
2020-05-29
2
746
竞赛技巧
来自专栏
思路 这题考的应该是自己写一个排序的规则,可以写一个cmp函数,像这样: bool cmp (const node &A,const node &B){ if(A.h != B.h) return A.h < B.h; if(A.m != B....
2020-05-29
4
846
栈和排序
来自专栏
思路 要让字典序最大很明显就要让更大的那个数先出栈。 我这里用了一个数组 表示第i项到第n项的数的最大值。 如果栈顶元素大于 第i项到第n项的最大值,说明如果让这个元素出栈此时的字典序肯定会更大。 如果栈顶元素小于 第i项到第n项的最大值,那就让该元素入栈,因为让大的先出栈总总能保证字典序最大 ...
2020-05-29
10
1267
值周
来自专栏
思路 最开始懒得离散化直接开1e8的数组用差分做,提交发现能ac,良心出题人啊给了这么大的空间 就说明这个位置有人,因为可能多次赶一个地方的人,所以差分数组有可能是负数 如果没学过差分的同学可以去看看这篇大佬的博客 正解应该是离散,计算被清除的区间长度,总长度减掉区间长度加一就是答案。维护终点即可...
差分
离散化
2020-05-28
4
713
首页
上一页
1
2
3
4
5
下一页
末页