08 2021 档案
摘要:原题链接 考察:枚举 思路: 枚举所有分配方案.这里采用的枚举方式是隔板法.也就是先枚举每个队的人数,然后将7个人全排列,按人数放隔板,计算答案. ##Code #include <iostream> #include <cstring> #include <map> #include <algor
阅读全文
摘要:原题链接 考察:栈,模拟 模拟栈匹配,不匹配的留入栈里.然后栈里都是不匹配的坐标,相邻之间都是匹配的. #include <iostream> #include <cstring> using namespace std; const int N = 100010; char s[N],res[N]
阅读全文
摘要:原题链接 考察:模拟 思路: 坑点比较多: (1) 判断不符合语法的单词 (2) 只允许存在一个名词 #include <iostream> #include <cstring> using namespace std; const int N = 100010,M = 10; string s[N
阅读全文
摘要:原题链接 考察:欧拉路径,离散化 思路: 定睛一看这不欧拉路径吗,然后套板子即可.... ##Code #include <iostream> #include <cstring> #include <map> using namespace std; typedef pair<int,int> P
阅读全文
摘要:原题链接 考察:思维 错误思路: 暴力模拟,但是步骤没有统一的规矩. 思路: 递归思想.因为需要将每个棋子放在主对角线以下.那么首先保证最后一列无 ,那么再交换有 的行和最后一行,这样怎么也不会换到对角线上.然后可以发现最后一行,最后一列可以去掉,再重复上面的步骤 ##Code #inclu
阅读全文
摘要:原题链接 考察:计算几何,枚举 思路: 枚举所有线段排列方案.检查以下条件: 两条线平行,相连两条线垂直. 边的长度都 都是直角 判断向量平行和垂直: GO ##Code #include <iostream> #include <cstring> #include <map> #inclu
阅读全文
摘要:原题链接 考察:dfs 错误思路: 有点类似 的正则问题,然而并不是.... 正确思路: 当遇到一个pair后面一定是<,但是 不一定.需要考虑它在pair后的哪个位置.很巧妙的方法是一个pair是< , >三个符号 个 .,是第一个dfs回溯后添加,>是第二个df
阅读全文
摘要:原题链接 考察:贪心 思路: 不知道具体分到哪类....总之是分情况讨论. (1) k>1的情况,分为 m<=n-1 和 mn 两种情况 (2) k1 分为3种情况. 其中 又要细分为 的情况 ##Code #
阅读全文
摘要:原题链接 考察:记忆化搜索 思路: 不用等完整的DIMA在记录.设置 能走的步数.求所有起点的最大 . 无穷的条件是当前起点开始走到本次走过的地方.所以还需要一个 数组记录. ##Code #include <iostream
阅读全文
摘要:原题链接 考察:模拟,贪心 思路: 万恶的模拟+离线处理题. 对于相邻的0之间的数字,最大的放在stack里,其次在队列,最后在双端队列. 要注意的是可能末尾没有0 ##Code #include <iostream> #include <cstring> #include <stack> #inc
阅读全文
摘要:原题链接 考察:思维 思路: 假设时间 后,以 为开始的细菌 .此后 就是以 为起始到达 的时间.但是如果 就需要将 #include <iostream> #include <cstring> using namespace std; typed
阅读全文
摘要:原题链接 考察:st表+贪心 or 枚举+剪枝 ###思路一: 枚举+剪枝.枚举左端点,在枚举 的每一个 .求两个值,以 为起点的和,与以 为起点的或和.如果两个值是一样的说明没必要 没必要在此区间存在. #include <iostream> #include <c
阅读全文
摘要:原题链接 考察:快速幂 思路: 简单题,但我 了 次... 统计 的出现次数.从小开始遍历,如果次数可以整除 ,则需要进位,注意每个地方都最好 .... 还有就是分子可能>分母,因为 最小可以 ##Code #inclu
阅读全文
摘要:原题链接 考察:组合数学 思路: 我们不必模拟每次具体去掉什么.因为去掉的蜡烛只能在熄灭的蜡烛左右俩侧.对于区间 ,每次在左右端点选一个去掉,方法数是 .但是区间1,3是特殊的,因为只有一种方法. 计算完区间内部的方法后,就是计算区间之间的方法数.这里不能用插空法.是先有
阅读全文
摘要:原题链接 考察:双指针 思路: 两个单调队列,一个存最大值,一个存最小值.当差值 时开始计数.这时需要在设置一个指针 ,将最左边的队列元素去掉.计算的时候....不要两头计算,确定左边计算右边........... ##Code #include <iostream> #include <
阅读全文