洛谷P1318 积水面积
题目地址: https: www.luogu.org/problemnew how/P1318
题意简述
给出n个柱子的高度,柱子之间的空隙可以积水,求出最大的积水面积总和。
一道很有意思的模拟题,一开始还没有什么思路,后来发现没有柱子可以悬空,模拟的思路就大概出来了。
我的思路很简...[2018/12/18]
C++11新特性之final override标识符
final:
final修饰符可用于修饰类,放在类名后面,被final修饰符修饰的类不能被继承。示例代码:
正确的示范
#include <iostream>
cla A
{
public:
void show_a_info()
{
s...[2018/12/18]
[luogu2292][L语言][luogu2292][L语言]
题目链接
思路
这道题我用的是AC自动机的做法。
先把子串挂到tried树上,在单词结尾打标记的时候,标记的是当前单词的长度。然后去上面查询母串的时候,每查询到一个单词,就建立一条线段,这条线段的结尾位置是母串当前的位置,开始位置就是用当前位置减去这个单词的长度。
然后只要去判断,选出一些线段,使得...[2018/12/17]
数据结构学习-BST二叉查找树 : 插入、删除、中序遍历、前序遍历、后序遍历、广度遍历、绘图
二叉查找树(Binary Search Tree)
是一种树形的存储数据的结构
如图所示,它具有的特点是:
1、具有一个根节点
2、每个节点可能有0、1、2个分支
3、对于某个节点,他的左分支小于自身,自身小于右分支
接下来我们用c++来实现BST的封装
首先我们编写每个节点的类...[2018/12/17]
BZOJ4566: [Haoi2016]找相同字符(后缀自动机)
题意
题目链接
Sol
直接在SAM上乱搞
枚举前缀,用SAM统计可以匹配的后缀,具体在匹配的时候维护和当前节点能匹配的最大值
然后再把parent树上的点的贡献也统计上,这部分可以爆跳parent树(假的,因为这题数据随机),也可以直接树形dp一波记下每个点被统计的次数
#include...[2018/12/17]
BZOJ3238: [Ahoi2013]差异(后缀自动机)
题意
题目链接
Sol
前面的可以直接算
然后原串翻转过来,这时候变成了求任意两个前缀的最长公共后缀,显然这个值应该是\(len[lca]\),求出\(siz\)乱搞一下
#include<bit tdc++.h>
#define int long long
#define L...[2018/12/17]
统计学习方法c++实现之一 感知机
感知机
2018/12/17 代码结构更新,详见https: github.com/bBobxx tatistical-learning
前言
最近学习了c++,俗话说‘光说不练假把式’,所以决定用c++将《统计学习方法》里面的经典模型全部实现一下,代码在这里,请大家多多指教。
感知机虽然简单...[2018/12/17]
BZOJ1396: 识别子串(后缀自动机 线段树)
题意
题目链接
Sol
后缀自动机+线段树
还是考虑通过每个前缀的后缀更新答案,首先出现次数只有一次,说明只有\(right\)集合大小为\(1\)的状态能对答案产生影响
设其结束位置为\(t\),代表的最短/最长后缀的位置为\(l, r\)(l在r的右边)
那么对于区间\(r - l\)...[2018/12/17]
BZOJ1856: [Scoi2010]字符串(组合数)
题意
题目链接
Sol
\(30 \%\)dp:
\(f[i][j]\)表示放了\(i\)个\(1\)和\(j\)个\(0\)的不合法方案
f[0][0] = 1;
cin >> N >> M;
for(int i = 1; i <= N...[2018/12/17]
第一章 程序设计入门
1. 在竞赛中,题目:给定两个整型数a,b,将其交换后输出。
最优解法:(直接反序输出)
#include<iostream>
int main()
{
int a,b;
cin>>a>>b;
cout<<b<...[2018/12/17]
lua字符串类型
Lua中字符串结构体的定义是:
typedef union TString {
L_Umaxalign dummy; /* ensures maximum alignment for strings */
struct {
CommonHeader;
lu_byte r...[2018/12/17]
[分层图最短路][学习笔记]
昨天考试分层图最短路用个dp暴力水了90分。今天只有10分。。。还是好好来学分层图吧。(实际是不想学数据结构2333)
一类问题
分层图最短路得经典模板题就是这样
给出一个n个点m条边的无向图,每条边有边权,可以选择最多k条边,把他们的边权变为0。问从S到T的最短路是多少。
解法
一般这类问题...[2018/12/17]
静态方法
一 在下面两种情况下使用静态方法:
1.当一个方法不需要访问对象转态,其所需的参数读书通过显示参数提供的(例如 Math.pow).
2.当一个方法只需要访问类静态域(enployee.getNextld).
二 方法参数的使用情况
一个方法不能修改一个基本数据类型...[2018/12/17]
Tarjan学习笔记Tarjan学习笔记
从头开始学习OI之Tarjan. 今天重新学习了Tarjan算法..来这里写一下学习笔记...
用处
Tarjan算法,是一个关于图的联通性的神奇算法.基于DFS(深度优先搜索).是对于有向图的算法是.根据树,栈,打标记等方法来完成剖析一个图的工作.
我们先来学习一下Tarjan算法需要...[2018/12/17]
数据结构学习-AVL平衡树
环境:C++11 + win10 IDE:Clion 2018.3 AVL平衡树是在BST二叉查找树的基础上添加了平衡机制。 我们把平衡的BST认为是任一节点的左子树和右子树的高度差为-1,0,1中的一种情况,即不存在相差两层及以上。 所谓平衡机制就是BST在理想情况下搜索复杂度是o(logn) ...[2018/12/17]
c/c++ 重载运算符 基本概念
重载运算符 基本概念
问题:对于int,float可以进行算数运算,但是对于一个自定义的类的对象进行算术运算,就不知道具体怎么运算了。
所以有了自定义运算符的概念。
1,自定义运算符其实就是一个以operator开头的函数,它可以是:
一个类的成员函数
普通的非函数
2,有一元运算符,比如++,...[2018/12/17]
第一篇 C/C++基本语言类型第一篇 C/C++基本语言类型
总概:
{
C:面向过程,以过程为中心,以算法为驱动
}
{
C++:面向对象,以过对象中心,以消息为驱动
个人理解:一切皆对象的思想
}
一 前言总概
1、常量变量
初始化对象与赋值是两个概念
直接初始化:int a(12);高效
复制初始化:int a = ...[2018/12/17]
[AC自动机][学习笔记]
用途
AC自动机适用于一类用多个子串在模板串中匹配的字符串问题。
也就是说先给出一个模板串,然后给出一些子串。要求有多少个子串在这个模板串中出现过。
KMP与trie树
其实AC自动机就是KMP与trie的结合版。或者说是在trie上进行的kmp算法。所以学会kmp和trie是学习AC自动机的基础。...[2018/12/17]
平衡二叉树
1.平衡二叉树定义:如果一棵树不为空,其任意节点的左子树高度与右子树高度之差不超过1,那么满足这样条件的树就是平衡二叉树
2.平衡二叉树节点定义:
1 template<typename T>
2 struct tagNode
3 {
4 T ...[2018/12/17]
几种回文算法的比较几种回文算法的比较
前言 这是我的第一篇博文,献给算法。 学习和研究算法可以让人变得更加聪明。 算法的目标是以更好的方法完成任务。 更好的方法的具体指标是: 1. 花费更少的执行时间。 2. 花费更少的内存。 在对方法的不断寻找,对规律的不断探索中,个人的思考能力能够被加强。当敏捷的思考能...[2018/12/14]
new会返回NULL空指针吗
c++中的new会返回NULL空指针吗
https: tackoverflow.com/question 3389420/will-new-operator-return-null
On a standards-conforming C++ implementation, no. The or...[2018/12/14]
平衡二叉树(AVL) - 12-num
AVL就是优化二叉查找树
平衡因子不大于1
左 < 根 < 右
具体看代码
#include<bit tdc++.h>
using namespace std;
typedef struct node;
typedef node * tree;
...[2018/12/14]
学习 Qt 编程的好书精品推荐!学习 Qt 编程的好书精品推荐!
最近一段时间,准备开始搞Qt方面的东西,想找几本书看看。网上介绍QT的书籍也有很多,不想浪费时间,所以想找几本精品的书籍来看。花了半天的时间找了几本非常不错的,这里面整理好之后推荐给大家!
下面介绍的几本书可以说每本都不错。不过放在这一堆大家也不知道先看哪个,后看哪个?所以这块给大家列举一下学习...[2018/12/14]
LOJ#6491. zrq 学反演(莫比乌斯反演 杜教筛)
题意
题目链接
Sol
反演套路题? 不过最后一步还是挺妙的。
套路枚举\(d\),化简可以得到
\[\sum_{T = 1}^m (\frac{M}{T})^n \sum_{d \ | T} d \mu(\frac{T}{d})\]
后面的显然是狄利克雷卷积的形式,但是这里\(n \le...[2018/12/13]
[luogu3939][数颜色]
题目链接
思路
对于每一种颜色都建立一个动态开点线段树。然后每次查询的时候就去这个颜色的线段树上查询就行了。修改之后不要忘记交换颜色。
这个题目数据有点强。抄了个比较快的读入优化才卡过去。
代码
/*
* @Author: wxyww
* @Date: 2018-12-13 08:59:51...[2018/12/13]
递归入门——错排及其应用
一、常见递归
? 简单题:母牛的故事、骨牌铺方格、一只小蜜蜂...。
? 中等题:不容易系列之(3)—— LELE的RPG难题、阿牛的EOF牛肉串。
? 较难题:神、上帝以及老天爷、不容易系列之(4)——考新郎。
? 变态题:折线分割平面。
? 简单题,显而易见的规律;中等题,略加思考推出...[2018/12/13]
enote笔记法的思考(ver0.2)
章节:enote笔记法的思考
enote笔记法,它是一种独特的文本标记方式与呈现方式。这一整套系统的记笔记的方法,它能够帮助我们对文本内容(例如,其中的概念、观点、思想等)更加直观和条理地进行理性思考和分析。
无论哪种类型的书籍,你都可以用enote笔记法来做读书...[2018/12/13]
CDQ分治小结
CDQ分治小结
warning:此文仅用博主复习使用,初学者看的话后果自负。。
复习的时候才发现以前根本就没写过这种东西的总结,简单的扯一扯
cdq分治的经典应用就是解决偏序问题
比如最经典的三维偏序问题
给出\(n\)个数,每个数\(i\),有三个属性\(a_i, b_i, c_i\)...[2018/12/13]
c++简单学习
在c++中我们很容易遇到字符串的分割处理问题,这种问题通常比较容易,但由于我比较菜,花费了一定时间去思考一个和字符串相关的题,该题的大概思路是利用取模运算后,将得到的单个字符进行分析,主要考察到了字符串的合并操作,明日计划30学习c++。[2018/12/13]
loj#6235. 区间素数个数(min25筛)
题意
题目链接
Sol
min25筛的板子题,直接筛出\(g(N, \infty)\)即可
筛的时候有很多trick,比如只存\(\frac{N}{x}\)的值,第二维可以滚动数组滚动掉
#include<bit tdc++.h>
#define LL long long
#d...[2018/12/12]
[树套树][学习笔记]
思想
树套树像他的名字一样,就是一棵树套另一棵树。用一棵外层树来维护一些区间之类的东西。然后外层树的每个节点都是一棵内层树。就这样
一道模板题
bzoj3196
思路
这是一道线段树套平衡树的模板题。外层用一棵线段树来维护区间操作。然后线段树的每个节点都是一棵平衡树
操作1:查询从l到r中比k小的数...[2018/12/12]
【C++并发实战】(二)线程管理
前一篇没用markdown编辑器感觉不好看,删了重新发
本篇主要讲述线程的管理,主要包括创建和使用线程
启动线程
线程出现是为了执行任务,线程创建时会给一个入口函数,当这个函数返回时,该线程就会退出,最常见的main()函数就是主线程的入口函数,在main()函数返回时主线程就结束了。
如何...[2018/12/12]
[luogu3810][bzoj3262][陌上花开]
题目链接
思路
听说可以CDQ分治,然后我不会,所以我写树套树
首先肯定先按照a拍个序。然后就成了在b,c这两个数组中查询了。用一个树状数组套treap来维护。当插入一个数的时候,就在树状数组的b这个位置的treap里加入一个c。然后查询的时候就直接把小于等于c的数的个数进行前缀和就行了。
注意题目...[2018/12/12]
采用Qt快速绘制多条曲线(折线),跟随鼠标动态显示线上点的值(基于Qt的开源绘图控件QCustomPlot进行二次开发)
QCustomPlot是一个开源的基于Qt的第三方绘图库,能够绘制漂亮的2D图形。
QCustomPlot的官方网址:https: www.qcustomplot.com/
从官网下载QCustomPlot的源文件,包括qcustomplot.h和qcustomplot.cpp。
本程...[2018/12/12]
[bzoj3524][Couriers]
题目链接
思路
观察这个\((r - l + 1)/2\),很容易证明,如果一个数出现次数大于\((r - l + 1) / 2\),那么这个区间内第\((r - l + 1) / 2 + 1\)大一定是这个数。所以只要用主席树查询出区间内第\((r - l + 1) / 2 + 1\)大,然后再去...[2018/12/12]
Berlekamp-Massey算法学习笔记
Berlekamp-Ma ey算法
很久之前就听说过这个算法,当时六校联考的时候Day1T1是一道很有意思的递推,神仙zzx不会做于是就拿BM算法艹出了递推式Orzzzzzzzzzzx
推荐一篇讲的详细的不能再详细的博客
我就不详细说了,只记一下自己感觉比较难理解的地方
设\(r(m)\)表...[2018/12/12]
windows中用bat脚本更改环境变量
机房同传了新的系统,不使用dev的话每次开机都要重新更改环境变量(其实也可以在编译命令里添加绝对路径)。所以就去学习了一下用bat脚本更改path。以便每次开机可以一键更改添加环境变量
wmic environment where "name='PATH' and use...[2018/12/12]
BZOJ3529: [Sdoi2014]数表(莫比乌斯反演 树状数组)
题意
题目链接
Sol
首先不考虑\(a\)的限制
我们要求的是
\[\sum_{i = 1}^n \sum_{j = 1}^m \sigma(gcd(i, j))\]
用常规的套路可以化到这个形式
\[\sum_{d = 1}^n \sigma (d) \sum_{k = 1}^{\f...[2018/12/11]
cf1090 I.Minimal Product(贪心)cf1090 I.Minimal Product(贪心)
题意
题目链接
给出长度为\(n\)的序列\(a\),序列中的元素取值为\([-2e9, 2e9]\)
找到两个位置\((i, j) (i <j, a[i] < a[j])\),最小化\(a[i] * a[j]\)
Sol
当时在做的时候思路是直接维护大于\(0\)的最大/最小值...[2018/12/11]
C++编译错误杂记
目录
2018年12月10日
g++ error: expected ‘)’ before ‘*’ token
2018年11月15日
error: invalid conversion from ‘const char*’ to ‘char*’
2018年11月11日
error: a ...[2018/12/11]
gdb 基础
版权:https: linuxtools-rst.readthedocs.io/zh_CN/latest/tool/gdb.html
1. gdb 调试利器
GDB是一个由GNU开源组织发布的、UNIX/LINUX操作系统下的、基于命令行的、功能强大的程序调试工具。 对于一名Linux下工作的c+...[2018/12/11]
java:模拟栈操作
1 import java.util.ArrayList;
2
3 public cla MyStack {
4
5 private ArrayList<Object> arrayList;
6
7 public MyStack() {
8 ...[2018/12/11]
luogu P1816 【忠诚】
话说许多dalao都采取线段树A题可本蒟蒻不会啊,
暴力的我想出了暴力解法(快排)
#include<cstdio>
#include<algorithm>
using namespace std;
struct skh
{
int x,y;
};
skh a...[2018/12/11]
HDU 1848 Fibonacci again and again(SG函数)HDU 1848 Fibonacci again and again(SG函数)
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ion(s): 10069 &nb...[2018/12/11]
斐波那契数列的三种C++实现及时间复杂度分析
斐波那契数列定义:F(1)=1, F(2)=1, F(n)=F(n-1) + F(n-2) (n>2)
如何计算斐波那契数 F(n) 及时间复杂度 T(n) 呢?
我参考了一些资料总结了以下3种方法:递归法、顺序法和矩阵乘法,并给出了基于C++的简单代码实现和时间复杂度分析。
如有不当...[2018/12/11]
BZOJ4805: 欧拉函数求和(杜教筛)
题意
题目链接
Sol
杜教筛板子题。。
#include<bit tdc++.h>
#define LL long long
using namespace std;
const int MAXN = 1e7 + 10;
inline int read() {
char...[2018/12/10]
CMake根据平台移植检查设置文件编译选项CMake根据平台移植检查设置文件编译选项
#添加函数检查功能
include(CheckFunctionExists)
检查系统是否支持accpet4,将检查结果设置至HAVE_ACCEPT4
check_function_exists(accept4 HAVE_ACCEPT4)
if(NOT HAVE_ACCEPT4)
如...[2018/12/10]
洛谷P3939 数颜色(二分 vector)
题意
题目链接
Sol
直接拿vector维护每种颜色的出现位置,然后二分一下。
#include<bit tdc++.h>
using namespace std;
const int MAXN = 3e5 + 10;
inline int read() {
char c...[2018/12/10]
深入出不来nodejs源码-timer模块(C++篇)
终于可以填上坑了。
简单回顾一下之前JS篇内容,每一次setTimeout的调用,会在一个对象中添加一个键值对,键为延迟时间,值为一个链表,将所有该时间对应的事件串起来,图如下:
而每一个延迟键值对的触发,则是在链表头生成的时候就已经开始了,如下:
function Timer...[2018/12/10]
1001 A+B Format (20 分)
题意:给出俩个整数a,b(不超过10^9) ,求a+b的值 ,并按照xxx,xxx,xxx的格式输出
#include <iostream>
using namespace std;
int main() {
int a, b;
cin >> a >...[2018/12/10]