笔记
文章平均质量分 85
Dawn_破晓
这个作者很懒,什么都没留下…
展开
-
浅谈最长上升子序列和最长公共子序列(含n²优化)
听大佬们解释,最长 上升 / 下降 子序列和最长公共子序列属线性DP范畴,由于本人还没有系统的对DP进行研究,所以这里就暂时先不阐述线性DP了。最长 上升 / 下降 子序列和最长公共子序列这两类问题是非常典型的DP类型的题目,每一个算法学习书上面都少不了这两类问题,相关的题目也有很多,如:导弹拦截最长公共子序列类似的题目还有很多,就不一 一举例了。O(n²)解决最长上升子序列以时间复杂度O(n²)解决最长上升子序列问题是最简单也是最常见的一种解法,...原创 2022-05-01 14:50:13 · 514 阅读 · 0 评论 -
Cow Frisbee Team S(变相的01背包)
题目描述老唐最近迷上了飞盘,约翰想和他一起玩,于是打算从他家的 NN 头奶牛中选出一支队伍。每只奶牛的能力为整数,第 i 头奶牛的能力为R_i 。飞盘队的队员数量不能少于 1、大于N。一支队伍的总能力就是所有队员能力的总和。约翰比较迷信,他的幸运数字是 F ,所以他要求队伍的总能力必须是 F 的倍数。请帮他算一下,符合这个要求的队伍组合有多少?由于这个数字很大,只要输出答案对 108取模的值。输入格式第一行:两个用空格分开的整数:N和 F。第二行到 N+1 行:第i+1 行有一个整数R_i,表原创 2022-04-18 22:21:48 · 312 阅读 · 0 评论 -
魔术棋子(记忆化搜索/三维DP)
题目描述在一个M*N的魔术棋盘中,每个格子中均有一个整数,当棋子走进这个格子中,则此棋子上的数会被乘以此格子中的数。一个棋子从左上角走到右下角,只能向右或向下行动,请问此棋子走到右下角后,模(mod)K可以为几?如以下2*3棋盘:3 4 45 6 6棋子初始数为1,开始从左上角进入棋盘,走到右下角,上图中,最后棋子上的数可能为288,432或540。所以当K = 5时,可求得最后的结果为:0,2,3。输入格式第一行为三个数,分别为M,N,K (1 ≤ M,N,K ≤原创 2022-04-18 21:42:33 · 331 阅读 · 0 评论 -
四大背包总结
背包我目前所了解到的四类——01背包、完全背包、多重背包、分组背包(其它的我还没见到过)01背包:有N种物品和一个容量为V的背包,每种物品只有一个。第i种物品的费用是w[i],价值是v[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。完全背包:有N种物品和一个容量为V的背包,每种物品都有无限件可用。第i种物品的费用是w[i],价值是v[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。多重背包:有N种物品和一个容量为V的背包。第i种物品原创 2022-04-01 21:27:16 · 856 阅读 · 0 评论 -
菜即的算法学习笔记3.21
筛法函数筛法函数,我是在寻找约数和的时候发现的什么是筛法函数?筛法函数的作用?就比如求前n个数的每一个数的约数和(约数不含这个数本身)例如:6的约数和为 1+2+3=6,4的约数和为 1+2=3筛法函数可以用在,寻找前n个数的约数和这是常规的筛法函数求前n个数的质数:bool s[10005]={1,1};//0和1啥也不是,定为1int a[10005],ps;//a数组存最后的质数,ps为这个数组的下标//全局数组初值全为0inline void sf(){//筛法函数 f原创 2022-03-21 21:42:54 · 68 阅读 · 0 评论 -
5.23总结
二分法总结什么是二分法?算法:二分法查找适用于数据量较大时,但是数据需要先排好顺序。主要思想是:(设查找的数组区间为array[low, high])(1)确定该区间的中间位置K(2)将查找的值T与array[k]比较。若相等,查找成功返回此位置;否则确定新的查找区域,继续二分查找。区域确定如下:a.array[k]>T 由数组的有序性可知array[k,k+1,……,high]>T;故新的区间为array[low,……,K-1]b.array[k]<T 类似上面查找区间为array原创 2021-05-23 17:24:21 · 122 阅读 · 0 评论 -
5.16总结
一、背包问题总结**背包问题,首先要搞清楚它的本质是什么?它的原理是什么?背包问题指这样一类问题,题意往往可以抽象成:给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,我们如何选择,才能使得物品的总价格最高。——百度百科先用最简单的一个问题来描述背包问题:有n个物品,它们有各自的体积和价值,现有给定容量的背包,如何让背包里装入的物品具有最大的价值总和?每个物品都有它自己的属性:体积和价值解题思路:用动态规划的思路,阶段就是“物品的件数”,状态就是“背包剩下的容量”,那么f [i,v]原创 2021-05-16 21:16:48 · 81 阅读 · 0 评论 -
5.10 Codeforces总结
Codeforces Global Round 14A. Phoenix and Gold题意:有一对黄金,放在称上称量,一个个的往上放,要求每放一次称中的总数不能等于x,问是否存在这样的放置排序思路:在输入的时候就挨个计算和值,如果出现等于X的情况,则交换这两个数,一开始还不太放心如果这两个数相等怎么办,但是题中已经说了各个数值并不相同,所以这样用是不用担心的,到最后如果总和等于x,输出NO,如果不等于,就输出YES,并把输入拍好的顺序输出就可以了。AC代码:#include <iost原创 2021-05-10 18:48:40 · 139 阅读 · 0 评论 -
4.24周总结
4.24周总结4.21Codeforces Round #717 (Div.2)这个A题没做出来的原因竟然是不清楚最小字典序数组是什么意思,在做完题之后才知道数字的字典序只是从第一个数字到最后一个数字按照先后顺序排列形成的一个数的最小值!!! 而且也并没有规定数组的每一个数必须是个位数!!!害比赛后的敲出的AC代码:#include <bits/stdc++.h>using namespace std;int T;int n,k;int a[105];int main(){原创 2021-04-24 21:06:19 · 72 阅读 · 0 评论 -
Codeforces&&DP总结
Codeforces&&DP总结一.Codeforce:4.16Codeforces Round #715 (Div. 2)这次时第一次扣分得比赛!!!!太难受了A. Average Height这次A题非常之简单,只要把输入的数字的奇数和偶数分开然后输出就得到答案(奇数在前偶数在后或者偶数在前奇数在后),没有一点难度AC代码:#include <iostream> using namespace std;int a[2005],b[2005];int ma原创 2021-04-17 21:54:44 · 758 阅读 · 0 评论 -
Codeforces总结
2021年3月29日晚23:20,在看到舍友敲完codeforces div2的比赛的一题上床后,我的心里久久不能安下心,23:35我也打开了codeforces,找到了那场比赛,在看完题之后,发现A题目并不是太难,于是决定参加比赛,提交A题,此时23:50,当我奋斗了半个多小时后,已经是0:28,我赶紧下床打开了笔记本电脑准备提交,可当我提交的时候,提示我未报名不能参与提交,我的内心是崩溃的…不过也懂得了CF的一个规则,未报名不能提交…在此期间有一个地方卡住我10几分钟for(int s=n;s!=0原创 2021-04-10 11:43:15 · 548 阅读 · 0 评论 -
动态规划学习总结
动态规划学习总结首先想要学好动态规划最重要的就是了解什么是动态规划,动态规划是用来求解以时间划分阶段的动态过程的优化问题,就是把一个问题分为若干个阶段,即分为若干个小问题,然后逐个求解的过程在Vjudge的课程作业中我找到了两个不同的类型的动态规划题型,感觉比较具有代表性(作业地址https://vjudge.net/contest/430905)类型1,其实就是求最大连续增长序列的最大值,包含题目:C,U(其实U就是简化版的C)思想:这种题型就是求最大连续增长序列和的最大值的问题,比如一组数1,3原创 2021-04-10 11:41:44 · 619 阅读 · 0 评论 -
周总结
周总结Vjudge题目总结题目网址:https://vjudge.net/contest/426531M.这个题读懂题意更重要错误题意1.错把66为底箱子当成都是666的箱子错误题意2.错把箱子为11 22 33…的高度看成与底边边长相等真●题意:箱子的高度其实可以直接忽略,因为一个箱子里面的高度全都相等,这个题意就是用来挖坑的,坏的很,读懂题意的话,就可以直接转化为平面问题——切木板问题,一个66的木板,切所需数量nn的木板,最少用多少个66的木板,题意读懂,整个题思路的困难就迎刃而解原创 2021-03-27 11:44:11 · 119 阅读 · 0 评论 -
第三周学习总结
第三周学习总结一、本周第一次接触了动态存储,感觉让我眼前一亮1.动态存储:C++运算符new delete其实与C语言中的malloc()函数和free()函数相似,但是new和delete的功能比其更强大2.new:在之前定义一个数组,不知道数组的大小,又怕浪费过多的数组空间,很多人喜欢这样定义:int n;cin>>n;int p[n];//错误....可能运行不会出问题,但是这样定义是错误的,这样的话,如果作为题提交是比不可能AC的,但是如果学习了动态存储,就可以实原创 2021-03-20 16:46:50 · 82 阅读 · 0 评论 -
周学习总结
学到的新知识:1.了解了STL(Standard Template Library,标准模板库)2.cin的输入速度不如scanf,但是加上sync_with_stdio(false);会使cin的输入速度有效提高3.头文件不再担心记不住,万能头文件#include <bits/stdc++.h>4.新的string数据类型,更方便字符串的输入输出和变换;string数据类型遇到空格就结束输入,使用getline(输入工具,输入对象),换行符为结束标志;empty()判断是否为空,是返回原创 2021-03-12 23:28:50 · 120 阅读 · 0 评论