随笔分类 - 题解
发表于 2024-02-12 09:31阅读次数:16评论次数:0
摘要:赛时犯大病,维护区间实现的时候把满足条件的区间末尾直接设置成区间开头,还找不出hack数据 分析 通过读题,可以得出两个结论: 数组中一组相同的数中只有一个能对答案造成贡献。 因为排列中每个数不同,相同的数加不同的数不可能得出相同的数。 一段去重后的数列要贡献答案长度,当且仅当该数列的
阅读全文 »
发表于 2023-11-11 18:45阅读次数:36评论次数:0
摘要:动态规划思路 可行性 抛开取模问题和空间限制,该题存在最优子结构性和无后效性,而这两个问题都可以另外处理。 状态定义 为前 棵树,剩余 单位化肥时的最大覆盖距离。 状态转移 先忽略取模问题 推导状态转移方程 不选择对当前第\(\space i\spac
阅读全文 »
发表于 2019-02-10 02:24阅读次数:4评论次数:0
摘要:由题意可知每次只能取两端的零食。这就可以看出来这是一道区间DP题。 我设计出了一个状态 : 表示 这个区间最多能得到的钱。 当时我就自以为是的推出了转移方程: $f[l][r]=max(f[l+1][r]+a[l]*(r-l+1),f[l][r-1]+a[r]*(r-
阅读全文 »
发表于 2019-02-07 22:03阅读次数:11评论次数:1
摘要:这道题可以用DP来做。 我们定义状态 为是当前的人数为 时的队伍数量的最大值。而 同时也代表现在是第几个人。 根据题意。我们可以推出转移方程 当 时: 当前队伍中的人数 不大于 时,我们显然不能让第 个选手自己组成一个队伍
阅读全文 »
发表于 2019-02-07 12:14阅读次数:3评论次数:0
摘要:这道题总体来说并不难,纯模拟即可。唯一的难点就是判断无解。 我想了挺久愣是没想到什么好办法。然后我就动了点歪脑筋。 我们先来看一下这份没有判断无解情况的代码(我把他命名为代码67)。(思路与其他题解大体相同的,泥萌看不懂的话也可以去看其他题解的注释,然后他们判断无解的部分先忽略掉。 #include
阅读全文 »
发表于 2019-01-27 16:28阅读次数:4评论次数:0
摘要:看到这题就写了这样一份代码,然后就AC了。 发现题解好像都跟我不一样欸。因为我是乱搞的 研究了半天终于明白了自己是怎么搞得了: f1[i]和f2[i]分别表示以i为结尾的最长上升子序列和以i为开头的最长上升子序列。(这点与其他题解无异) 而我的代码与其他题解的不同点就在于: 以求f1[i]为例 其他
阅读全文 »
发表于 2018-12-24 22:16阅读次数:14评论次数:0
摘要:By《算法竞赛入门经典》 前几天终于自学到树了,这道题作为例题自然是比较需要重点掌握了。 感觉这道题我在怎么讲解肯定也没有lrj讲得好,所以我这篇题解主要是lrj的思想。 最重要的是树的存储 可以用两种方法 结构体+指针 struct Node{ bool have_value;//是否被赋值过,这
阅读全文 »
发表于 2018-12-08 11:14阅读次数:6评论次数:0
摘要:直接用%处理去0操作即可 #include <cstdio> long long a,b,c,ta,tb,tc,sa,sb,sc; int main() { scanf("%lld %lld",&a,&b),c=a+b; while(a) ta=(a%10 == 0) ? ta : ta*10+a%
阅读全文 »
发表于 2018-12-07 23:00阅读次数:5评论次数:0
摘要:又是一道蓝书上的题呢。 楼下的咋是直接抄蓝书的啊,我觉得吧做题要有自己的思想,我看到这道题,第一个想的就是bfs。大概就是直接搜每一个点。 如果这个点本来就有字母,那就直接把这个字符存入答案 否则从 到 枚举,如这个点四周没有相同的字符就把这个字符存入答案,然后直接break,因为要
阅读全文 »
发表于 2018-12-07 22:08阅读次数:12评论次数:4
摘要:蓝书上的题目的好多题解都是照搬啊,希望各位注明下出处吧。。。 这道题蓝书上给的 解法大概是这样的,大概就是维护一个 表示当 时 的最大值,然后不断更新它的最大值和答案的最大值即可。 但是!——在最后蓝书上还布置了个作业,写个边读入边处理的解法。现在就来讲下这个解
阅读全文 »
发表于 2018-11-21 22:38阅读次数:4评论次数:0
摘要:这是一个结论题,大概入门难度吧,不知道怎么就成蓝题了。。。 注:设第一个集合的乘积为a,第二个集合的乘积为b,第三个集合的乘积为c。 只要你有初中文化水平,就可以知道——任何数乘零皆得零 这不就是个签到题了么所以呢? 先读入每一个数,然后开两个数组,一个存正数,一个存负数。 我们先考虑这 个数中
阅读全文 »
发表于 2018-11-11 06:09阅读次数:2评论次数:0
摘要:这道题目完全是在考察你的字符串的输入输出 首先,字符串的输入方式有这么几种: 注:以下代码皆已定义: string a; FIRST cin>>a; 这种读入方法遇到空格就不读了,一次只能读入一串连续的字符,且不包括回车和制表符,即'\n'和'\t'; SECOND getline(cin,a);
阅读全文 »
发表于 2018-11-11 05:53阅读次数:8评论次数:0
摘要:noip考完了,祝大家取的一个好成绩,期中考rp++; 这道题目读懂题意后就非常简单了: 给出n个数,再给出一个 位置,定义 和 ,( 不属于 或 ): 为 个数每个数用这个数到 的距离乘这个数的积之和, 则为 中再
阅读全文 »
发表于 2018-11-04 00:37阅读次数:6评论次数:0
摘要:维护两个前缀和+双指针查找即可 这道题我做的时候看的标签居然是贪心。。。也是无语了(希望管理大大改下标$签) 1. 根据题意得,既然想要求最多可以分成几段每一段满足第一个数组的第q段元素之和,第二个数组的第q段元素之和相等。那么首先需要维护一个前缀和来存条件中的q段元素之和。 1. 然后在用四个指针
阅读全文 »
发表于 2018-11-03 11:26阅读次数:8评论次数:0
摘要:这道题题目并不难,简单模拟即可: 根据题意的“骑士会在之后的连续N+1天里,每天收到N+1枚金币”我们可以定义一个变量day_sum代表在连续的day_sum天收到的每天收到的金币。 定义一个day来记录天数,一旦day==n立即输出。 定义ans来累加金币数 下面给出ac代码:read等价于cin
阅读全文 »