自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(246)
  • 资源 (7)
  • 收藏
  • 关注

原创 strassen矩阵乘

【代码】strassen矩阵乘。

2023-06-27 11:16:38 721 1

原创 Windows动态链接库(VS)

测试代码如下,需将动态库.dll文件与程序放于同一目录下,以函数指针的形式使用动态链接库中的函数。在VS中新建动态链接库项目,在dllmain.cpp文件中实现函数。

2022-12-08 16:00:57 275 1

原创 Linux下创建动态链接库与静态链接库

通过对比可以发现,通过动态链接得到的程序在运行时的进程地址空间远比通过静态链接的程序运行时的地址空间复杂,可以看到静态链接时其进程的地址空间中只有程序本身,而动态链接时进程的地址空间除了其本身还有所链接的库。更具体的讲,调用动态链接库中的函数时系统首先会检查当前正在运行的程序,看内存中是否有此函数的拷贝,有的话直接使用,没有时才链接载入。需要在/etc/ld.so.conf.d/目录下新建任何以.conf为后缀的文件,该文件内容为要动态链接的库文件所在的目录。可以看到对于手动链接的动态库,显示未找到。

2022-12-08 15:58:09 980

原创 Linux下mutex互斥锁机制的一个简单测试

简单测试linux中互斥锁的加锁机制。

2022-11-04 11:17:15 267

原创 【模板】自适应辛普森积分

模板:自适应辛普森积分

2022-06-29 11:05:57 158

原创 【模板】最小割树(Gomory-Hu Tree)

