YunYan

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

05 2020 档案

摘要:题目大意:n个人要买东西,然后每个人可以选择自己购买,花费的时间是ai,也可以选择和自己前边的人一块购买这两个人一块买花费的时间是bi,问这n个人需要的最少时间,如果从08:00:00开始算起,那么最早几点结束。 题解:定义状态dp[i]表示前i个人的需要的最少时间,第i个人可以自己买dp[i]=d 阅读全文
posted @ 2020-05-30 22:51 Target--fly 阅读(170) 评论(0) 推荐(0)

摘要:中文题目,题意好理解。 题解:定义状态DP[i][j]表示第i秒在第j个位置处的最优状态,每一个点只能由相邻点转移,所以转移方程就是dp[i][j]=max({dp[i-1][j],dp[i-1][j-1],dp[i-1][j+1]})+arr[i][j],arr[i][j]表示当前状态下的物品的数 阅读全文
posted @ 2020-05-30 22:41 Target--fly 阅读(146) 评论(0) 推荐(0)

摘要:思路:和逆波兰式相似,首先开两个栈,一个保存数字,一个保存字符,当遇到[的时候,首先将数字入栈,再将数字前边的字符入栈,然后在利用一个字符串保存[ ]中的字符,直到遇到 ] 首先是对[ ] 进行翻倍,然后再和字符栈的栈顶元素叠加倍数次.... code: class Solution { publi 阅读全文
posted @ 2020-05-28 15:30 Target--fly 阅读(142) 评论(0) 推荐(0)

摘要:中文题目,题意略。 题解:可以考虑烤鱼一个点i,从1~i买入,从i~n的路上售出。所以我们可以维护数组dis1[x]从1到x的路径的最小点权值,然后从dis2[x]维护从x到n的路径上的点的最大权值。维护数组可以通过spfa来维护,最后在枚举i就可以了。 code: #include<bits/st 阅读全文
posted @ 2020-05-26 17:09 Target--fly 阅读(140) 评论(0) 推荐(0)

摘要:题目大意: 给出一个序列,然后求这个序列的最大上升子序列的和。 题解:定义状态dp[i]表示前i个数的最大和,dp[i]的最小值应该是arr[i]了,因为i前边可能有负数,对于负数,虽然可以构成上升子序列,但是没有必要选。 code: #include<bits/stdc++.h> using na 阅读全文
posted @ 2020-05-25 18:43 Target--fly 阅读(153) 评论(0) 推荐(0)

摘要:题意:一个n*m的矩阵,每一个位置都有一定的高度,要求从(1,1)走到(n,m)并且每次移动只能向下或者向右移动,并且要求只能向比自己高度高1的位置移动。定义一个操作:执行一次可以使得任意一个格子的额高度减一,问从1,1到n,m操作的最少次数。 题解:首先一定会有一个格子的高度保持不变,设h(i,j 阅读全文
posted @ 2020-05-22 20:29 Target--fly 阅读(303) 评论(0) 推荐(0)

摘要:思维题,最近没怎么写题,思维都有点跟不上了。 题解:把每个sardine都看成一个平面的左边,然后保存个点和原点的斜率,在平面坐标中与斜率A垂直的斜率一定只有一个。所以如果两个斜率相垂直,那么我们把这俩斜率放一起,假设a和b的个数分别位C和D,那么选a不能选b,所以这种组合的个数为pow(2,C)+ 阅读全文
posted @ 2020-05-21 20:43 Target--fly 阅读(266) 评论(0) 推荐(0)

摘要:这是一个比较简单的题目,主要用到了余炫定理,在这里记录一下 PI的值:PI 3.1415926535898,还有余炫函数cos(x) x必须是弧度制,即角度为c,x=c*PI/180。返回值是double。 这个题有一个细节,就是当分针移动的时候时针也会移动,知道这个地方这个题就比较简单了(有几天没 阅读全文
posted @ 2020-05-20 14:48 Target--fly 阅读(412) 评论(0) 推荐(0)

摘要:题目大意: 有n个数,每次操作选择移除一个数,代价为这个数左边的数乘以这个数再乘以这个数右边的数,不可以移除第一个数和最后一个数,问最小代价。 题解:定义状态dp[l][r]区间l,r需要的最小代价,状态转移 dp[l][r]=min(dp[l][i]+dp[i][r]+arr[i]*arr[l]* 阅读全文
posted @ 2020-05-19 18:33 Target--fly 阅读(138) 评论(0) 推荐(0)

摘要:题目大意:括号匹配问题,注意题目给的是子序列,而不是子串。 题解:区间DP,定义状态dp[l][r],表示从l到r匹配的最大对数。我们可以直接让l和r进行匹配(如果l和r可以匹配的话)那么dp[l][r]=dp[l+1][r-1]+2;或者dp[l][r]=dp[l][i]+dp[i+1][r],就 阅读全文
posted @ 2020-05-19 18:26 Target--fly 阅读(121) 评论(0) 推荐(0)

摘要:题目大意:有个人要去参加派对,一共有n场派对,每场派对需要的衣服为a[i],这个人可以同时套上多件衣服,当派对需要的衣服为a[i]时,他可以直接穿上一件a[i],也可以一件件的脱掉,直到身上的衣服为a[i]为止,问这个人最少需要穿几次衣服。 题解: 区间DP问题,定义状态dp[l][r]表示第l场派 阅读全文
posted @ 2020-05-19 18:22 Target--fly 阅读(149) 评论(0) 推荐(0)

摘要:https://www.acwing.com/problem/content/141/ 刚学了马拉车算法,找个题目试了一下,然后看题解说这个题目可以用Hash+二,然后就用Hash+二分补了一下,顺便练习一下Hash 如果同马拉车算法来写,直接就套个板子就可以了,但是我在套板子的过程中,如果把数组开 阅读全文
posted @ 2020-05-18 15:55 Target--fly 阅读(161) 评论(0) 推荐(0)

摘要:例题: LeetCode 5 最长回文子串 LeetCode 516 最长回文子序列 Acwing 石子归并 最长回文子串: 定义状态dp[i][j]表示区间i~j是一段回文串,如果dp[i][j]是回文串的话,s[i]=s[j]并且dp[i-1][j-1](i != j)是个回文串,所以说转台转移 阅读全文
posted @ 2020-05-16 11:47 Target--fly 阅读(164) 评论(0) 推荐(0)

摘要:唉!!惨淡~~ 题面: 题解:这道题,比赛马上结束的时候知道怎么写了....,但是码力不够,实现不了... 对每个数分解质因子,考虑质因子p,设每一个元素都含有p,(不包含的话可以让p的个数为0),那么任意两个元素的LCM,p的个数一定是取多的那个,所以我们只要取p的第二小的元素就可以了,该怎么实现 阅读全文
posted @ 2020-05-13 15:17 Target--fly 阅读(164) 评论(0) 推荐(0)

摘要:题目大意:一个数组含有n个元素,没次操作只能使最大的减一或者最小的加一,设最终有k个相等的元素,问最少需要操作几次。 题解:注意每次只能使最大的减一或者最大的加一,设数组元素 1,2,5 ,假设我们要将前两个变成5,该怎么操作呢?1=>2, 2=>3, 2=>3, 3=>4, 3=>4 4=>5 4 阅读全文
posted @ 2020-05-08 17:04 Target--fly 阅读(229) 评论(0) 推荐(0)

摘要:题目大意:一棵树,然后m个询问,每个询问有k个点,然后判断是否有一条路,要求这k个点要么在这条路上,要么和这条路相距为1. 题解:刚开始的思路是这样的,这条路的终点肯定是深度最深的那个点,然后用BFS找到从1到终点的路线,然后在对路径上的点和与路径直接相连的点进行判断,看这k个点是否都在其中,然后就 阅读全文
posted @ 2020-05-08 11:50 Target--fly 阅读(168) 评论(0) 推荐(0)

摘要:题目大意:一棵树,然后选k个点,让每个点到根节点的距离之和最大。 题解:求每个点对答案的贡献,假设第i个点的深度为dep,它所具有的子树的大小为tmp,那么他对答案的贡献为dep-tmp,为什么是这样呢?当我们选了一个点c的时候,那么他的子节点一定都被选过了,因为如果没有选过的话,我们完全可以选择它 阅读全文
posted @ 2020-05-06 10:11 Target--fly 阅读(165) 评论(0) 推荐(0)

摘要:题目大意:构造一个从1到n字典序较小的环,要求所有的v[i]和v[i+1]都必须出现一次,然后输出所构造的序列,l到r这一部分。 题解:构造方法,假设n=5,[1,2,1,3,1,4,1,5]+[2,3,2,4,2,5]+[3,4,3,5]+[4,5]+[1],写的时候不太好些。 #include< 阅读全文
posted @ 2020-05-06 09:08 Target--fly 阅读(131) 评论(0) 推荐(0)

摘要:被这个题目卡了好久,思路大致是对的,但是一直wa,好像是当a+b+c<=2的时候需要特判,然后其他情况就贪心就好了。另外一个思路和这个差不多,也是贪心,比如说遇到了AB,如果次数的a>b,那就选择B,如果a<b那就选择A,如果A=B,这就要考虑一个概率问题了,如果s[i+1]中存在A我们就选择A,否 阅读全文
posted @ 2020-05-04 20:16 Target--fly 阅读(250) 评论(0) 推荐(0)