算法
Joker__Wa
这个作者很懒,什么都没留下…
展开
-
蓝桥杯真题——约数倍数选卡片(博弈论+DFS)
题目:分析:此题中输入的数字出现的次数可能不止一次,比如说输入为:1 2 2 3 3 4 5 (是题目中的另一个样例,在上述截图中未截出),那么我们可以使用一个num[105]数组来存放数字出现的次数,num数组存放的是第一行的数据,第二行输入数据表示先手可以第一次选择的数字,我们使用一个数组aa[105]来存放。对aa数组中的元素排序,之后利用循环来遍历aa数组中的每一个元素,表示先手可能...原创 2020-02-28 14:56:11 · 467 阅读 · 0 评论 -
UVA562(01背包问题)
题目大意:两个人分配一堆价格不同的金币,要求最终两人分配的金币差值最小分析:从题目的分析可知该题要用01背包问题解决,由于两人最终分配的金币差值最小,那么说明两人中的一个人分得的金币肯定要小于或者等于总价格的一半,另一个人分得的金币则是总价格减去上一个人分得的金币数目,既然其中一个人的金币数小于或者等于总价格的一半,则可将问题转化为求两个人中的某一人分到最接近总价格一半的金币价值。AC代码#...原创 2019-11-11 19:48:29 · 196 阅读 · 0 评论 -
HDU1024(动态规划+滚动数组)
题目大意:把一个数组划分成不相交的m段,使得这m段之和加起来最大。输出最大值。这道题从题意的分析可知要使用动态规划来做使用arr[j]来存放第j个数dp[i][j]的含义:在包含arr[j]的前提下,前i段的最大值,那么我们可以分以下两种情况:1、arr[j]不是第i段的第一个数,那么此时dp[i][j]就是dp[i][j-1]+arr[j]2、arr[j]是第i段的第一个个数,那么此...原创 2019-11-09 09:03:05 · 320 阅读 · 2 评论 -
HDU1069(经典dp)
题目大意:科学家为了测试猴子的IQ,在屋顶上悬挂一个香蕉,并给定n种类型的木块,每种类型的木块数量没有限制,但是在堆叠木块的时候,位于下面的木块的长和宽必须严格大于上面木块的长和宽,求堆叠的最高的高度题目分析:通过简单分析可知这道题是用动态规划来做的,而且这道题可以看作是最长递减子序列的变形,首先,从题目中可知,每个木块有三个常量——长 宽 高,每个木块的放置方法有6种,而题目中给出最多有30种...原创 2019-11-09 11:32:08 · 323 阅读 · 0 评论 -
CodeForces 429B(四角递推+枚举)
题目大意:给定一个能n×m的表格,每个点上有相应的权值,一个人从(1,1)点出发,目标点为(n,m),另一个人从(n,1)点出发,目标点为(1,m),两个人在行走的过程中只能在一个点相遇,求除去这个点之外,他们所经过的点的权值的最大值分析:通过简单分析,我们可以将题目转化为从四个角出发,到相遇节点的各自的最大值相加,各个角到相遇节点的最大值可以通过递推公式来求出,而题目中又要求必须仅有一个点相遇...原创 2019-11-10 19:38:20 · 192 阅读 · 0 评论 -
HDU1540(线段树+最大连续区间和)
题目大意:1-n个地道,m个次操作,D代表摧毁第i个地道,Q代表查询包含第i个地道的最大连续地道数目,并输出。R代表修复最近摧毁的那个地道解题思路:由于题目中说明R表示修复最近摧毁的那个通道,所以自然而然的想到利用栈来解决,在本题中使用数组来模拟栈操作,其次,Q代表查询包含第i个地道的最大连续地道数目,这个就表示要求求出包含在本节点在内的最大连续区间的和。在下面解题中,1表示地道未被炸毁,0表示...原创 2019-11-06 16:46:22 · 246 阅读 · 0 评论 -
HDU4027(线段树)
hdu4027本质上就是一个更新区间的问题,只要弄明白一个小技巧,加上躲过一些坑点,就能AC了首先通过题目分析可以推出这样一个规律:每艘战舰的寿命在最多经过7次开方后就会变成1,所以在我们每次更新区间的时候,首先要加一个判断条件 tree[i].sum与tree[i].r-tree[i].l+1时否相等,如果相等了,那么说明在这个树的下面的节点全部都是1,这种树就不再需要更新了,直接返回就好...原创 2019-11-06 09:56:53 · 293 阅读 · 0 评论