随笔分类 -  ACM

1 2 3 4 5 ··· 36 下一页
大二到大三不堪回首的记忆....
摘要:原题链接 考察:枚举,前缀和 思路: 先考虑不用任意改数字的方法,次数是所有数的绝对值之和. 再枚举每一个将第$i$个数改为第$i-1$个数的情况,这里不要漏了将第$1$个数改为第$2$个数的情况. ##Code #include <iostream> #include <cstring> usin 阅读全文
posted @ 2021-10-23 14:26 acmloser 阅读(34) 评论(0) 推荐(0)
摘要:原题链接 考察:线性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 阅读(57) 评论(0) 推荐(0)
摘要:原题链接 考察:枚举 思路: 求出边界点的坐标,然后按公式计算. 主要就是如何求边界点的坐标,如果两个坐标点嵌套$for$循环枚举,$100%$超时.这里考虑是一个坐标从小枚举,另一个坐标从大开始枚举. ##Code #include <iostream> #include <cstring> #i 阅读全文
posted @ 2021-09-19 09:34 acmloser 阅读(43) 评论(0) 推荐(0)
摘要:原题链接 考察:组合数学 错误思路: 隔板法忘光了,没做出来= = 思路: 很容易想到是分解质因数,然后将质因数安排在$n$个位置上.这里比较容易想到隔板法,但是注意常规隔板法是需要$x_i>=1$,所以我们需要将$x_i+n-1$.还有一个就是质因数排序问题,注意到案例三$5,7$做一次隔板少了$ 阅读全文
posted @ 2021-09-17 02:07 acmloser 阅读(35) 评论(0) 推荐(0)
摘要:原题链接 考察:思维 思路: 比较明显的是要用单调队列,在一段区间内,可以挑选一些数字变化符号.我们求的最大和只有两方式:尽量将负数变正数,尽量将正数变负数. 在枚举一段$len$区间,求最小的$k$个负数的绝对值和,然后剩下的数相加.每移动一位,和要做相应变化.所以需要记录左端点属于绝对值还是普通 阅读全文
posted @ 2021-09-16 23:53 acmloser 阅读(46) 评论(0) 推荐(0)
摘要:原题链接 考察:思维 思路: 每一个.代表了一个$boss$下属关系的声明结束.对于每一个$.$对比最后一个字符串和前面所有储存的字符串,如果相同$ans++$ ##Code #include <iostream> #include <cstring> #include <string> using 阅读全文
posted @ 2021-09-16 01:05 acmloser 阅读(38) 评论(0) 推荐(0)
摘要:原题链接 考察:枚举 错误思路: 枚举每一面为正面,给骰子每一面编号,然后求出当前枚举骰子状况每一面为正面的情况,并用字符串记录. 错误原因: 不一定只转一次..... 思路: 参考官方题解: 首先先要先知道对于一个已经涂好颜色的正方体,可以有24中旋转方式:选择不同的面作为正面,故而有6种,然后保 阅读全文
posted @ 2021-09-15 01:42 acmloser 阅读(41) 评论(0) 推荐(0)
摘要:原题链接 考察:思维(?) 思路: 我的做法略笨.先以第一行第一列为起点看最多能占几个.然后再枚举以第一行的点为起点的最多跳跃数.同理枚举第一列的点为起点的最多跳跃数.需要记录最大的行列能取到哪,因为枚举到$(1+s,1+s)$的位置. ##Code #include <iostream> #inc 阅读全文
posted @ 2021-09-13 13:27 acmloser 阅读(29) 评论(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 阅读(49) 评论(0) 推荐(0)
摘要:原题链接 考察:思维 思路: 属于同一数列的点与基准点位置无关.比如 \(2\quad3\quad5\quad3\) 第$1,2,4$个数同一数列,所以不论哪个为基准点,其余点都不用修改.可以发现这些数-位置$i$的差相同(\(i<=mid\)).因此求出最多不用修改的点,就是答案. ##Code 阅读全文
posted @ 2021-09-12 09:44 acmloser 阅读(40) 评论(0) 推荐(0)
摘要:原题链接 考察:dfs,思维 思路: 实际答案最大是2.因为如果存在拐角的正方形,那么可以去掉包围它的两个正方形.如果不存在,答案就是1.假设当前正方形数$<3$,那么答案就是$-1$. ##Code #include <iostream> #include <cstring> #include < 阅读全文
posted @ 2021-09-11 22:23 acmloser 阅读(38) 评论(0) 推荐(0)
摘要:原题链接 考察:拓扑排序,思维 思路: 2-->1的时间等同于1-->2 >3的时间,也就是说往回走与正向走耗时相同.说明我们可以按1-->2-->3 >1的顺序走即可.枚举起点,再用拓扑排序算时间 ##Code #include <iostream> #include <cstring> #inc 阅读全文
posted @ 2021-09-01 02:13 acmloser 阅读(62) 评论(0) 推荐(0)
摘要:原题链接 考察:质因数分解,筛质数 思路: 比较明显的思路是循环$1$~$n$每一个$a[i]\(,分解质因数,时间复杂度约为n\*\)\sqrt{107}$会有超时的风险. 优化就是筛到$107$的质数,然后判断为质数立马跳出. 将质数的指数取最小值.然后循环$a[i],b[i]$除去质数. 但是 阅读全文
posted @ 2021-08-31 22:42 acmloser 阅读(69) 评论(0) 推荐(0)
摘要:原题链接 考察:枚举 思路: 枚举所有分配方案.这里采用的枚举方式是隔板法.也就是先枚举每个队的人数,然后将7个人全排列,按人数放隔板,计算答案. ##Code #include <iostream> #include <cstring> #include <map> #include <algor 阅读全文
posted @ 2021-08-31 16:06 acmloser 阅读(48) 评论(0) 推荐(0)
摘要:原题链接 考察:栈,模拟 模拟栈匹配,不匹配的留入栈里.然后栈里都是不匹配的坐标,相邻之间都是匹配的. #include <iostream> #include <cstring> using namespace std; const int N = 100010; char s[N],res[N] 阅读全文
posted @ 2021-08-30 22:23 acmloser 阅读(37) 评论(0) 推荐(0)
摘要:原题链接 考察:模拟 思路: 坑点比较多: (1) 判断不符合语法的单词 (2) 只允许存在一个名词 #include <iostream> #include <cstring> using namespace std; const int N = 100010,M = 10; string s[N 阅读全文
posted @ 2021-08-30 19:36 acmloser 阅读(42) 评论(0) 推荐(0)
摘要:原题链接 考察:欧拉路径,离散化 思路: 定睛一看这不欧拉路径吗,然后套板子即可.... ##Code #include <iostream> #include <cstring> #include <map> using namespace std; typedef pair<int,int> P 阅读全文
posted @ 2021-08-30 16:33 acmloser 阅读(42) 评论(0) 推荐(0)
摘要:原题链接 考察:思维 错误思路: 暴力模拟,但是步骤没有统一的规矩. 思路: 递归思想.因为需要将每个棋子放在主对角线以下.那么首先保证最后一列无$1$,那么再交换有$1$的行和最后一行,这样怎么也不会换到对角线上.然后可以发现最后一行,最后一列可以去掉,再重复上面的步骤 ##Code #inclu 阅读全文
posted @ 2021-08-27 02:17 acmloser 阅读(42) 评论(0) 推荐(0)

1 2 3 4 5 ··· 36 下一页