OI学习笔记/题解报告/经验分享
yhf_2015
无。。。
展开
-
【学习】Splay平衡树
#include #include #include #include #include #define fi first#define se second#define in(x) getint(&x)#define pii pair#define FOR(i,m,n) for(int i=m;iusing namespace std;typedef long long原创 2016-12-29 13:23:10 · 293 阅读 · 0 评论 -
【学习】数据离散化
离散化就是找到数据中有用的记录下来,查找的时候二分找位置。#include #include using namespace std;int a1[20] = {0,4,1,2,1,2,4,4,3,3,6,7,5,6,5,4};int main(){ int n = 15; sort(a1+1, a1+1+n); n = unique(a1+1, a1+1+n)原创 2016-12-29 13:25:44 · 218 阅读 · 0 评论 -
【学习】容斥原理与莫比乌斯反演
容斥原理:把判断一个东西的有无变成计算一个式子。公式:[n==0]=∑i=0n(−1)iCin[n==0]=\sum_{i=0}^{n}(-1)^iC_{n}^{i}证明:用生成函数,有若干个个物品,考虑每一个选还是不选,假如说选择nn个,可以得到:(x−1)n(x-1)^n。 其中当x=1x=1的时候选择该物品,显然可以得到[n==1]=(x−1)n[n==1]=(x-1)原创 2017-01-29 00:01:08 · 946 阅读 · 0 评论 -
【学习】线筛求积性函数与线性预处理逆元
线性筛法可以在O(n)的时间复杂度下计算出nn以内的质数。for(int i = 2; i <= n; i ++){ if(!is[i]){ prime[++pcnt] = i; } for(int j = 1; i*prime[j] <= n; j ++){ is[i*prime[j]] = 1; if(i%prim原创 2017-01-30 23:55:18 · 537 阅读 · 0 评论 -
【学习】博弈游戏
博弈问题所讨论的博弈问题满足以下条件:玩家只有两个人,轮流做出决策,且操作公平。游戏的状态集有限,保证游戏在有限步后结束.博弈双方都使用最优决策。一个游戏有两个状态,我们称为必胜态和必败态,他们的关系:必胜态表示,从当前状态可以转移到一个必败态。必败态表示,从当前状态无法转移到一个必败态。也就是说,一个状态不是必胜态,就是必败态。Nim取石子游戏问题描原创 2017-03-22 17:06:59 · 431 阅读 · 0 评论 -
【学习】动态树 link cut tree
介绍LCT是动态的树链剖分,他用SplaySplay维护重链的信息,并且动态维护重链。 可以支持合并分割操作,并且动态维护树链的信息。 原树中的重链对应的是SplaySplay中的实边,轻链对应轻边,这样一棵树被划分成了若干个SplaySplay。 SplaySplay的中序遍历是从浅到深的顺序。基本的操作Splay-is_root()bool is_root(){retur原创 2017-03-23 09:24:01 · 266 阅读 · 0 评论 -
SDOI 2017 Round1 题解
sdoi 2017 Round1原创 2017-04-12 18:49:41 · 402 阅读 · 1 评论 -
【学习】树链剖分
学习资料:starszys的博客 树链剖分以下为学习笔记,部分摘自starszys的博客。解决的问题:把对树的操作转换到序列上,以便于用数据结构来维护。基本概念:树链:就是树上的路径。剖分,就是把路径分类为重链和轻链。重儿子:siz[u]为v的子节点中siz值最大的,那么u就是v的重儿子。轻儿子:v的其它子节点。重边:点v与其重儿子的连边。轻边:点v与其轻儿子的原创 2017-04-26 08:24:52 · 301 阅读 · 0 评论 -
【学习】快速傅里叶变化(FFT)
知识点一下内容来自于goodqt的课件\text{一下内容来自于goodqt的课件}复数形如 a+bia + bi,其中 a∈Ra∈R, b∈Rb ∈ R, i2=−1i^2 = −1 的数称为复数,记作z=a+bi∈Cz = a + bi ∈ C。 (a+bi)+(c+di)=(a+c)+(b+d)i(a + bi) + (c + di) = (a + c) + (b +原创 2017-04-24 19:18:57 · 400 阅读 · 0 评论 -
【学习】 区间消除类dp
经典的就是poj 1390 Blocks。 这一类的问题总结起来就是可以消除掉一段区间,之后原来的区间的两边会合起来,产生一种新的结果。原创 2017-04-28 21:50:38 · 373 阅读 · 0 评论 -
【学习】Treap平衡树
Treap简介Treap 是指有一个随机附加域、满足堆的性质的二叉搜索树。其结构相当于以随机数据插入的二叉搜索树。其基本操作的期望时间复杂度为 O(logn)O(\log n)。相对于其他的二叉搜索树,Treap 的特点是实现简单,且能基本实现随机平衡的结构。Treap特性Treap 在基本的二叉搜索树基础上增加了一个随机附加域,整棵树不仅要满足二叉搜索树左儿子小右儿子大的性质,同时也原创 2016-12-29 13:24:24 · 299 阅读 · 0 评论 -
【学习】彻底理解树状数组
前言: 可能是因为学习了很多高级数据结构的缘故,突然感觉好像明白了树状数组,重新总结一下。 本文通过从根源深处挖掘树状数组所解决的问题,深刻的理解树状数组的操作本质,若要系统的研究树状数组,建议学习一下“二进制分解”“倍增”的概念。 考虑到初学者,文章写的比较长,废话比较多,还望耐心的看下去,相信你也能有新的收获。 温馨提示:文章中的代码仅供参考思路,不保证100%正确,使用时请根据原题情况原创 2016-12-24 01:20:58 · 2847 阅读 · 2 评论 -
NOIP2016 提高组 解题报告
说明:由于我能力的限制,文章中的做法不一定是最优秀的算法,但官方数据全部测试通过,使用的全部知识全部是NOIP提高组的知识,请组织放心查看。 感谢 GoodQt 的指导与帮助DAY1 T1 玩具谜题题目来源:洛谷 1563吐槽:对NOIP出题人“魔法师”英语单词拼错表示(滑稽)。思路:模拟操作过程,分类讨论即可。 时间复杂度:O(n+m)O(n+m)代码:#include <iostream>原创 2016-12-06 21:52:43 · 6319 阅读 · 0 评论 -
读入优化模板
读入优化模板。inline int gt(){ char _ch; int _num = 0, _op = 1, _ok = 0; while(_ch = getchar()) if(_ch == '-') _op *= -1; else if(_ch >= '0' && _ch <= '9') _num = _num*10 + _ch - '0', _ok = 1; els原创 2016-09-27 09:01:19 · 276 阅读 · 0 评论 -
1- noip模拟赛 DAY1
T1 QAQ为了方便,我们将字符串的下标从0开始计。那么我们要找的一组答案要满足:将这些答案中的数转成m进制数后,0..m-1中每一个数都能在某个数的某个数位上找到。这是充分必要的。原创 2016-10-12 00:43:21 · 502 阅读 · 0 评论 -
DEV-C++ 修改栈空间命令
只需要在连接器命令行加入命令:−Wl,−−stack=SIZE-Wl,--stack=SIZESIZE为空间大小,64MB记作64∗1024∗1024=6710886464*1024*1024 = 67108864原创 2016-10-13 09:18:18 · 12532 阅读 · 3 评论 -
3- noip交流赛 DAY1
题解来自fyj,http://user.qzone.qq.com/798243129/main T1: 分析:如果有50道题,可能有2道题答案是正确,那么随机选0道题是正确,至少对48道,选1道题,至少对47道,选2道题,至少对46,依次类推,当选49道是正确时,至少能对1道,当选50道为正确时,至少能对2道。由此发现,对于可能有x道题是正确,那么至少答对数和随机选择正确的数的关系图像是一次函数原创 2016-10-15 23:50:09 · 365 阅读 · 0 评论 -
4- noip交流赛 DAY2
NOIP2016交流赛 DAY2原创 2016-10-16 13:50:27 · 520 阅读 · 2 评论 -
2- noip模拟赛 DAY2
noip模拟赛 DAY2T1 勾股数因为a2=c2−b2a^2=c^2-b^2,所以可以用平方差公式展开,a2=(c−b)(c+b)a^2=(c-b)(c+b) 分情况考虑: 当输入的a为奇数时, 令c−b=1c-b=1,则c+b=a2c+b=a^2,所以2b+1=a22b+1=a^2,解得: {b=a2−12c=a2−12+1\begin{cases}\text b=\frac原创 2016-10-30 22:52:52 · 316 阅读 · 0 评论 -
NOIP专题复习——专题一:数据结构基础
模板题目来源:【洛谷 3378】堆首先是STL的堆(优先队列),性能稳定,功能强大,常数略大。#include <cstdio>#include <cstring>#include <iostream>#include <queue>using namespace std;priority_queue <int, vector<int>, greater<int> > q1;//小根堆/原创 2016-11-04 14:54:49 · 1238 阅读 · 0 评论 -
NOIP专题复习——专题二:动态规划基础
数字三角形变式题意:数字三角形,变为对100取模后的最大值。思路:当一种状态的影响不可忽略的时候,就加到动态规划当中,就是再加上一维。 设dp[i][j][k]dp[i][j][k]表示,第i行的第j个,当余数是k时的最大值。 状态转移方程:dp[i][j][k]=max(dp[i−1][j][k])dp[i][j][k]=max(dp[i-1][j][k])花店橱窗问题原创 2016-11-08 23:57:38 · 1184 阅读 · 0 评论 -
NOIP2016 普及组 解题报告
T1 买铅笔题目来源:洛谷 1909思路:实现一下向上取整的步骤,对三种决策取最小值。代码:#include #include #include using namespace std;int num, val, n, res = 2e9;int main(){ scanf("%d", &n); for(int i = 1; i 3; i ++){原创 2016-12-04 19:41:33 · 4216 阅读 · 0 评论 -
个人网站地址,欢迎访问,交流。
yhf2000.cn原创 2019-03-26 19:10:24 · 265 阅读 · 0 评论