摘要:
原题链接:http://lx.lanqiao.cn/problem.page?gpid=T122 问题描述 观察这个数列: 1 3 0 2 -1 1 -2 ... 这个数列中后一项总是比前一项增加2或者减少3。 栋栋对这种数列很好奇,他想知道长度为 n 和为 s 而且后一项总是比前一项增加a或者减少 阅读全文
摘要:
2018-01-31 题目链接:http://codeforces.com/contest/776 官方题解:http://codeforces.com/blog/entry/50622 【A】水题,按照题意即可 #include<iostream> #include<cstdio> #includ 阅读全文
摘要:
【前缀树】 用来保存一个映射(通常情况下 key 为字符串 value 为字符串所代表的信息) 例如:一个单词集合 words = { apple, cat, water } 其中 key 为单词 value 代表该单词是否存在 words[ 'apple' ] = 存在 而 word[ ' abc 阅读全文
摘要:
【线段树】 本质是二叉树,每个节点表示一个区间 [ L, R ],设 m = (R - L + 1) / 2 (该处结果向下取整) 左孩子区间为 [ L, m ] , 右孩子区间为 [ m+1 , R ] 同时每个节点(即每个区间)维护一个信息 (该信息能通过子节点区间结果合并得到父区间结果) 图解 阅读全文
摘要:
【RMQ】 Range Minimum/Maximum Query 范围最值问题 【ST算法】 解决RMQ问题的有效算法 预处理 经过预处理构造出d,预处理时间复杂度 O(nlogn) 运用动态规划的思想 d(i, j) 表示 范围 i ~ i + 2j-1 的最小值则有状态转移方程 d(i, j) 阅读全文
摘要:
【树状数组】 顾名思义:本质是数组,逻辑上是被构造出来的二叉树,方便求前缀和,以及更新元素值 关键:设原数组为A,设构造出来的树状数组为 C,令 C i = A i-lowbit(i) + 1 + A i-lowbit(i) + 2 + .......... + Ai , 其中lowbit(i) = 阅读全文
摘要:
【并查集】 为实现 在 不相交集合 上的操作 (1.合并两个集合 2.查询某个元素属于哪个集合)而定义的一种数据结构 其实现有两种方式:链表和有根树 【应用】 在图论中 一个联通分量的所有点 对应一个集合 对应的操作可以为 判断两个点是不是在同一个联通分量之中 添加一条边合并两个联通分量 【优化】 阅读全文
摘要:
*原题链接 http://codeforces.com/contest/893/problem/A *所用算法 简单模拟 *具体思路 用一个watch变量保存上一次观看者 *代码 *小结 无 *参考 无 阅读全文
摘要:
【题目链接】 http://poj.org/problem?id=1222 【题目大意】 5*6的一个由灯组成的方阵 操作一个灯 周围的上下左右四个灯会发生相应变化 即由灭变亮 由亮变灭 问如何操作使灯全亮 【题解】 对于每个灯可以列出一个方程 Lk:表示第 k 个灯的初始终状态 ai:表示第 i 阅读全文
摘要:
递归版(在区间[x, y)中找v的位置) 1 //递归版二分查找 2 int bsearch(int * A, int x, int y, int v) 3 { 4 5 if(v<a[x] || v>a[y-1]) return -1; 6 int m = x + (y-x)/2; //此处能不能用 阅读全文