摘要:
近期我计划要补更好多noip知识点 就先从ST表开始吧 ST表是一种编程复杂度低的用于求解RMQ问题的算法 算法核心思想运用了动态规划和倍增 以求区间最大值为例 设a[i][j]表示左端点为i ,右端点为i + (2 ^ j) - 1的区间的最大值 显然这段区间的长度为2 ^ j; 然后将这段区间分 阅读全文
摘要:
原理 (注:由于线段树的每个节点代表一个区间,以下叙述中不区分节点和区间,只是根据语境需要,选择合适的词) 线段树本质上是维护下标为1,2,..,n的n个按顺序排列的数的信息 所以 其实是“点树” 是维护n的点的信息 至于每个点的数据的含义可以有很多 在对线段操作的线段树中 每个点代表一条线段 在用 阅读全文
摘要:
呃······ 刚到北京的第一个晚上没睡好,直到天亮才睡着 然后是第一天的课程 参加的是清北学堂的NOI2018提高组基础班 第一天讲的大部分是在学校讲过的课程,然后下午有个考试 本来觉得能考个100+的分,但只考了30 第一题本来能AC,但是编译错误,有一个 j 和 i 打反了 晚上还郁闷了一会儿 阅读全文
摘要:
提到树上倍增就不得不先说说最近公共祖先(LCA)了 如下图所示 ④和⑤的LCA即为②(绿色的) 那怎么求LCA呢? 最简单粗暴的方法就是先深搜一次,处理出每个点的深度 然后把深度更深的那一个点④一个点地一个点地往上跳,直到到某个点③和另外那个点⑤的深度一样 然后两个点一起一个点地一个点地往上跳,直到 阅读全文
摘要:
数字(number) Time Limit:1000ms Memory Limit:128MB 题目描述 LYK拥有n个数,这n个数分别是a1,a2,…,an。 有一天它做了一个梦,在梦里它的这n个数有部分被小偷偷走了,只剩下了m个数b1,b2,…,bm。它想知道有哪些数字被小偷偷走了! LYK告诉 阅读全文
摘要:
佳佳的Fibonacci: 时间限制: 1 Sec 内存限制: 128 MB 题目描述 佳佳对数学,尤其数列十分感兴趣,在研究完Fibonacci之后,他创造出许多稀奇古怪的数列。如求S(n)表示Fibonacci数列前n项和对m取模之后的值,即S(n)=(F1+F2+…+Fn) mod m,F1= 阅读全文
摘要:
#include #include #include #include #include #include char a[10001] = {0}, s[256] = {0}; int main() { int i, n, t = 0; bool f; gets(s); for(int j = 0;j <= strlen(s)-1;j++) { ... 阅读全文
摘要:
#include #include #include #include #include #include int a[10001] = {0}, b[10001] = {0}; char s[10001]; void work(int a[]) { for(int i = 0;i ') a[i+1] = 5; if(s[i] == ')') a[i+1] = 6; ... 阅读全文
摘要:
#include #include #include #include #include #include #define maxn 20 char c[256]; bool work(char c[256]) { int top=0,i=0; while (c[i]!='@') { if (c[i]=='(') top++; if (... 阅读全文
摘要:
#include<cstdio>#include<iostream>#include<cmath>#include<cstring>#include<algorithm>#include<string>using namespace std;int main(){ int a[201] = {0}, 阅读全文