摘要:
树状数组原理(OIwiki) 模板 //////////////////////////////////////// int lowbit(int k) { return k & -k; } ///////////////////////////////////////// void add(int 阅读全文
摘要:
题目类型 判定(Determine)——判断圆和直线是否有交 计数(Count)——判断圆与直线交点个数,两圆相交面积 列举(Enumerate)——圆与直线交点的坐标 前置知识 浮点数与精度问题 C++语言的三种浮点类型 float 单精度浮点类型 32bit double 双精度浮点类型 64b 阅读全文
摘要:
ABC359 E 题目很简单,大概就是要求数组中一个数的左侧第一个比它大的值。这里就需要用单调栈来实现了。 单调栈 单调栈就是通过栈的性质,来实现快速查找一个数的左侧第一个比他大的数。 过程 创建一个栈,判断栈顶元素是否小于当前元素,如果小于则将栈顶元素弹出直到栈顶元素大于当前元素,最后将当前元素压 阅读全文
摘要:
Atcoder357 D D 题意就是求给定一个数n的连续n个n相拼接,求最后的数\(mod998244353\)的值。 我们假设n的长度为len,那么n个n相拼接可以看成n*(\(10^{len^0}\)+\(10^{len^1}\)+....+\(10^{len^{n-1}}\))。那个就可以利 阅读全文
摘要:
Atcoder356 C 解题思路 先从数据量上看,\(2^{15}\)=32768,那么时间复杂度为O(\(2^{n}*m*n\))大约在\(4*10^{7}\)左右,可以直接跑暴力枚举。 按照正常思路,我们需要创建一个二维数组来存储测试中的数据。然后再创建一个一维数组来模拟n把钥匙的选和不选。这 阅读全文
摘要:
ABC355 D区间相交问题 题意 给出n个区间,每个区间给出左端点(l)和右端点(r),判断有多少区间成对相交。 分析 如果我们直接暴力查找每个区间是否和别的区间相交,那么时间复杂度就是O(\(n^2\)),肯定是过不了的。 考虑如何优化,通过题意,可以发现优化的关键在于区间相交的判定方式,对于任 阅读全文
摘要:
Codeforces Round 799 (Div. 4) E(最长子区间) 基本思路 求满足s的最长子区间。 错误思路分析 想用双指针左右贪心模拟题目要求删前或后的数(但在面对前后两个相等的时候,删前删后没有无后效性) 简单暴力枚举子区间长度(显然在n=1e5的时候t了) 正确思路 虽然也是暴力枚 阅读全文
摘要:
正则表达式多用于字符串匹配,检索。 基础符号 [] 意义:或 a[bc]等于ab或ac () 意义:和 (abc)只等于abc [^] 意义:否 a[^bc]表示不等于ab或ac * 意义:零或更多 ab*等于a,ab,abb... + 意义:1或更多 ab+等于abb,abbb... [0-9]+ 阅读全文
摘要:
Codeforces Round 933 (Div. 3) B 从边缘开始计算,因为边缘肯定只能一个一个减,就可以遍历得到答案. 代码 C 只要对mapie特判,然后判断map和pie的个数就是答案了。 D(记忆化搜索) 可以通过二维数组来标记搜索状态,将已经出现过的状态直接返回,极大减少时间。 # 阅读全文