基础算法
算法数据输入>1000000时使用scanf,否则使用cin。 12ios::sync_with_stdio(0);cin.tie(0); //cpp speed up 排序 排序算法 平均时间复杂度 冒泡排序 O(n2) 选择排序 O(n2) 插入排序 O(n2) 希尔排序 O(n1.5) 快速排序 O(N*logN) 归并排序 O(N*logN) 堆排序 O(N*logN) 基数排序 O(d(n+r)) 快速排序——分治 确定分界点 调整区间 递归处理左右两端 12345678910111213141516171819202122232425262728293031323334353637#include <iostream>using namespace std;const int N = 1e6 + 10;int n;int q[N];void quick_sort(int q[], int l, int r){ if(l >= r) return; //int...
Pinely Round 4 (Div. 1 + Div. 2)
A 题意:通过多次删除相邻的两个元素,最终剩下的一个元素的最大可能值。由于数组的长度是奇数,最终总会剩下一个元素。求剩余元素的最大值 可以发现一个数左右数的个数为偶数时,可以删除到只剩该元素,且左边为偶数,则右边为偶数,因此我们只需找出最大值的位置,判断其位置是否为奇数位。 是,则输出其 否,则置0,再次寻找最大数 12345678910111213141516171819202122232425262728293031323334353637383940414243#include <iostream>using namespace std;const int N = 105;int arr[N];void solve() { int num; cin >> num; int maxpos = 0; int maxnum = 0; for (int i = 0; i < num; i++) { cin >> arr[i]; if (arr[i] > maxnum)...
洛谷题单——数据结构0x2
P4715 【深基16.例1】淘汰赛 这题其实是二叉树左子树和右子树之间的比较,可以使用队列来不断求值,亦可以找出左右部分最大值,比较得出亚军。 题解 P4715 【深基16.例1】淘汰赛 - 洛谷专栏 (luogu.com.cn) 1234567891011121314151617181920212223242526272829303132333435363738394041424344#include <iostream>#include <queue>using namespace std;typedef long long LL;typedef pair<int, int> pii;queue<pii> que;void solve() { int n; cin >> n; n=1<<n; // n<<=1 要注意下这里,我这里写错了debug半天,原先写的是将1右移一位即2。 for (int i = 1; i <= n; i++) { ...
洛谷题单——数据结构0x1
P3156 询问学号 1234567891011121314151617181920212223242526#include <iostream>using u32 = unsigned;using i64 = long long;using u64 = unsigned long long;using namespace std;const int N = 1e7 + 10;int a[N];int main(){ int n, m; cin >> n >> m; for (int i = 1; i <= n; i++) { cin >> a[i]; } while (m--) { int x; cin >> x; cout << a[x] << endl; }} P3613...
ACjudge0x1
ACjudge0x1在打算法题的时候,我通常使用wsl2+vscode的组合(感觉默认cpp提示太烂了,vs过于臃肿),当我们完成一道题目时,通常要使用g++编译,然后用cv大法查看是否ac。可是,在debug时,重复的动作过于痛苦,且难以区分输入输出。因此可以使用linux命令来解决这一问题。 1g++ {path} && ./a.out < input.txt > output.txt && diff output.txt answer.txt -y 我们当然可以写入python脚本(其实shell脚本更简洁),并加上初始化功能(- i) 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778#!/usr/bin/env python3import osimport...
数据结构
[toc] acwing826. 单链表 头插法: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970#include <iostream>#include <cstring>using namespace std;const int N = 100005;int head, e[N], ne[N], idx; //头节点, 值,下一节点,idx索引节点的编号void init(){ head = -1; idx = 0;}void add_to_head(int x ){ e[idx] = x; ne[idx] = head; head = idx; idx ++;}void remove(int pos){ ne[pos] =...
Codeforces Round 961 (Div. 2)
A 目标是将所有 k 个棋子放置在棋盘上,使得占据的对角线的数量最少。 易得最大对角线一条,长度为n,之后的对角线长度一次减一,且相同长度的对角线有两条。 12345678910111213141516171819202122232425262728293031323334353637383940414243444546#include <iostream>using namespace std;void solve(){ int m,n; int cnt = 0; cin >> m >> n; if(n == 0) { cout << cnt << endl; return; } cnt+= 1; n -=m; m--; int flag = 0; while(1) { if(n <= 0) break; if(flag == 2) ...
XV6 0x12
视频结尾论文部分VM FOR APPLICATION原语论文论述的(primitive)原语及在linux上的实现 trap 中断处理函数 ——> sigaction prrt1 减少访问权限 ——> mprotect portN 节省TLB刷新 ——> mprotect unport增加访问权限 ——> mprotect dirty脏页 map2 ——> mmap unix/linux today mmap,unmap 将文件映射到虚拟内存,允许用指针来操作文件 mprotect,修改页权限 sigaction,定义信号处理程序 USER-LEVEL...
vue3学习
VUE3VUE3:Typescript + 组合式API + setup语法糖 这里主要是来自b站尚硅谷VUE3的官方课堂笔记,有一些自己的修改。 介绍vite 创建项目 由原生 ES 模块提供支持的现代前端开发与构建工具。 Vite 利用现代浏览器的原生 ES 模块导入和构建时预编译功能。 模块热更新。当文件更改时,Vite 只需要重建一小部分模块。 123npm create vue@latest 创建项目npm install 安装依赖npm run dev 开启项目 目录结构 12345678910111213.├── README.md├── env.d.ts //环境类型声明文件,定义文件类型├── index.html //应用的入口 HTML 文件├── node_modules //npm install下载的项目依赖├── package-lock.json //锁定依赖版本,确保每次安装依赖时的一致性。├── package.json //项目的配置文件├──...
XV6 0x11
lab11networks arp:将互联网协议(IP)地址解析为对应的媒体访问控制(MAC)地址。 ip:定义了数据包的格式以及如何在源和目的地之间传输这些数据包。 udp、tcp:UDP和TCP都是传输层协议,它们在IP层之上,负责应用间的数据传输。 网卡与处理线程之间有接收队列、和发送队列,以控制网络流量。 DMA(直接内存访问)环允许硬件(如网络接口卡NIC)直接访问系统内存,而无需CPU的干预。 考虑一个路由器接收和转发包 随着输入数据包的增多,转发的数据包也增多 受限于cpu等因素达到最大值 因中断活锁不断产生中断,导致cpu时间全部用于处理中断 解决方案:通过设置一个中断线程轮询,当有数据包到达时产生中断,唤醒线程,处理数据包;当数据包处理完成时,再重新打开中断,线程休眠。 Your...