ProblemSolution做模板使用,不证明(不会证 。原图中两点间的最小割为最小割树上两点间最小割,可通过树上倍增询问。最小割树的建立:任意两点间的最小割将当前点集分成两部分,以此为基础分治,每次从当前点集中任取两点求最小割,将最小割作为Gomory-Hu Tree上两点间的边权,并根据最小割将当前点集分成两部分,s那边的与t那边的,边界就是当前点集中只有一个点。相当于跑了n-1次dinic。Code#include<iostream>#include<cstd

2022-05-16 23:05:49 244

原创 logisim实验七:MIPS RAM设计

实验目的学生理解主存地址基本概念,理解存储位扩展基本思想,并能利用相关原理构建能同时支持字节、半字、字访问的存储子系统。实验内容Logisim 中 RAM 组件只能提供固定的地址位宽,数据输出也只能提供固定的数据位宽,访问时无法同时支持字节/半字/字三种访问模式,实验要求利用 4 个4 K*8 位的 RAM 组件进行扩展,设计完成既能按照 8 位、也能按 16 位、也能按照 32 位进行读写访问的 32 位存储器。方案设计整体设计思路:控制电路可以分成三部分:对输入的待存储数据的控制与划分,

2022-05-10 19:28:56 13635 3

原创 P3308 [SDOI2014]LIS(最小割可行边)

Problem给定序列A,序列中的每一项Ai有删除代价Bi和附加属性Ci。请删除若干项,使得A的最长上升子序列长度减少至少1,且付出的代价之和最小,并输出方案。 如果有多种方案,请输出将删去项的附加属性排序之后,字典序最小的一种。Solution考虑建立流量网络:对序列中的每一项进行拆点连边,i to i+n容量为bi,dp(i)表示以序列第i项结尾的最长上升子序列长度,沿最长上升子序列连边,若j<i且a[i]>a[j]且dp(i)=dp(j)+1,j+n to i连容量为inf的边,源

2022-05-03 22:51:49 327

原创 logisim实验六:MIPS运算器设计

实验目的学生理解算术逻辑运算单元(ALU)的基本构成,掌握 Logisim 中各种运算组件的使用方法,熟悉多路选择器的使用,能利用前述实验完成的 32 位加法器、 Logisim 中的运算组件构造指定规格的 ALU 单元。设计要求利用前面实验封装好的 32 位加法器以及 logisim 平台中现有运算部件构建一个 32 位算术逻辑运算单元(禁用 Logisim 系统自带的加法器,减法器),可支持算术加、减、乘、除,逻辑与、或、非、异或运算、逻辑左移、逻辑右移、算术右移运算,支持常用程序状态标志(有符号

2022-04-25 09:47:40 15147 7

原创 【模板】线段树优化建图

Problem三种方案:v to u,v to [l,r],[l,r] to v。求单源最短路。Solution由于存在结点与区间内所有结点间的连边,可以考虑用线段树优化建图。具体来说维护两个线段树,线段树1表示有向边的终止结点,同时父亲连向儿子权为0;线段树2表示有向边的起始结点,同时儿子连向父亲权为0。两线段树的叶子结点间连无向边权为0(线段树1的叶子结点连向线段树2的叶子结点也可),表示同一结点自己和自己是连通的;对于任意有向边,线段树2连向线段树1,如图:Code#inclu

2022-04-20 21:10:04 953

原创 logisim实验五:汉字字库存储芯片扩展实验

实验目的理解存储系统进行位扩展、字扩展的基本原理,能利用相关原理解决实验中汉字字库的存储扩展问题,并能够使用正确的字库数据填充。设计要求现有如下 ROM 组件,4 片 4K32 位 ROM ,7 片 16K32 位 ROM,请在 Logisim 平台构建 GB2312 汉字编码的 1616 点阵汉字字库,电路输入为汉字区号和位号,电路输出为 8×32 位( 1616=256 位点阵信息),待完成的字库电路输入输出引脚见后图,具体参见工程文件中的 storage.circ 文件,图中左侧是输入引脚,分别

2022-04-17 12:27:04 20464 4

原创 logisim实验四:寄存器文件设计

实验目的了解寄 MIPS 寄存器文件基本概念,进一步熟悉多路选择器、译码器、解复用器等 Logisim 组件的使用,并利用相关组件构建 MIPS 寄存器文件。设计要求利用 logisim 平台中构建一个简化的 MIPS 寄存器文件,内部包含 4 个 32 位寄存器,完成存储扩展设计后可以在寄存器文件自动测试电路中进行测试。具体引脚与功能描述如下表:方案设计简化的 MIPS 寄存器文件功能:将输入数据存入选定的寄存器,输出选定寄存器的值。设计思路:本次实验电路在逻辑上较为简单,利用解复用器实现

2022-04-11 21:02:23 16075 8

原创 P4767 [IOI2000]邮局(四边形不等式)

Problem高速公路旁边有一些村庄。高速公路表示为整数轴,每个村庄的位置用单个整数坐标标识。没有两个在同样地方的村庄。两个位置之间的距离是其整数坐标差的绝对值。邮局将建在一些,但不一定是所有的村庄中。为了建立邮局,应选择他们建造的位置,使每个村庄与其最近的邮局之间的距离总和最小。你要编写一个程序,已知村庄的位置和邮局的数量,计算每个村庄和最近的邮局之间所有距离的最小可能的总和。村庄总数<=3000,邮局总数<=300。Solution预处理出w(i,j)表示i~j个村庄放一个邮局的最

2022-04-06 15:45:23 743

原创 logisim实验三:原码一位乘法器设计实验

实验目的掌握原码一位乘法运算的基本原理,熟练掌握 Logisim 寄存器电路的使用,能在 Logisim 平台中设计实现一个 8*8 位的无符号数乘法器。设计要求在 alu.circ 文件中原码一位乘法器子电路中增加控制电路和数据通路使得该电路能自动完成 8 位无符号数的一位乘法运算,设置引脚初始值,然后驱动时钟自动仿真,电路可自动完成运算,运算结束结果传输到输出引脚,运算结束时电路应该自动停止。方案设计无符号原码一位乘的计算: 维护一个部分积,初始为0,每次取乘数b的最低位,如果最低位为1,部分

2022-04-05 17:13:15 20823 12

原创 logisim实验二:8位可控加法器

设计要求利用logisim平台中现有运算部件构建一个8位可控加减法电路,支持八位加减法运算,支持以下状态标志:有符号溢出信号OF,进位输出 Cout。方案设计logisim平台已经给了全加器芯片,第一个要解决的问题就是如何利用全加器进行减法运算。两个数进行减法运算可以看被减数加负的减数,因此要将y转换成(-y)补之后再进行加法运算:符号位转换成1,数值位按位取反再加1。由于减法运算时sub为1,因此可以将y的各位与sub异或,同时sub作为最低为全加器的低位进位输入,以此实现上述功能。第二个要解决的

2022-03-29 22:30:42 39257 9

原创 跳舞机(Tango Tango Insurrection, UVa 10618)

Problem题意如紫书,关于cost的计算感觉有些紫书上给的翻译不太好理解:本次无动作cost为0,本次动作和上次动作不一条腿cost为1,本次和上次动作同一条腿,没有涉及移动(只是踩了一下)cost为3,本次和上次动作同一条腿,本次为相邻移动和相对移动时cost分别为5和7。Solution条件较多,d(i,a,b,s)表示踩了前i个,当前左右脚在a,b,上次的移动状态为s时以后还会产生的最小代价。倒推,最终答案为d(0,1,2,0)。代码借鉴了网上高质量的代码,详见注释。Code#in

2022-03-28 00:09:02 428

原创 严格次小生成树

ProblemSolution做法与求非严格次小生成树类似(枚举非mst上的边来替换mst上的边)。需要同时维护最大边和严格次大边的倍增数组,不存在严格次大边的情况下需设为-inf,保证此次计算不会作为最终答案。关于严格次大边倍增数组的递推:取左右区间严格次大边的max,同时若左右区间的最大边不相等,两区间最大边的最小值。关于求树上两点间的严格次大边:假设待加入边权值为w,每次更新时若区间最大边<w,则用区间最大边更新,否则用区间的严格次大边更新。Code#include<i

2022-01-29 02:12:59 415

原创 非严格次小生成树

允许与mst权值和相等。#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<vector>using namespace std;const int maxn=150,maxm=100005;const int inf = 1e9;int t,n,m,cnt,mst,logg[maxn],mx[maxn][15],pre[.

2022-01-29 00:55:48 393

原创 朱刘算法板子

O(n3)图不断在构造,判自环不能省。无定根时设虚根,虚根向所有点连0。#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>using namespace std;const int maxn =70,maxm = 200005;const int inf = 1e9;int n,m,t,C,in[maxn],cnt,pre[maxn],id[max.

2022-01-18 01:16:16 97

原创 UVA10765 Doves and bombs(双连通分量)

Problem每个点的权为删除这个点后图中连通块的个数,求权值前m大的点。Solution求点-双连通分量,一个点的权值为总连通块数+该点出现在不同点连通分量的次数-1。该点出现在不同点连通分量的次数就是把该点删掉后原来所属的那个连通块会分裂成的连通块的个数。Code#include<iostream>#include<cstdio>#include<vector>#include<algorithm>#include<cst

2022-01-12 20:06:11 112

原创 UVA1201 Taxi Cab Scheme(二分图最小路径覆盖)

ProblemSolution可以转化成dag上的最小路径覆盖,dag的最小路径覆盖可以放在二分图上求。对于原图中的a->b,在二分图中连a->b’,dag上的最小覆盖=n-最大匹配(即左部中未匹配点数量,等价于所有覆盖的起点数量)。Code#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>using namespace std;co

2022-01-09 14:38:34 253

原创 UVA12083 Guardian of Decency(二分图最大独立集)

ProblemSolution原题要求选出的点中任意两点需至少满足一个条件,可以在四个条件都不满足的点间连边,所得图为二分图(一边男一边女),等价于求二分图的最大独立集。二分图最大独立集与最小覆盖集二分图最独立集大小=结点数-最大匹配(这里的最大匹配可以看成选择有边相连的两个点时要去掉其中一个,最大匹配数即为最小要去掉的点数,同时也是最小覆盖)。覆盖集:对于每条边,至少有一个点要被选中。独立集:对于每条边,至少有一个点不被选中。因此两者互补。最小覆盖集大小=最大匹配的大小。Code#

2022-01-09 13:59:36 284

原创 7-1 一元多项式求导

#include<iostream>#include<cstdio>using namespace std;int m,n;int main(){ bool op=0; while(cin>>m>>n) { m=m*n; n--; if(n==-1) continue; if(op) cout<<' '; cout<<m<<' '<<n; op=1;

2022-01-06 20:36:40 364

原创 7-2 银行业务队列简单模拟

#include<iostream>#include<cstdio>using namespace std;int quea[1005],queb[1006],taila,tailb,heada,headb,n;int main(){ cin>>n; for(int i=1,num;i<=n;i++) { cin>>num; if(num%2) quea[++taila]=num; else queb[++tailb]

2022-01-06 20:36:09 800

原创 7-3 银行排队问题之单窗口“夹塞”版

#include<iostream>#include<cstdio>#include<algorithm>#include<map>#include<vector>#include<cstring>using namespace std;int n,m,l[105],cir[105][105],cnt;int ans,cost[10005],pos[10005];struct Person{ int num,t,p;

2022-01-06 20:35:41 419

原创 7-4 银行排队问题之单队列多窗口服务

#include<iostream>#include<cstdio>using namespace std;int n,t[1005],p[1005],cost[1005],k,ans0,ans[1005],mx1,mx2;struct Windows{ int num,ed;}w[1005];int main(){ cin>>n; for(int i=1;i<=n;i++) { cin>>t[i]>>p[i];

2022-01-06 20:35:07 499

原创 7-5 银行排队问题之单队列多窗口加VIP服务

#include<iostream>#include<cstdio>using namespace std;int n,t[1005],p[1005],cost[1005],k,ans0,ans[1005],mx1,mx2,vip,next1[1005],nw,w[1005];bool isvip[1005],solve[1005];int main(){ cin>>n; for(int i=1;i<=n;i++) { cin>>t

2022-01-06 20:34:30 645

原创 7-6 修理牧场

#include<iostream>#include<cstdio>#include<algorithm>using namespace std;long long n,que[10005],fr=-1,la,ans,tong[1005];int wd[10005];void read(int &x){ int f=1;x=0;char s=getchar(); while(s<'0'||s>'9'){if(s=='-')f=-1;s

2022-01-06 20:34:00 139

原创 7-7 目录树

#include<iostream>#include<cstdio>#include<cstring>#include<vector>#include<map>#include<algorithm>using namespace std;int cnt,N;struct Node{ int num; string s; vector<int>m; vector<int>n; map&lt

2022-01-06 20:33:31 225

原创 7-8 旅游规划

#include<iostream>#include<queue>using namespace std;int s,t,n,m,last[505],d[505],cnt,d1[505];struct edge{ int v,w,c,next;}e[250005];void add(int u,int v,int w,int c){ e[++cnt].v=v; e[cnt].w=w; e[cnt].c=c; e[cnt].next=last[u]; last

2022-01-06 20:32:58 226

原创 7-9 公路村村通

#include<iostream>#include<queue>#include<cstring>#include<algorithm>using namespace std;int cnt,last[1005];int a[1005],k,ans,n,m;struct edge{ int u,v,w; }e[100005];void add(int u,int v,int w){ e[++cnt].v=v; e[cnt].u=u;

2022-01-06 20:31:34 68

原创 7-10 社交网络图中结点的“重要性”计算

#include<iostream>#include<queue>#include<cstdio>using namespace std;int s,t,n,m,last[10005],d[10005],k,cnt;struct edge{ int v,w,next;}e[200005];void add(int u,int v){ e[++cnt].v=v; e[cnt].w=1; e[cnt].next=last[u]; last[u]=cnt

2022-01-06 20:30:15 505

原创 7-11 畅通工程之局部最小花费问题

#include<iostream>#include<queue>#include<cstring>#include<algorithm>using namespace std;int cnt,last[1005];int a[1005],k,ans,n,m;struct edge{ int u,v,w; }e[100005];void add(int u,int v,int w){ e[++cnt].v=v; e[cnt].u=u;

2022-01-02 18:02:47 105

原创 7-12 航空公司VIP客户查询

#include<iostream>#include<cstdio>#include<unordered_map>#include<algorithm>using namespace std;int main(){ unordered_map<string,int>ac; string s; int n,k,m; cin>>n>>k; for(int i=1,d;i<=n;i++) { ci

2022-01-02 18:02:16 227

原创 7-13 字符串关键字的散列映射

#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>using namespace std;bool us[10005];string s[505];int ac[505];int re(int x){ for(int i=1;i<x;i++) if(s[i]==s[x]) return i; return 0;}int main(){

2022-01-02 18:01:42 330

原创 7-14 新浪微博热门话题

#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<map>using namespace std;int n,ac,mx;string s1;bool isnum(char c){ if(c>='0'&&c<='9') return 1; return 0;}bool isaph(cha

2022-01-02 18:01:10 73

原创 7-15 寻找大富翁

#include<iostream>#include<cstdio>#include<algorithm>using namespace std;long long n,m,a,b[15];int main(){ cin>>n>>m; for(int i=1;i<=n;i++) { scanf("%lld",&a); if(a>b[1]) { b[1]=a; sort(b+1,b+1+m

2022-01-02 18:00:39 66

原创 7-16 奥运排行榜

#include<iostream>#include<cstdio>#include<algorithm>using namespace std;const double eps=1e-6;struct counts{ int a,b,num; double c,d;}a[250];int n,r1[250],r2[250],r3[250],r4[250],m;bool cmp1(const counts &x,const counts &am

2022-01-02 18:00:08 219

原创 7-17 PAT排名汇总

#include<iostream>#include<cstdio>#include<algorithm>using namespace std;int t,n,cnt;struct students{ long long p,rk1,rk2,sc; string num;}s[40005];bool cmp1(const students &a,const students &b){ if(a.p==b.p) return a.s

2022-01-02 17:59:38 195

原创 7-18 模拟EXCEL排序

#include<iostream>#include<cstdio>#include<algorithm>using namespace std;struct students{ long long sc; string num,name;}s[100005];bool cmp1(const students &a,const students &b){ return a.num<b.num;}bool cmp2(const

2022-01-02 17:59:07 219

计算机组测原理实验:MIPS运算器

计算机组测原理实验:MIPS运算器

2022-07-25

计算机网络期末复习整理

计算机网络期末复习整理

2022-03-24

neerc-2015-tests.zip

测试数据

2021-08-23

后缀数组——处理字符串的有力工具.pdf

IOI2009国家集训队论文,作者罗穗骞

2021-08-10

c语言实验,埃氏筛法与欧拉筛法

c语言实验,埃氏筛法与欧拉筛法

2021-06-09

Array.cpp(面向对象,二分查找,倍增,运算符重载)

Array.cpp(面向对象,二分查找,倍增,运算符重载)

2021-06-09

Array.pptx(运算符重载,二分查找和倍增)

Array.pptx(运算符重载,二分查找和倍增)

2021-06-09

空空如也

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

TA关注的人

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