自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 收藏
  • 关注

原创 第一篇博文

生命是无数起点的汇集,每一个圣人,都曾有过微不足道的开始。#include<stdio.h>int main(){ printf("Hello World!"); return 0;}

2017-10-05 14:55:19 189

原创 浅谈Java中Map、Set、List的使用

前言这三者说实话给我的感觉和C++中的STL所提供的内容是十分类似的,并且在使用的过程中也有若干共通的地方。但由于Java中会强调“接口”,所以这三者在实际使用的时候和C++中的用法也有不同之处。MapMap是一个散列表,它存储的内容是键值对(key-value)映射。HashMap 实现了 Map 接口,根据键的 HashCode 值存储数据,具有很快的访问速度。对于需要存储在对应HashMap中的类可以通过编译器自动生成一个hashcode函数来对其进行哈希。由于其中的元素实质上是对象,

2021-07-07 18:01:56 182

原创 面向正确性与健壮性的软件构造

何为正确性与健壮性?健壮性:系统在不正常输入或不正常外部环境下仍能够表现正常的程度面向健壮性的编程:处理未期望的行为和错误终止、即使终止执行,也要准确无歧义的向用户展示全面的错误信息,以便于debug。健壮性编程的准则:封闭实现细节,限定用户的恶意行为,考虑极端情况,没有不可能。正确性:程序按照spec加以执行的能力,是最重要的质量指标正确性倾向于直接报错,健壮性更倾向于容错。如何测量正确性与健壮性?外部观察角度:MTBF即平均失效间隔时间。计算了系统的两次失效之间的平均时间。

2021-07-07 14:36:54 161

原创 面向可维护性的构造技术

何为软件维护?软件维护:即修复错误、改善性能一些常用的指标可维护性指数:计算出一个位于0到100的值来表示代码的维护难度继承的层次数类之间的耦合度单元测试的覆盖度模块化编程要求:高内聚、低耦合、分离关注点、信息隐藏评价模块化的五个指标:可分解性、可组合性、可理解性、可持续性、出现异常后的保护模块化的五个规则:直接映射、尽可能少的接口、尽可能小的接口、显式接口、信息隐藏OO设计的准则SRP 单一责任原则 OCP 开放-封闭原则 LSP Liskov替

2021-07-06 21:49:09 147

原创 面向复用的软件构造技术

关于软件复用在这里我们可以将其划分为两种,一种是面向复用编程,即开发出可以复用的软件,还有一种是基于复用编程,即利用已有的可复用软件搭建应用系统。为什么要复用?降低成本和开发时间 经过充分测试,可靠、稳定 标准化,在不同应用中保持一致复用性能的检测复用的机会有多频繁?复用的场合有多少? 复用的代价有多大?不同级别的复用代码级别的复用 模块级别的复用:class/interface Library级别的复用:API/Package 系统级别的复用:Framework1.代

2021-07-06 20:39:21 154

原创 [ADT实践应用]Java中线段树求区间和的实现

这学期粗浅的学习了Java的语法,以及系统地学习了ADT和OOP的概念,心血来潮自己去实现了一个线段树的Java实现,在去理解课程的xiang'guan之余

2021-06-16 15:07:48 121

原创 [HNOI2012 永无乡]线段树+并查集

曾经的曾经,一名年轻的OIer以为这是一道可合并平衡树,然后暗骂了一句出题人。后来,他知道线段树居然是可以合并的。再后来,他又知道了线段树居然是可以动态开点的。年轻的少年回头一看发现:哇,原来这题是傻逼题。 没错,这个东西可以轻松线段树并查集搞掉,合并的时候由于是动态开的点,所以时间保障在log以内,之后权值线段树查询的时候分治搞一下就行了。 傻逼少年的代码#include <cstdio>u

2017-11-17 23:41:39 377

原创 [POJ 3321]Apple Tree dfs序+树状数组

给定一棵树,树上权值初始时为1。给出两种操作:1.将单点权值取反。2.查询子树的权值和。我们可以通过dfs将其映射到一个树状数组里,记录子树的起始位置以及终止位置。直接暴力改logn查询即可。#include#includeusing namespace std;const int Maxn=2e5+5;int n,m,Timer=0,tot=0;int c[Maxn

2017-10-12 20:36:42 317

原创 *这是一个裸的线段树*

没错,这是一个裸的线段树。

2017-10-11 18:06:50 246

原创 递推公式小结

递推公式小结

2017-10-11 09:03:25 1711

原创 AC自动机

给定多个模式串,一个目标串,查询模式串在目标串中出现的次数。 暴力,KMP都会超时,于是我们要用一个新的方法,在Trie树上做KMP。 具体的插入和Trie树一致,而多了一个fail数组,其含义和KMP中的失配函数一致。 我们可以通过bfs实现处理每一个点的fail,之后再进行匹配即可。 在树上把路径之和全部相加,所得答案即为出现次数。#include<cstdio>#include<cs

2017-10-10 17:12:53 261

原创 [HNOI 2002]营业额统计

题意给定n次操作,每次加入一个新数字,并向答案累加其前驱/后继和其差的较小值。思路平衡树裸题,而且我们只需要添加,不需要删除,支持查找前驱,后继。 所以说想法很暴,写起来难度也不大。代码#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <iostream>using name

