dengch

 

09 2023 档案

导弹防御系统
摘要:题目概述:现在R国更新了导弹防御系统,使得该系统拦截的导弹高度要么是严格上升的,要么是严格下降的。问拦截所有导弹至少需要多少套系统 解题思路:在拦截导弹一题的基础上,多引入了一个选择:导弹是归为上升子序列,还是下降子序列。可以使用dfs直接暴力枚举所有选择,当然中间会有剪枝。 #include <i 阅读全文

posted @ 2023-09-29 13:24 BkDench 阅读(50) 评论(0) 推荐(0) 编辑

拦截导弹
摘要:题目概述:有一套导弹拦截系统,其每次可以拦截的导弹高度都不能高于上一次拦截导弹的高度。现在有一些导弹飞来,问这套系统最多能够拦截多少导弹,若想拦截所有的导弹,最少需要多少套系统。 解题思路:第一问就是典型的LIS模型。第二问的关键在于将某枚导弹归为哪一类下降子序列,从而使得使用的系统最少。这里直接给 阅读全文

posted @ 2023-09-29 13:16 BkDench 阅读(39) 评论(0) 推荐(0) 编辑

最大上升子序列和
摘要:题目概述:给定一个序列,求解该序列的最大上升子序列的和 解题思路:我们在LIS的集合定义为:以i结尾的上升子序列的最大长度,那其实我们只需要将集合定义改为:以i结尾的上升子序列的最大和即可。 #include <iostream> #include <algorithm> #include <cst 阅读全文

posted @ 2023-09-29 12:55 BkDench 阅读(20) 评论(0) 推荐(0) 编辑

友好城市
摘要:友好城市 题目概述:有n个城市分布在一条大河两岸,现在,两岸的城市准备在河上修建桥。每个城市在河对岸都有自己的友好城市,只有友好城市之间才能建立桥。问最多可以修建多少座桥,且桥与桥之间互不交叉。 解题思路:我们可以先考虑怎样会出现交叉情况,当一侧的城市编号为正序(3,4),另一侧的城市编号出现倒序( 阅读全文

posted @ 2023-09-26 20:59 BkDench 阅读(18) 评论(0) 推荐(0) 编辑

合唱队形
摘要:合唱队形 题目概述:有n个同学,需要从中挑选n - k个学生。使得剩下的学生依据升高按照先递增后递减的规则进行排队。问最少需要排除多少个人。 解题思路:换个说法,题目意思就是使这个队列尽可能的长,所以排除的人就尽可能少。而这样的话,就转化为登山问题。 点击查看代码 #include <iostrea 阅读全文

posted @ 2023-09-25 22:15 BkDench 阅读(23) 评论(0) 推荐(0) 编辑

登山
摘要:登山 题目概述:有n座景点,海拔各不相同。一个登山团队想要尽可能多的到访更多的景点,他们先上山游访,而后选择下山,且一旦下山,就会保持下山的状态(海拔依次递减)。问他们最多能够访问多少个景点。 解题思路:也很容易将其抽象为最长上升子序列模型。可以将其分成两部分,前半部分是上山,即正序做dp;后半部分 阅读全文

posted @ 2023-09-23 19:46 BkDench 阅读(13) 评论(0) 推荐(0) 编辑

怪盗基德的滑翔翼
摘要:怪盗基德的滑翔翼 题目概述:怪盗基德可以选择一个方向,并沿着该方向进行滑行,规定他只能从较高的楼房移动到较低的楼房,问他最多可以走过多少栋楼房。 解题思路:很容易将该题抽象为最长上升子序列模型,需要注意的是本题可以选择滑行的方向,也就是正反方向分别进行dp,取最大值 #include <iostre 阅读全文

posted @ 2023-09-23 19:30 BkDench 阅读(158) 评论(0) 推荐(0) 编辑

c++中生成随机数
摘要:#include<iostream> #include<string> #include<algorithm> #include<ctime> using namespace std; const int INF = 1e9; int main() { //设置种子 srand((unsigned) 阅读全文

posted @ 2023-09-20 12:25 BkDench 阅读(36) 评论(0) 推荐(0) 编辑

priority_queue(优先队列)
摘要:优先队列底层模板:priority<type,container,function>,type:元素数据类型,container:容器一般是vector, function:比较函数 优先队列默认是大根堆,即堆顶元素为最大值:定义方法为 priority_queue<type>q或priority< 阅读全文

posted @ 2023-09-19 16:00 BkDench 阅读(34) 评论(0) 推荐(0) 编辑

atcoder313C
摘要:313C 题目概述:给定序列A,可以任选两个数,使其中一个数加1,另一个数减1.可以通过任意次操作,问需要至少多少次操作,才能使A中最大数和最小数差值不超过1。 解题思路:将该题进行抽象转化:1.我们需要将A序列转化为B序列,sumB=sumA。 操作次数为:\(\frac{\sum\limits_ 阅读全文

posted @ 2023-09-16 17:10 BkDench 阅读(12) 评论(0) 推荐(0) 编辑

导航

统计

点击右上角即可分享
微信分享提示