05 2024 档案

摘要:给你n个方块,其中每个方块具有它的长宽高(方块可以任意旋转放置),方块数量不限。现在你要堆一个高塔,上面方块的长和宽必须严格小于下面方块的长和宽。问你能堆起来的最大高度。先将方块以长和宽按从小到大排序,然后从小到大以此为底,求出最大高度。dp[i] = max(dp[j])+i.height (j. 阅读全文
posted @ 2024-05-27 14:11 XiaohuangTX 阅读(2) 评论(0) 推荐(0) 编辑
摘要:1:dp+二分 NlogN的复杂度 2:注意 road 与roads区别 3:注意输入不能用Scanner 4:注意格式 最后是要输出两个空行 假设存在一个序列d[1..9] = 2 1 5 3 6 4 8 9 7,可以看出来它的LIS长度为5。下面一步一步试着找出它。我们定义一个序列B,然后令 i 阅读全文
posted @ 2024-05-19 21:58 XiaohuangTX 阅读(2) 评论(0) 推荐(0) 编辑
摘要:一个数塔问题,以时间为纵坐标、位置为横坐标创建一个二维数组,然后从下往上相加。 状态转移方程:9>= j>=1时 dp[i][j]+=max(max(dp[i+1][j],dp[i+1][j+1]),dp[i+1][j-1]) j=0时 dp[i][j] += max(dp[i+1][j],dp[i 阅读全文
posted @ 2024-05-16 23:33 XiaohuangTX 阅读(1) 评论(0) 推荐(0) 编辑
摘要:寒假的时候,ACBOY要去拜访很多朋友,恰巧他所有朋友的家都处在坐标平面的X轴上。ACBOY可以任意选择一个朋友的家开始访问,但是每次访问后他都必须回到出发点,然后才能去访问下一个朋友。比如有4个朋友,对应的X轴坐标分别为1, 2, 3, 4。当ACBOY选择坐标为2的点做为出发点时,则他最终需要的 阅读全文
posted @ 2024-05-16 00:14 XiaohuangTX 阅读(2) 评论(0) 推荐(0) 编辑
摘要:简单卡特兰数题,卡特兰序列:1,1,2,5,14,42,132,429,1430············· 递推式f(n)=f(n-1)*(4n-2)/ (n+1) import java.math.BigInteger; import java.util.Scanner; public class 阅读全文
posted @ 2024-05-15 23:49 XiaohuangTX 阅读(1) 评论(0) 推荐(0) 编辑
摘要:思路:从顶层走到底层可以变为从底层走到顶层,dp[i][j]=a[i][j]+max(dp[i+1][j],dp[i+1][j+1]) import java.util.Scanner; public class hdu2084 { public static void main(String[] 阅读全文
posted @ 2024-05-14 22:18 XiaohuangTX 阅读(1) 评论(0) 推荐(0) 编辑
摘要:【题解】 假设有一种合法的放置方案,有n-1个位置,那么我们在末尾多放一个M,必定是一个合法的方案。(放F则不一定) 有n-2个位置的合法放置方案,我们在末尾多放FF,必定是一个合法的方案。(其实放MM也是必定合法的,但是会和上一种情况重复,不能考虑进去。FM和MF则不能保证合法) import j 阅读全文
posted @ 2024-05-12 23:04 XiaohuangTX 阅读(1) 评论(0) 推荐(0) 编辑
摘要:解法:从N中选出M个C[n][m],然后乘上错排公式;f[n]=(n-1)*(f[n-1]+f[n-2]);f[0]=0;f[1]=1; import java.util.Scanner; public class hdu2049 { public static int C(int a,int b) 阅读全文
posted @ 2024-05-12 17:02 XiaohuangTX 阅读(1) 评论(0) 推荐(0) 编辑
摘要:题目思路: 其实我还真没怎么看出来这个是递推(嘤嘤自己好菜哇)……不过很清楚的是我们需要求出每个人拿到的都不是自己的牌子的情况有几种,按照日常经验,如果前n个人已经做到了错排(也就是拿的都不是自己的牌子),当第n+1个人来的时候,他跟任意一个人交换后就能做到这n+1个人都实现错排,!!但是注意还有一 阅读全文
posted @ 2024-05-12 12:26 XiaohuangTX 阅读(1) 评论(0) 推荐(0) 编辑
摘要:import java.util.Scanner; public class hdu2046 { public static void main(String[] args) { // TODO 自动生成的方法存根 long[] aa = new long[51]; aa[1] = 1; aa[2] 阅读全文
posted @ 2024-05-11 23:27 XiaohuangTX 阅读(2) 评论(0) 推荐(0) 编辑
摘要:这道题的解法就是站在涂色后的最后一块,思考前一块是怎么涂色的就可以了,比如 如果最后一块的前一块是与第一块颜色不同的情况,则最后一块只有一种颜色可以涂,其方法的数目等于f(n-1),而当最后一块前面一块的颜色与第一块相同时,则倒数第三块一定与第一块的颜色不同,则涂到倒数第三块有f(n-2)方法,到倒 阅读全文
posted @ 2024-05-11 22:41 XiaohuangTX 阅读(2) 评论(0) 推荐(0) 编辑
摘要:import java.util.Scanner; public class hdu2044 { public static void main(String[] args) { // TODO 自动生成的方法存根 //坑点 long[] aa = new long[51]; aa[1] = 1; 阅读全文
posted @ 2024-05-10 14:48 XiaohuangTX 阅读(1) 评论(0) 推荐(0) 编辑
摘要:首先按每两个村庄的距离从小到大排序,因为最小距离的那条道路是必建造的; 每输入两个数,看他俩的老大是否一样,如果一样的话,说明这两已经连通了,不需要建造了,反之则建造。 import java.util.Arrays; import java.util.Scanner; public class h 阅读全文
posted @ 2024-05-10 11:48 XiaohuangTX 阅读(1) 评论(0) 推荐(0) 编辑
摘要:与hdu1213一样简单并查集。 定义: 并查集是一种树型的数据结构,用于处理一些不相交集(Disjoint Sets)的合并及查询问题。常常在使用中以森林来表示。集就是让每个元素构成一个单元素的集合,也就是按一定顺序将属于同一组的元素所在的集合合并。。在一些有N个元素的集合应用问题中,我们通常是在 阅读全文
posted @ 2024-05-06 13:12 XiaohuangTX 阅读(1) 评论(0) 推荐(0) 编辑
摘要:第一种方法是定义每个数的老大是其自身,通过每次输入的两个数,找到它两的老大,比较大小,循环将所有大的那个老大改为小的那个数,最后输出有几个老大是其自身 点击查看代码 import java.util.Scanner; public class hdu1213 { public static void 阅读全文
posted @ 2024-05-04 23:32 XiaohuangTX 阅读(6) 评论(0) 推荐(0) 编辑