- 博客(29)
- 资源 (3)
- 收藏
- 关注
原创 操作系统 1 - 3章
操作系统引论1.1 操作系统的基本内容1.1.1 操作系统的目标和作用操作系统的定义:操作系统是一组控制和管理计算机硬件和软件资源,合理地对各类作业进行调度,以及方便用户使用计算机的程序集合。操作系统的目标:方便性:使计算机系统更容易管理。(对用户)有效性:提高计算机系统资源利用率、系统吞吐量。(对计算机系统)可扩充性:方便地添加新的功能和模块,并能修改老的功能模块。(对操作系统本身)开放性:遵循世界标准规范,使其与其他系统之间彼此兼容、方便地实现互联。(对其他操作系统)操作系统的作用:
2021-11-02 18:50:19
220
原创 博弈(简单总结)
NIM游戏NIM游戏是一种ICG游戏。若一个游戏满足:有两名玩家交替行动在游戏进程的任意时刻,可以执行的合法行动与轮到哪名玩家无关不能行动的玩家判负则该游戏是ICG游戏(公平组合游戏)ICG游戏是一种有向图游戏。每一个局面为一个节点,合法行动为有向边。SG函数在有向图游戏中,一个节点的sg值等于:SG(x)=mex(SG(y1),SG(y2),⋯ ,SG(yn))SG(x) = mex(SG(y_1),SG(y_2),\cdots,SG(y_n))SG(x)=mex(SG(y1),
2021-06-26 15:07:27
149
原创 Codeforces Round #726 (Div. 2)
A - Arithmetic Array签到#include <bits/stdc++.h>using namespace std;int len,n,t,sum;int main(){ scanf("%d",&t); while(t--){ scanf("%d",&len); sum = 0; for(int i=0,tmp;i<len;i++){ scanf("%d",
2021-06-23 19:05:18
140
原创 离散数学(二)
二分图二分图判定无奇长度回路完备匹配判定Hall定理(相异性条件)∣V1∣<∣V2∣|V_1| \lt|V_2|∣V1∣<∣V2∣,∣V1∣|V_1|∣V1∣中任取k个点至少与与∣V2∣|V_2|∣V2∣中k个点相邻。t条件∣V1∣<∣V2∣|V_1|\lt|V_2|∣V1∣<∣V2∣,存在t使得∣V1∣|V_1|∣V1∣至少关联t个点,∣V2∣|V_2|∣V2∣至多关联t个点。欧拉图无向欧拉图判定欧拉通路:图连通,恰好存在2个奇度定点。欧拉回
2021-06-05 21:38:30
1491
1
原创 ICPC上海 M-Gitignore 字典树 贪心
思路:将可删除的串标记上1,不可删除的串标记上0。通过dfs得到答案,遇到1直接++,遇到0则访问子树。#include <bits/stdc++.h>using namespace std;int n,m,tot,method[2050];map<string,int> trie[2050];char str[2050];queue<string> q;void init(){ for(int i=0;i<=tot;i++){
2021-06-03 09:30:09
162
原创 HDU2457 AC自动机 dp
思路:多模式串匹配问题首先想到AC自动机,需要记录单词的结尾。因为是最少改动数量所以想到dp,状态方程是dp[i][j],第一维存当前匹配到什么位置,第二维存当前ac自动机的状态。dp[i][j]=min(dp[i][j],dp[i−1][last]+是否改动)dp[i][j]=\min{(dp[i][j], dp[i-1][last]+是否改动)}dp[i][j]=min(dp[i][j],dp[i−1][last]+是否改动)#include <bits/stdc++.h>us
2021-06-03 08:32:56
169
原创 AC自动机模板
建立trie建立fail指针差分求个数#include <bits/stdc++.h>using namespace std;const int maxn = 2e6+500;int n;int trie[maxn][30],tot,fail[maxn];int nxt[maxn],id[maxn],d[maxn],ans[maxn],q[maxn];char str[maxn];void insert(char* str, int idx){ int len =.
2021-06-02 09:31:20
79
原创 POJ2513 字典树 并查集 欧拉图
通过trie获得该颜色的id用并查集连接两个点,并且记录两个点的度欧拉图:奇度定点为0或2个,并且连通#include <cstdio>#include <algorithm>#include <cstring>using namespace std;const int maxm=1e7+500;int tot,col,trie[maxm][30],mark[maxm];int deg[maxm],fa[maxm],res;char c1[30.
2021-05-31 22:55:55
113
1
原创 POJ2001 字典树模板题
按题意模拟#include<stdio.h>#include<iostream>#include<string.h>#include<sstream>using namespace std;const int maxn = 1e7+500;char poul[1025][25], ans[25];int tot,cnt,trie[maxn][30],sum[maxn];inline void insert(char* str){ in
2021-05-31 19:34:19
113
原创 HDU2072 IO 字典树
先将一行读入,然后再分割。判断节点:看尾结点是否被标记。#include<stdio.h>#include<iostream>#include<string.h>#include<sstream>using namespace std;const int maxn =2e6+5;int tree[maxn][30];int tot,res;string str1,str2;bool mark[maxn];void insert(){
2021-05-31 19:02:34
115
原创 计算机组成原理知识点清单
文章目录前言存储系统存储器概述SRAMDRAMROM主存的拓展(字拓展、位拓展)双端口RAM与多模块存储器Cache虚拟存储器外围设备外围设备概述磁盘磁盘的技术指标显示设备IO系统IO接口接口的功能:编址方式:程序查询(软件+硬件)程序中断(软件+硬件)单级中断多级中断DMA方式(硬件)总线系统总线概述总线仲裁总线操作与定时前言上学期,我们学的是运算器(数据运算)+控制器(指令系统)+CPU结构(中央处理器)。而计算机是由CPU+内存+外设组成的。所以我们这学期学习了内存(存储系统)+外设(外围设备)+
2021-05-29 20:57:16
317
原创 数据结构(二)
排序排序名称平均时间复杂度最好时间复杂度最坏时间复杂度空间复杂度稳定性元素比较次数原始序列插入排序O(n2)O(n^2)O(n2)O(n)O(n)O(n)O(n2)O(n^2)O(n2)O(1)O(1)O(1)稳定(n−1)(n-1)(n−1)-((n−1)n2)(\frac{(n-1)n}{2})(2(n−1)n)有关希尔排序O(n1.3)O(n^{1.3})O(n1.3)O(n)O(n)O(n)O(n2)O(n^2)O(n2)O(1)O(1
2021-05-27 22:40:00
140
原创 数据结构 排序 上机代码 上海大学
文章目录头文件test.cpp头文件#ifndef BUBBLE_H#define BUBBLE_H#include <bits/stdc++.h>using namespace std;struct node{ int data; node *nx,*pre; node():data(0),nx(nullptr),pre(nullptr){} node(int ndata,node* nnx = nullptr,node* npre = null
2021-05-19 21:27:25
134
原创 2020ICPC银川总结
银川是真的水,但是我们是真的菜。这次只做出来了3道题。两道还是牛逼队友写出来的。我就讲讲我写的J题吧。我们是在1小时的时候开的J题。当时看过这道题的人数比较多,所以开的这道题。我第一发写出来的代码,写完之后直接就过了编译、样例和队友手造的数据。但是交上去的时候,很快就WA了。我们队当时看我写的代码,感觉也没有什么问题。因为是模拟题,所以我很快又重写了一发J题。从一开始的DFS改成了两次循环就做完的操作。代码上思路更加清晰,同样是运行就过了所有数据点位,但是还是WA了。最后和队友调试了半天,也不知道哪里错了
2021-05-16 21:46:38
1333
6
原创 Gym 102788D 38 parrots
思路:左右可以开动态节点的线段树#include<bits/stdc++.h>using namespace std;#define ls rt<<1#define rs rt<<1|1const int maxn = 6e5+500;int l,r,op,tree[maxn<<2];inline void pushup(int rt){ if(tree[ls]==-1&&tree[rs]==-1) tree[rt]
2021-05-14 19:39:07
301
原创 POJ 1151扫描线 线段树维护
思路:将矩形拆成上界和下界,每次循环执行一条扫描线(矩形的一条边,不是同一y坐标的边的总和)通过线段树维护当前矩形的长度。#include <iostream>#include <algorithm>using namespace std;#define ls rt<<1#define rs rt<<1|1const int maxn = 1e5+500;struct seg{ double l,r,h; int f;
2021-05-13 19:28:41
165
原创 HDU 2874 ST表求树上距离 并查集
思路:先通过并查集判断两个点是否在同一棵树上如果在同一棵树上,通过ST表查询树上两点距离AC代码:#include <bits/stdc++.h>using namespace std;const int maxn = 1e4+500;int n,m,q,tot,beg[maxn],par[maxn],fa[maxn],dep[maxn],dis[maxn];struct node{int to,nex,val;}edge[maxn*2];int st[maxn][21
2021-05-13 09:56:53
163
原创 HDU 2586 ST表求LCA 树上距离
ST表递推公式:st[i][j]=st[st[i][j−1]][j−1]st[i][j] = st[st[i][j-1]][j-1]st[i][j]=st[st[i][j−1]][j−1]表示iii向上跳深度为2j2^j2j为iii向上跳深度为2j−12^{j-1}2j−1再向上跳深度为2j−12^{j-1}2j−1树上距离公式:dis[a,b]=dis[a]+dis[b]−2dis[lca(a,b)]dis[a,b] = dis[a]+dis[b]-2dis[lca(a,b)]dis[a,b]=d
2021-05-12 20:58:57
143
原创 POJ 2559 Largest Rectangle in a Histogram 单调栈
单调栈内维护的信息是当前高度和以当前高度能够绘制矩形的长度。思路:基于贪心的原理,我们希望以当前的高度能够画出更大的矩形。我们只要维护单调栈,即可获得当前高度向右边延展的最大长度。同时,向左边延展的长度保存在栈内,所以每次出栈的时候,我们都能更新答案。代码:#include <iostream>using namespace std;#define ll long longconst int maxn = 1e5+500;ll height,n,sz,res,length;pa
2021-05-12 14:52:29
95
原创 洛谷P1020 导弹拦截 树状数组区间求最值
题目描述某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。输入导弹依次飞来的高度(雷达给出的高度数据是≤50000的正整数),计算这套系统最多能拦截多少导弹,如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。思路:求最多能拦截多少导弹是求最长不升子序列求配备多少套这种系统是求最长
2021-05-12 10:41:53
162
原创 数据结构 查找 上机实验代码 上海大学
验收过的代码,放心食用。实现方法不是最优,因为懒得改。大佬轻喷。文章目录BSTAVL主函数BST#ifndef BST_H#define BST_H#include <bits/stdc++.h>using namespace std;class BSTnode{public: int data; BSTnode *ls,*rs; BSTnode(){} BSTnode(int ndata,BSTnode *l=nullptr,BSTnode
2021-05-10 16:27:30
364
原创 ICPC昆明 M-Stone Game 可持久化权值线段树维护区间和
题目大意:给定[l,r]区间,区间内的数字任意组合。求最小不能被表示出来的数字。思路:如果没有元素1,则答案就是1我们设当前能表示出来的最大整数是x,那么在小于等于x的元素中,任意选出一个元素b。x+b中的元素都可以表示出来。所以我们只需要从1开始,枚举当前答案的前缀和。如果前缀和小于当前答案。那么该答案就是正确答案。举例:1 20 12 2 5 2,查询[1,6]能表出的最小整数。ans = 1 , sum = 1ans = 2 , sum = 5 , 观察1,2,2序列,可以
2021-05-09 21:10:35
152
原创 HDU 2665 可持久化权值线段树区间求第k大
主席树区间求第k大的思路类似权值线段树树求[1,n]第k大。代码:#include <bits/stdc++.h>using namespace std;const int maxn = 1e5+100;int n,m,tot,rt[maxn];int a[maxn],b[maxn],len; //离散化struct node{int ls,rs,sum;}t[maxn<<5];//主席树int getid(int val){return lower_bound
2021-05-09 09:34:43
165
原创 HDU 4348主席树区间修改
如何区间修改:首先,我们不能进行线段树上的pushdown操作。因为这样做会让公共节点的值被修改。导致其他版本的线段树在查询时出现错误。对于每一次区间修改操作,我们让落在L<l&&r<=R区间上的新开的节点的儿子为历史版本的节点,我们可以把这样的节点理解为分界点。因为修改区间将这段区间覆盖之后,它的孩子节点必然需要新开节点。对新开的节点,除了孩子为旧节点的新开节点不需要pushup之外,其他的节点都需要pushup。既然不能pushdown,那我们就在query函数中多
2021-05-08 20:44:38
1042
原创 HDU 4417 可持久化权值线段树区间求Rank
题目大意:给定T组数据,n个数,m次询问。每次询问[L,R]区间内,比k小于等于k的数的个数。解题思路:权值线段树可以在[1,n]区间内做Rank操作,但是题目要求在[L,R]内做Rank操作。我们可以想到主席树这种数据结构。解决这道题需要三个函数。build函数在一开始的时候要建立一棵空的主席树,即所有叶子节点信息都是0的主席树。叶子节点的值一定要有,但是它的ls,rs可以不给出。因为我们查询到叶子节点的时候,就会进入if(l==r)的条件判断中。update函数在本题中,我们每次只需要单
2021-05-08 19:32:35
149
原创 计算机组成原理 第八章 IO系统
外围设备的速度分即与信息交换方式外围设备速度分级速度极慢或简单的外围设备机械开关,显示二极管等。CPU认为输入的数据一直有效速度或中速的外围设备CPU与这类设备通常采用异步定时方式,这种数据交换也成为应答式数据交换。CPU询问设备数据是否准备就绪,当准备就绪的时候,将数据取走。不然CPU进入循环程序等待,并每次循环中询问外设的状态。高速的外围设备采用同步定时方式,数据成组传输。这种设备的速度与CPU相同。更快的同步传送要通过DMA方式。信息交换方式分为四类:1. 程序查询方式 2. 程
2021-05-06 17:20:09
1059
原创 Arranging The Sheep
题目大意:移动羊使得羊在一起,输出最少的移动次数思路:贪心选定中间的羊,让两边的羊向中间靠拢。代码实现:向量v中存储的是从最左边到该羊之间存在多少空格。所以相减得到的是两只羊之间存在的空格数量。两只羊u,v之间的某只羊移动并不会改变两只羊u,v之间的空格。#include <bits/stdc++.h>using namespace std;#define ll long longint main(){ int _; scanf("%d",&_);
2021-05-06 09:48:28
290
原创 最小生成树与最小瓶颈路
最小生成树MSTMSTMST是图GGG中最小代价连通子图。MSTMSTMST具有以下的性质:最小生成树不唯一,但是它们的边权和相同最小生成树的边数等于顶点数减一(树的性质)构造最小生成树的算法:有两种经典的算法primprimprim算法和kruskalkruskalkruskal算法。它们都基于贪心策略实现。primprimprim是对点进行贪心,所以适用于稠密图。而kruskalkruskalkruskal是对边进行贪心,适用于稀疏图。以下是两种算法的代码实现:primprimpri
2021-05-05 20:15:01
420
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人