随笔分类 -  ACM / 枚举

摘要:原题链接 考察:枚举,前缀和 思路: 先考虑不用任意改数字的方法,次数是所有数的绝对值之和. 再枚举每一个将第$i$个数改为第$i-1$个数的情况,这里不要漏了将第$1$个数改为第$2$个数的情况. ##Code #include <iostream> #include <cstring> usin 阅读全文
posted @ 2021-10-23 14:26 acmloser 阅读(30) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:枚举 思路: 求出边界点的坐标,然后按公式计算. 主要就是如何求边界点的坐标,如果两个坐标点嵌套$for$循环枚举,$100%$超时.这里考虑是一个坐标从小枚举,另一个坐标从大开始枚举. ##Code #include <iostream> #include <cstring> #i 阅读全文
posted @ 2021-09-19 09:34 acmloser 阅读(34) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:枚举 错误思路: 枚举每一面为正面,给骰子每一面编号,然后求出当前枚举骰子状况每一面为正面的情况,并用字符串记录. 错误原因: 不一定只转一次..... 思路: 参考官方题解: 首先先要先知道对于一个已经涂好颜色的正方体,可以有24中旋转方式:选择不同的面作为正面,故而有6种,然后保 阅读全文
posted @ 2021-09-15 01:42 acmloser 阅读(36) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:枚举 思路: 枚举所有分配方案.这里采用的枚举方式是隔板法.也就是先枚举每个队的人数,然后将7个人全排列,按人数放隔板,计算答案. ##Code #include <iostream> #include <cstring> #include <map> #include <algor 阅读全文
posted @ 2021-08-31 16:06 acmloser 阅读(42) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:枚举 思路: 看懂题目省事一半,所有单元格都是需要净化的,所以最少操作数是$n$,枚举每一行,每一列,看是否覆盖所有单元格. ##Code #include <iostream> #include <cstring> using namespace std; const int N 阅读全文
posted @ 2021-07-29 16:26 acmloser 阅读(25) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:枚举+二分 思路: 枚举其他两个药品的使用量,二分最后的使用量 ##Code #include <iostream> #include <cstring> #include <cmath> #include <vector> using namespace std; typedef 阅读全文
posted @ 2021-07-27 21:20 acmloser 阅读(34) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:枚举 思路: 预处理平方,分斜边和直角边,两个直角边两种情况处理. ##Code #include <iostream> #include <cstring> #include <cmath> #include <vector> using namespace std; typede 阅读全文
posted @ 2021-07-27 20:43 acmloser 阅读(28) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:暴力枚举 思路: 记这道题的唯一意义是: 逆时针旋转90度后x'=-y,y=x 逆时针旋转180度后x'=-x,y=-y 逆时针旋转270度后x'=y,y=-x ##Code #include <iostream> #include <cstring> #include <algor 阅读全文
posted @ 2021-07-26 20:38 acmloser 阅读(26) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:枚举,思维 思路: 不论怎么取,都存在一个间隔点:左边的都是左手拿的,右边的都是右手拿的,枚举间断点,可以发现根据取的个数不同,由于贪心是尽可能间隔取,然后再计算连续的附加值. ##Code #include <iostream> #include <cstring> using n 阅读全文
posted @ 2021-07-26 09:51 acmloser 阅读(31) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:枚举,前缀和 和本题的正解思路有点像的 >Go 题意: 在数组中放三个间断点,使得res最大. 思路: 三个间断点求最值,不能是在前缀区间只取正数,后缀区间只取负数,存在隔了负数出现大正数的情况. 可以枚举中间点mid,求[1,mid]的最大前缀,[mid,n]的最小后缀,两个for 阅读全文
posted @ 2021-06-10 10:22 acmloser 阅读(35) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:线性dp or 枚举 大佬的思路: 0不能出现在1的右边,所以是单调非下降子序列,求最长即可. 本菜狗的思路: 枚举每一个1的位置,求保留前面所有0和后面所有1的长度,取最长即可. ##Code #include <iostream> #include <cstring> #incl 阅读全文
posted @ 2021-06-10 10:12 acmloser 阅读(39) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:贪心+枚举 WA了n次,正解思维其实和A题一样,我想出了A题却没反应过本题,果然还是菜. 错误思路: 分两种方式,一个是从时间少做到时间多的,另一个是横向完成一组一组的子任务. 错误原因: 很明显没有枚举所有方式. 正确思路: 枚举做0~n组任务后,再从小到大做任务的耗费时间. ## 阅读全文
posted @ 2021-06-10 10:05 acmloser 阅读(42) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:枚举 思路: 枚举四个边角的情况就行..... 疯狂WA到我麻木....看了题解发现是和A一样的解法.... 1 #include <iostream> 2 using namespace std; 3 int n,op[4]; 4 bool check(int s) 5 { 6 i 阅读全文
posted @ 2021-05-13 20:27 acmloser 阅读(44) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:枚举+dfs or bfs 错误思路: 枚举每个点,求往下能到达的点和往上能到达的点,用st数组标记去过的点,set收集当前枚举点i能到达的点. 此思路错在如果存在双向边,有的点能去的点还未更新完就用来更新其他点.这使得这些点获得的点是不完全的,使得答案偏小. 正确思路: 枚举每个点 阅读全文
posted @ 2021-04-17 01:16 acmloser 阅读(45) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:枚举 错误思路: 爆搜,结果第九个点TLE.采取多个剪枝依旧第九点TLE.... 正确思路: 预处理合法的月+日+年.对于每一个字符串,检查是否有与他在有数字的位数上相同的合法日期,如果有就ans++ 坑点:质数不包括1与0,这两个一定要先赋值1!!!! 实测954ms 1 #inc 阅读全文
posted @ 2021-04-12 13:42 acmloser 阅读(106) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:枚举 + hash 思路: 暴力是直接枚举a[i]与a[j],需要优化省去一重循环.我们枚举的a[i],a[j]检查是否为k倍数时,需要让a[j]*10t + a[i](t位为a[i]的位数,注意这里用字符串转换反而不如直接求位数方便).一重循环枚举a[i]时,t已知,a[i]已知, 阅读全文
posted @ 2021-03-04 21:31 acmloser 阅读(112) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:枚举 错误思路: 直接从a,枚举到b,如果不符合正常日期就continue 本蒟蒻TLE了,这方法可能有卡常大神能过吧... 正确思路: 构造回文日期,如果在[a,b]区间内就ans++. 注意的是0229这个时间,虽然9220属于闰年但是不要忘记考虑. 1 #include <io 阅读全文
posted @ 2021-02-24 22:17 acmloser 阅读(50) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:枚举 错误思路: 三层for循环暴力. 做多了区间dp...枚举区间只能想到按长度枚举区间,但这道题不能这么枚举..... 正确思路: 按区间端点来枚举区间,连号区间的特点是最大值-最小值 = 右端点-左端点.随着区间向右边延长,而动态记录最值. 1 #include <iostre 阅读全文
posted @ 2021-02-24 19:08 acmloser 阅读(57) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:枚举 错误思路: 第一想法是两个对顶堆维护最大值和最小值,但是遇到这样的 0 2 21 0 19 的数据会出错.原因是当第一次修改a[n]与a[1]符合距离17后,与a[2]不一定符合距离17,但是题目约定只能修改一次a2+b2 <= (a+b)2这样会使得结果小了.同理每次sort 阅读全文
posted @ 2021-02-23 14:08 acmloser 阅读(65) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:暴力枚举 完全是因为有容斥原理才做了这题,结果这题和容斥原理有啥关系... 思路: dfs枚举所有可能性 1 #include <iostream> 2 #include <algorithm> 3 #include <set> 4 #include <vector> 5 using 阅读全文
posted @ 2021-01-30 22:51 acmloser 阅读(69) 评论(0) 推荐(0) 编辑