2017-10-04 16:59:18 291

原创 bzoj1025 [SCOI2009]游戏

题意对于1到N这N个数字,都有唯一且不同的1到N的数字与之对应。最开始windy把数字按顺序1,2,3……,N写一排在纸上。然后再在这一排下面写上它们对应的数字。然后又在新的一排下面写上它们对应的数字。如此反复,直到序列再次变为1,2,3,……,N。 此时有若干排排列,我们可以知道其排数。 目标是求出对于N求出有多少种可能排数。思路这个题看一眼想到了置换,但是因为置换的循环并没有给定,所以不能用B

2017-09-28 10:06:40 223

原创 ZJOI2008 树的统计 树链剖分

屁话不多说,这是一道树剖裸题。 比模板题还水… 自己看代码吧#include<cstdio>#include<algorithm>#include<iostream>using namespace std;const int inf=2147483647;const int M=30500;struct edge{ int nex,to;}p[2*M];int n,x,y,

2017-09-25 15:30:39 216

原创 SublimeText使用技巧

感谢众多JLOIer将我带入Sublime的坑,最初只是认为这个IDE界面好看,但是实际上这个APP有着超出大家想象的众多功能(如果你只是在使用代码补全那可就太可惜了) 超赞的模板补全 我们首先能在工具栏中找到这个东西 之后新建了个snippet类文件 但是我们不能将其原样保留,需要对其进行修改,我们要把Python改成c++,并去掉屏蔽符,然后把第二行的屏蔽符去掉把hello改为自

2017-09-25 09:26:41 390 1

原创 USACO2010 驮运

此题为一道SPFA的水题,对于不同的起点我们可以求出以其为源点的最短路,之后枚举每一点三段距离之和即可。#include<cstdio>#include<queue>#include<cstring>using namespace std;typedef long long ll;const int M=4e4+5;const int inf=~0u>>1;ll b,e,p,n,m,t

2017-09-07 19:32:17 435

原创 OpenJudge1789 算24

打表大法好传送门 本人一名神(S)犇(B)好友写了一个搜索A掉,然而我一看这题不就是裸的打表题么。 对于4个数实际上只有5种括号摆放方案,我们枚举每一种方案之后在三个数中间枚举运算符号,这样我们就愉快AC,理论时间复杂度O(1)。 附上一个截图 实际效果也挺屎的,但是它无脑啊。 以下内容有兴趣可以搬运#include<iostream>#include<cmath>using name

2017-09-06 21:47:26 360

原创 SCOI2010 糖果 差分约束系统

题目大意给定一些不等式关系,求解满足约束条件的答案,要求解的总和最小思路这题是差分约束的一道好题,我们可以对每种不同的不等式进行一次变形从而使其满足差分约束建模的条件。 例如相等条件我们可以双向连接一个长度为0的不等式,联立后则是x=yx=y 如果有大于等于或小于等于关系,直接连边即可 如果有大于或小于关系,我们可以想到在正整数范围内x>yx>y 实际上和x−y>=1x-y>=1 是等价的。

2017-09-06 21:01:56 281

原创 可并堆-STL-pbds详解

对于堆的合并,我们首先想到的是朴素的nlogn出堆之后nlogn入堆。实质上,有一种更为高效的数据结构——可并堆。即为在保证堆顶极值的前提下实现logn的时间合并两个堆。与普通堆相比,左偏树的每个结点多了一个距离值NPL(Null Path Length)即该结点一直向右儿子走,到达空结点的距离。基于NPL,我们便可以发现,交换变得有序了:在保证了左儿子NPL大于右儿子NPL的时候,效率有所提升。

2017-08-19 14:25:35 4266

原创 NOI2014 魔法森林

这道题…正解是LCT(然而我不会),所以把我的动点SPFA发上来混一波23333,对于这个问题,应该是类似瓶颈生成树??对此,我们可以很好想出一个贪心+最短路策略,我们先把每一条边按照B的权值排序,然后枚举每一条边,跑一遍最短路,之后用新加入的边的A权值更新一下到终点的答案,然后….然后就完事了!一道考数据结构的题就这样水过23333 SPFA时间复杂度蜜汁不科学啊啊啊啊啊 代码如下#includ

2017-08-10 19:18:17 564

原创 洛谷P1198 JSOI2008最大数

线段树的一道好(裸)题啊,正好好久都没有写线段树了,练一下手 因为至多有M次操作所以无所谓多少个直接建个1~M的树好了 剩下乱搞一边AC#include<cstdio>#include<cstring>#include<iostream>using namespace std;const int MAXN=1e6;struct sgt_tree{ int l,r,maxn;

2017-07-30 20:56:05 406 1

原创 洛谷P3375 KMP字符串匹配

对于一个字符串,判断其是否是另一个字符串的子串,朴素的想法是逐字对照,然后判是否成立。这种算法最差要O(n^2)的时间复杂度,于是我们想到优化:KMP算法。 K(an)M(ao)P(ian)算法对于处理此类问题十分简洁,代码也不长,很容易实现。时间复杂度可以控制在O(n)以内 具体的思路如下 我们需要构造一个失配函数来存储匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目

2017-06-28 20:07:02 528

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除