UVa 12563 - Jin Ge Jin Qu hao(01背包)
给出剩余时间和想唱的歌,求最多能唱几首和最长时间。
较为简单的01背包问题,在算数目的时候顺便计算时间就好。
1 |
|
** 本文迁移自我的CSDN博客,格式可能有所偏差。 **
给出剩余时间和想唱的歌,求最多能唱几首和最长时间。
较为简单的01背包问题,在算数目的时候顺便计算时间就好。
1 | #include<iostream> |
** 本文迁移自我的CSDN博客,格式可能有所偏差。 **
给出一些长方体,求能叠成的最高的顶面长和宽严格递减的塔有多高。
几乎和嵌套矩形的一样,储存每个长方体的面,然后dp搜索。
1 | #include<iostream> |
** 本文迁移自我的CSDN博客,格式可能有所偏差。 **
给出4堆糖,往容量为5篮子里装任意一个在堆顶的糖,篮子里有相同颜色的就拿走,问最多能拿走几次。
定义四维数组记忆搜索。
1 | #include<cstdio> |
** 本文迁移自我的CSDN博客,格式可能有所偏差。 **
一个间谍要从第1个车站到第n个车站在T时刻与人接头。她可以灵活地在车站在各列车上穿梭,求在车站等待的最短时间。
书上给出了思路和主程序代码,剩下的就是输入了,用has_train存每个时刻每个车站的状态。每读入一辆车,就模拟至目标时间,储存它经过的站点。
1 | #include<iostream> |
** 本文迁移自我的CSDN博客,格式可能有所偏差。 **
给出系统组件的依赖关系,然后给出操作指令。
书上给出了安装和删除的代码,剩下就的没什么难度了。分配id,然后使用id操作。
用到了std::remove,在algorithm头文件里,返回一个迭代器。
1 | #include<iostream> |
** 本文迁移自我的CSDN博客,格式可能有所偏差。 **
有n个长度为1的线段,给出n个区间,第i个区间表示第i个线段所在的范围,求所给线段至少有几个间隙。
首先对区间进行排序,然后单次遍历,对每个求相交区间,当无法相交时,即有一个间隙。
这道题rank 1,截图留念:
1 | #include<cstdio> |
** 本文迁移自我的CSDN博客,格式可能有所偏差。 **
给出1到n的一个排列,求最少几次剪切粘贴后使序列升序排列。
加深搜索,枚举剪切的起点和终点,再枚举粘贴的切入点。然后当后继数字不正确的值h满足,d3+h>3maxd时剪枝。
1 | #include<cstdio> |
** 本文迁移自我的CSDN博客,格式可能有所偏差。 **
贪心部分的理论依据:前i个数可以凑出1~sum[i]的所有整数。
证明:
第二类数学归纳,n=1时成立,假设n=k之前所有项都成立,当n=k+1时。sum[k+1]=sum[k]+a[k+1]。只需证明能凑出sum[k]+1~su m[k+1]间的整数即可。设1≤p≤a[k+1],sum[k]+p=sum[k]+a[k+1]-(a[k+1]-p)。因为1≤a[i]≤i,易得sum[k] ≥k,a[k+1]-p≤k。所以一定可以凑出a[k+1]-p。所以只需从之前凑出sum[k]里面剪掉凑出a[k+1]-p的数就可以凑出sum[k]+p。所以 从1~sum[k+1]都可以凑出。
输入n个数,第i个数ai满足1≤ai≤i。对每个数添加符号,使和值为0。
排序后从最大的数开始贪心就好。这次用了一些c++不常用的特性写的,一开始缺了个头文件CE了。
1 | #include<iostream> |
** 本文迁移自我的CSDN博客,格式可能有所偏差。 **
给出订单需要时间和截止时间,求最多能完成多少,hint给了很详细的提示。
先按照截止日期排序,然后单次遍历,每次当前订单耗时小于之前订单最大值时,用当前订单替换耗时最长的订单,最终得到最优解。
1 | #include<cstdio> |
** 本文迁移自我的CSDN博客,格式可能有所偏差。 **
很久之前跳过去了这道题,现在看没什么难度,给出一个树的BFS和DFS的序列,输出这棵树。
用BFS顺序去分离DFS,然后记录每个结点的子结点就好了。这道题不清空vector居然是PE,而不是WA。
1 | #include<cstdio> |
** 本文迁移自我的CSDN博客,格式可能有所偏差。 **