摘要: *传送 对于一个$n \times m$的矩形,我们只要对每一行求滑动窗口,当前位置的最大价值就是他上一行的滑动窗口(点击查看解释)+当前位置的价值。因为当前位置左上T个位置,会被他左边T个位置的点更新到,所以我们只需要算一边就好。 代码如下: 1 #include <iostream> 2 #in 阅读全文
posted @ 2020-03-14 16:36 小又又 阅读(128) 评论(0) 推荐(0) 编辑
摘要: *传送 *预处理:把m个区间合并成一个大区间(按照横坐标排序即可) *思路:因为我们要一段尽可能小的区间包含所有的彩带种类,我们不防开一个数组,记录当前区间内每种彩带多有多少个,从[1,1]开始,如果当前彩带种类<k,则右端点向右移,把该种彩带在区间内的数量+1,如果该种彩带的数量从0->1,即说明 阅读全文
posted @ 2020-03-14 11:22 小又又 阅读(146) 评论(0) 推荐(0) 编辑
摘要: **运算符重载的意义 重载运算符,能够让本来繁琐的程序变得简单,让代码模块化,更容易理解。还有,有些STL容器必须定义小于号,所以当该容器存储元素类型为自定义的结构体时,就需要重载运算符,定义小于号,例如 $set$,$priority_queue$ 语法格式如下: <返回类型> operator 阅读全文
posted @ 2020-03-14 11:11 小又又 阅读(437) 评论(0) 推荐(1) 编辑
摘要: *传送 **单调队列的模板题(做很多题的前置准备) 本题我们维护一个从大到小/从小到大的单调队列即可。拿最大值来举例:对于新加进来的数,如果比队尾小我们就加进来,否则为了维护单调性我们从队尾弹出比当前值小的值。不难证明这些弹出的值不会是任何一个滑动窗口的答案。对于窗口的限定长度,我们只需要每次判断队 阅读全文
posted @ 2020-03-13 16:34 小又又 阅读(253) 评论(0) 推荐(0) 编辑
摘要: *传送 思路:因为有的学科有直接先修课(选了先修课才能选当前课程),所以我们可以让当前课程指向他的先修课,这样只要先修课没有选,他的子树就没有办法选。 确定状态:$f[i][j]$表示选择i节点选j门课程的最大价值 转移方程:$f[u][j]=max(f[u][j],f[to][k]+f[u][j- 阅读全文
posted @ 2020-03-11 09:12 小又又 阅读(240) 评论(0) 推荐(0) 编辑
摘要: *传送 这道题就是二维背包加输出具体方案,二维就可以直接在一维背包上多加一维,循环的时候多套一层就ok了。至于记录方案我们可以发现,每一种状态都是由上一种状态转移过来的。我们用$ans[][]$表示状态,则有$ans[j][k]=ans[j-a[i]][k-b[i]]+char(i)$;最后输出$a 阅读全文
posted @ 2020-03-08 19:00 小又又 阅读(163) 评论(0) 推荐(0) 编辑
摘要: *传送 状态:给你状态$f[i][j]$表示将i~j堆石子合并为一堆的最小/最大得分 转移方程:$f1[i][j] = max(f1[i][j], f1[i][k]+f1[k+1][j]+d(i,j))$ $f2[i][j] = min(f2[i][j], f2[i][k]+f2[k+1][j]+d 阅读全文
posted @ 2020-03-07 08:31 小又又 阅读(171) 评论(0) 推荐(0) 编辑
摘要: *传送 动态规划最主要确定状态和转移方程,所以我的思路如下: 1.定义状态: 确定$dp(i,j)$代表字符串A的前$i$个字符(包括第$i$个)变为字符串B的前$j$个(包括第$j$个)需要多少步。而$dp[l_1][l_2]$就是我们所要找的答案。 2.转移方程: *删:$dp(i-1,j)+1 阅读全文
posted @ 2020-03-03 09:55 小又又 阅读(167) 评论(0) 推荐(0) 编辑
摘要: *传送 在做这道题之前,先了解一下欧拉筛:欧拉筛法的基本思想 :在埃氏筛法的基础上(埃式筛法讲解可以阅读筛法--求1到100以内的素数),让每个合数只被它的最小质因子筛选一次,以达到不重复的目的。 代码: 1 int prime[maxn]; 2 int visit[maxn]; 3 void Pr 阅读全文
posted @ 2020-03-02 13:11 小又又 阅读(182) 评论(1) 推荐(0) 编辑
摘要: 1.gcd的两种求法: 一、更相减损法 两个正整数$a$和$b$($a>b$),它们的最大公约数等于$a-b$的差值$c$和较小数$b$的最大公约数。 1 int gcd(int a,int b) 2 { 3 if(a==b) 4 return a; 5 if(a>b) 6 return gcd(a 阅读全文
posted @ 2020-03-01 13:20 小又又 阅读(285) 评论(0) 推荐(0) 编辑