09 2021 档案

摘要:原题链接 考察:线性dp 思路: 将$k$个连续的点当作$a$,一个点当作$b$.假设当前有$x$个点,那么我们要用$a,b$组成$x$ \(\quad \quad \quad f[x] = f[x-1]+f[x-k]\) ##Code #include <iostream> #include <c 阅读全文
posted @ 2021-09-27 23:48 acmloser 阅读(33) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:枚举 思路: 求出边界点的坐标,然后按公式计算. 主要就是如何求边界点的坐标,如果两个坐标点嵌套$for$循环枚举,$100%$超时.这里考虑是一个坐标从小枚举,另一个坐标从大开始枚举. ##Code #include <iostream> #include <cstring> #i 阅读全文
posted @ 2021-09-19 09:34 acmloser 阅读(33) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:组合数学 错误思路: 隔板法忘光了,没做出来= = 思路: 很容易想到是分解质因数,然后将质因数安排在$n$个位置上.这里比较容易想到隔板法,但是注意常规隔板法是需要$x_i>=1$,所以我们需要将$x_i+n-1$.还有一个就是质因数排序问题,注意到案例三$5,7$做一次隔板少了$ 阅读全文
posted @ 2021-09-17 02:07 acmloser 阅读(31) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:思维 思路: 比较明显的是要用单调队列,在一段区间内,可以挑选一些数字变化符号.我们求的最大和只有两方式:尽量将负数变正数,尽量将正数变负数. 在枚举一段$len$区间,求最小的$k$个负数的绝对值和,然后剩下的数相加.每移动一位,和要做相应变化.所以需要记录左端点属于绝对值还是普通 阅读全文
posted @ 2021-09-16 23:53 acmloser 阅读(38) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:思维 思路: 每一个.代表了一个$boss$下属关系的声明结束.对于每一个$.$对比最后一个字符串和前面所有储存的字符串,如果相同$ans++$ ##Code #include <iostream> #include <cstring> #include <string> using 阅读全文
posted @ 2021-09-16 01:05 acmloser 阅读(32) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:枚举 错误思路: 枚举每一面为正面,给骰子每一面编号,然后求出当前枚举骰子状况每一面为正面的情况,并用字符串记录. 错误原因: 不一定只转一次..... 思路: 参考官方题解: 首先先要先知道对于一个已经涂好颜色的正方体,可以有24中旋转方式:选择不同的面作为正面,故而有6种,然后保 阅读全文
posted @ 2021-09-15 01:42 acmloser 阅读(35) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:思维(?) 思路: 我的做法略笨.先以第一行第一列为起点看最多能占几个.然后再枚举以第一行的点为起点的最多跳跃数.同理枚举第一列的点为起点的最多跳跃数.需要记录最大的行列能取到哪,因为枚举到$(1+s,1+s)$的位置. ##Code #include <iostream> #inc 阅读全文
posted @ 2021-09-13 13:27 acmloser 阅读(23) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:计算几何 思路: 基本参考这位大佬的思路 GO 如果是情况$2$的话,$v$就不存在. ##Code #include <iostream> #include <cstring> #include <cmath> using namespace std; typedef long l 阅读全文
posted @ 2021-09-13 00:09 acmloser 阅读(38) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:思维 思路: 属于同一数列的点与基准点位置无关.比如 \(2\quad3\quad5\quad3\) 第$1,2,4$个数同一数列,所以不论哪个为基准点,其余点都不用修改.可以发现这些数-位置$i$的差相同(\(i<=mid\)).因此求出最多不用修改的点,就是答案. ##Code 阅读全文
posted @ 2021-09-12 09:44 acmloser 阅读(30) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:dfs,思维 思路: 实际答案最大是2.因为如果存在拐角的正方形,那么可以去掉包围它的两个正方形.如果不存在,答案就是1.假设当前正方形数$<3$,那么答案就是$-1$. ##Code #include <iostream> #include <cstring> #include < 阅读全文
posted @ 2021-09-11 22:23 acmloser 阅读(28) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:拓扑排序,思维 思路: 2-->1的时间等同于1-->2 >3的时间,也就是说往回走与正向走耗时相同.说明我们可以按1-->2-->3 >1的顺序走即可.枚举起点,再用拓扑排序算时间 ##Code #include <iostream> #include <cstring> #inc 阅读全文
posted @ 2021-09-01 02:13 acmloser 阅读(52) 评论(0) 推荐(0) 编辑