- 博客(12)
- 资源 (1)
- 收藏
- 关注
原创 Java内部类
内部类是第五大成员 底层源码有大量的内部类 局部内部类 局部内部类是定义在外部类的局部位置,通常在方法,可以直接访问外部类的所有成员,包括私有的,不能添加访问修饰符,可以用final修饰 作用域仅在方法或代码块{}中 public class Main{ public static void main(String[] args){ Outer o = new Outer(); o.m();//100 } } class Outer{ private
2021-09-13 15:22:08 108
原创 软件工程复习第七章编写程序
编码的指导原则 控制结构 根据模块化来构建程序 在编写程序时,要牢记通用性(generality)是一种优点,考虑耦合性和内聚度,构件之间的依赖关系也必须是可见的,程序的子结构也应该彼此之间隐藏具体的计算细节, 算法 关注实现的性能或效率,所以应该在执行时间设计质量,标准和客户需求之间平衡考虑,尤其是,不要牺牲代码的清晰度和正确性来换取速度 数据结构 1、保持程序简单 2、用数据结构来决定程序结构 通用性指导原则 1、局部化输入和输出 2、包含伪代码 3、改正和重写,而不是打补丁 4、复用(
2021-07-01 09:25:41 81
原创 codeforces1236B题解
题目链接 题目大意: 将n种物品装入m个箱子里,限制: 每个物品在m个箱子中必出现一次,且每个箱子中的物品种类应互不相同。 思路: 对于每一个物品而言,它不可以不放,则可取m的子集来作为放的方案数,从而答案为(2m−1)n(2^m - 1)^n(2m−1)n种 代码: #include<bits/stdc++.h> using namespace std; int n,m; const int mod = 1e9 + 7; typedef long long ll; int qmi(int a,
2021-03-14 10:53:15 62
原创 Matlab学习
本次进行了绘图动画的学习 X = -2*pi:0.1:2*pi; Y = sin(X); h = plot(X,Y); while true X = X + 0.1; Y = sin(X); set(h,'XData',X,'YData',Y); drawnow; end set指设置变化后所对应的X,Y; drawnow指对当前X,Y的对应绘图 本图所描绘的是sinx的不断移动 theta = -10 * pi:0.1:10 * pi; X = cos(theta);
2021-03-11 00:36:20 93
原创 洛谷P5149 会议座位
P5149 会议座位 字符串哈希 + 归并排序 代码 #include<bits/stdc++.h> using namespace std; const int N = 1e5 + 10; string a[N]; int tr[N]; int n; int lowbit(int x){ return x & -x; } void add(int a,int b){ for(int i=a;i<=n;i+=lowbit(i)) tr[i] += b; } int query
2021-02-18 21:43:28 55
原创 splay学习笔记
记录splay的区间操作之区间加法 #include<iostream> #include<algorithm> #include<cstring> #include<cstdio> using namespace std; typedef long long ll; const int N = 1e5+10,INF = 1e9; int w[N]; struct node{ int s[2],p,v; int size; ll add
2021-01-14 22:07:47 70
原创 权值线段树学习笔记
权值线段树所存的值并非是下标,而是数组中数的值,可以很方便的解决诸如求区间第k大数的问题 记录一下 #include<bits/stdc++.h> using namespace std; const int N = 1e5+10; int w[N],a[N]; int n; struct node{ int l,r,sum; }tr[N*8]; void build(int root,int l,int r){ tr[root]={l,r,0}; if(l == r)
2021-01-02 16:38:31 48
原创 插头dp
难度很大,推荐 直接写暴力+剪枝 插头dp是由《基于连通性状态压缩的动态规划问题》而产生的 eg 模板题 对于每个格子而言只有C24=6C_2^4 =6C24=6种情况,而只会考虑每条小边上的情况,记录是否有边出来,其次应该维护连通性,那几个出来的边属于一个连通块 记录连通块的方法1、最小表示法,则此图的情况为 2、括号表示法(没有最小表示法通用) 由于本题是一个回路,则如有往上的边则一定存在与之配对且向下的边 性质1:两两配对 性质2:路径间不可能交叉 由这两个性质可以视为一个括号序列,则一个三进
2020-12-04 20:10:40 71
原创 KMP的一些笔记
KMP的一些笔记 主要记录一些kmp的简单应用 1、 2、 思路:n-ne[n] 3、 思路:与上题相同 4、 思路:kmp找出所有ne[j]=B的位置,从左−>右贪心能选就选kmp找出所有ne[j]=B的位置,从左->右贪心能选就选kmp找出所有ne[j]=B的位置,从左−>右贪心能选就选 5、 思路:最长周期即最小border,在树上dfs一遍,可通过路径压缩优化 6、 思路: ...
2020-11-22 21:45:23 63
原创 CDQ分治笔记(持续更新)
CDQ分治 即对于每个i,有多少个j使得aj<=aia_j<=a_iaj<=ai,bj<=bib_j<=b_ibj<=bi,cj<=cic_j<=c_icj<=ci 一维: 排序即可 二维: ①:树状数组解决即可 值域统计后插入元素即可 ②:分治 加双关键字排序(便于处理aj<=ai,bj<=bia_j<=a_i,b_j<=b_iaj<=ai,bj<=bi)的情况 egegeg 逆序对: ①:
2020-11-20 20:54:23 122
原创 后缀数组学习笔记(算法进阶课)
后缀数组学习笔记(倍增) 基础定义 子串:就是字符串的一部分,必须连续。 后缀:是一种子串,它的结尾必须为字符串的最后。 大小比较:就是字典序比较,从头开始比,不相同的话字典序大的那个大,假如相同就向后移动。假如移到其中一个串的结尾还相同的话,长的那个大。 后缀数组:把所有的后缀编号,排序后把编号存在这个数组里。 名次数组:存的是每个后缀的名次 在此需要用到基数排序 ...
2020-11-17 20:03:15 118
kuangbin的ACM模板.pdf
2020-11-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人