08 2021 档案

摘要:原题链接 考察:质因数分解,筛质数 思路: 比较明显的思路是循环1~n每一个a[i]\(,,n\*\)107会有超时的风险. 优化就是筛到107的质数,然后判断为质数立马跳出. 将质数的指数取最小值.然后循环a[i],b[i]除去质数. 但是 阅读全文
posted @ 2021-08-31 22:42 acmloser 阅读(54) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:枚举 思路: 枚举所有分配方案.这里采用的枚举方式是隔板法.也就是先枚举每个队的人数,然后将7个人全排列,按人数放隔板,计算答案. ##Code #include <iostream> #include <cstring> #include <map> #include <algor 阅读全文
posted @ 2021-08-31 16:06 acmloser 阅读(42) 评论(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 阅读(27) 评论(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 阅读(39) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:欧拉路径,离散化 思路: 定睛一看这不欧拉路径吗,然后套板子即可.... ##Code #include <iostream> #include <cstring> #include <map> using namespace std; typedef pair<int,int> P 阅读全文
posted @ 2021-08-30 16:33 acmloser 阅读(39) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:思维 错误思路: 暴力模拟,但是步骤没有统一的规矩. 思路: 递归思想.因为需要将每个棋子放在主对角线以下.那么首先保证最后一列无1,那么再交换有1的行和最后一行,这样怎么也不会换到对角线上.然后可以发现最后一行,最后一列可以去掉,再重复上面的步骤 ##Code #inclu 阅读全文
posted @ 2021-08-27 02:17 acmloser 阅读(39) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:计算几何,枚举 思路: 枚举所有线段排列方案.检查以下条件: 两条线平行,相连两条线垂直. 边的长度都>0 都是直角 判断向量平行和垂直: GO ##Code #include <iostream> #include <cstring> #include <map> #inclu 阅读全文
posted @ 2021-08-26 22:24 acmloser 阅读(35) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:dfs 错误思路: 有点类似acwing的正则问题,然而并不是.... 正确思路: 当遇到一个pair后面一定是<,但是int不一定.需要考虑它在pair后的哪个位置.很巧妙的方法是一个pair是< , >三个符号2dfs.,是第一个dfs回溯后添加,>是第二个df 阅读全文
posted @ 2021-08-24 23:44 acmloser 阅读(47) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:贪心 思路: 不知道具体分到哪类....总之是分情况讨论. (1) k>1的情况,分为 m<=n-1 和 mn 两种情况 (2) k1 分为3种情况. 2.1m<=n2m==n1m==n 其中mn又要细分为n2n>2的情况 ##Code # 阅读全文
posted @ 2021-08-24 18:43 acmloser 阅读(45) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:记忆化搜索 思路: 不用等完整的DIMA在记录.设置dp[i][j]\(\)(i,j)能走的步数.求所有起点的最大dp[i][j]. 无穷的条件是当前起点开始走到本次走过的地方.所以还需要一个bool数组记录. ##Code #include <iostream 阅读全文
posted @ 2021-08-24 15:31 acmloser 阅读(55) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:贪心+思维 思路: 首先明确抹去字符不能改变s1s2的位置.也就是不存在","的情况.所以如果s2[i]s1[i]出现位置比s2[i+1]晚,那么ans++. 两层for循环明显需要优化,所以预处理s1的情况.f[i][j] 阅读全文
posted @ 2021-08-24 11:01 acmloser 阅读(47) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:线性dp 思路: 一开始完全没想到dp,看了题目的算法标签才做出来() f[i][j]记录当前位是i,符合要求的子序列上一位是j的最长长度. dp转移: 找到上一位与a[i]相等的位置kk\(f[i][j]=f[j][k]+1\)k$不存在 阅读全文
posted @ 2021-08-12 14:40 acmloser 阅读(31) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:模拟,贪心 思路: 万恶的模拟+离线处理题. 对于相邻的0之间的数字,最大的放在stack里,其次在队列,最后在双端队列. 要注意的是可能末尾没有0 ##Code #include <iostream> #include <cstring> #include <stack> #inc 阅读全文
posted @ 2021-08-10 12:30 acmloser 阅读(36) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:思维 思路: 假设时间c后,以1为开始的细菌>=t.此后nc就是以t为起始到达z的时间.但是如果>t就需要将ans+1 #include <iostream> #include <cstring> using namespace std; typed 阅读全文
posted @ 2021-08-09 10:09 acmloser 阅读(25) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:st表+贪心 or 枚举+剪枝 ###思路一: 枚举+剪枝.枚举左端点,在枚举>i的每一个j.求两个值,以i为起点的和,与以i+1为起点的或和.如果两个值是一样的说明没必要a[i]没必要在此区间存在. #include <iostream> #include <c 阅读全文
posted @ 2021-08-09 00:52 acmloser 阅读(25) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:快速幂 思路: 简单题,但我wan次... mp统计suma[i]的出现次数.从小开始遍历,如果次数可以整除x,则需要进位,注意每个地方都最好longlong.... 还有就是分子可能>分母,因为a最小可以 =0 ##Code #inclu 阅读全文
posted @ 2021-08-08 21:31 acmloser 阅读(29) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:组合数学 思路: 我们不必模拟每次具体去掉什么.因为去掉的蜡烛只能在熄灭的蜡烛左右俩侧.对于区间2,每次在左右端点选一个去掉,方法数是28411.但是区间1,3是特殊的,因为只有一种方法. 计算完区间内部的方法后,就是计算区间之间的方法数.这里不能用插空法.是先有 阅读全文
posted @ 2021-08-08 18:24 acmloser 阅读(39) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:双指针 思路: 两个单调队列,一个存最大值,一个存最小值.当差值>k时开始计数.这时需要在设置一个指针l,将最左边的队列元素去掉.计算的时候....不要两头计算,确定左边计算右边........... ##Code #include <iostream> #include < 阅读全文
posted @ 2021-08-01 10:52 acmloser 阅读(37) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示