04 2021 档案

摘要:graph LR 数据链路层-->A(点对点通信) A-->数据链路和帧 A-->A1(三个基本问题)-->封装成帧 A1-->透明传输 A1-->差错检测 数据链路层-->B(点对点协议 PPP) B-->B1(PPP协议的特点) B1-->PPP协议要满足的要求 B1-->PPP协议的组成 B- 阅读全文
posted @ 2021-04-22 01:03 phr2000 阅读(1173) 评论(0) 推荐(0)
摘要:数据链路层属于计算机网络中的低层. 数据链路层使用的信道主要有以下两种类型 : 点对点信道. 广播信道. 本章重点 : 数据链路层的点对点信道和广播信道的特点, 以及这两种信道所使用的协议 (PPP 协议以及 CSMA/CD 协议) 的特点. 数据链路层的三个基本问题 : 封装成帧, 透明传输和差错 阅读全文
posted @ 2021-04-21 00:56 phr2000 阅读(443) 评论(0) 推荐(0)
摘要:1.1 计算机网络在信息时代的作用 互联网具有两个重要特性 : 连通性 资源共享 1.2 互联网概述 1.2.1 网络的 网络 计算机网络(简称网络)由若干结点和链接它们的链路组成.网络的结点可以是计算机, 集线器, 交换机, 或路由器等. 如图 : 给出了一个具有四个结点和三条链路的网络.我们看到 阅读全文
posted @ 2021-04-19 20:40 phr2000 阅读(342) 评论(0) 推荐(0)
摘要:https://www.acwing.com/problem/content/1015/ 由dp输出方案 分组背包 #include <bits/stdc++.h> using namespace std; #define IO ios::sync_with_stdio(false);cin.tie 阅读全文
posted @ 2021-04-13 20:31 phr2000 阅读(56) 评论(0) 推荐(0)
摘要:f[i][j]: 表示氧气至少为i,氮气至少为j至少需要的重量. f[j][k] = min(f[j][k], f[max(0, j - a)][max(0, k - b)] + w); 由实际意义出发 : 如果a > j或b > k也是需要转移过来的. 如果这里不转移, f[i][j]的意义就变了 阅读全文
posted @ 2021-04-13 19:54 phr2000 阅读(56) 评论(0) 推荐(0)
摘要:https://www.acwing.com/problem/content/7/ 混合背包 多重背包用二进制优化. #include <bits/stdc++.h> using namespace std; #define IO ios::sync_with_stdio(false);cin.ti 阅读全文
posted @ 2021-04-13 19:15 phr2000 阅读(68) 评论(0) 推荐(0)
摘要:D. Min Cost String 如果有k个字母能用, 那么可以去构造一个长度为k * k的序列使其价值为0(即不存在s[i] == s[j] && s[i + 1] == s[j + 1]). 如何构造? 比如当k = 3时: \(s:aabacbbcc\) 这个序列的价值为0. 再如k = 阅读全文
posted @ 2021-04-13 15:19 phr2000 阅读(207) 评论(0) 推荐(0)
摘要:https://www.acwing.com/problem/content/280/ \(完全背包变式\) 01背包变式 #include <bits/stdc++.h> using namespace std; #define IO ios::sync_with_stdio(false);cin 阅读全文
posted @ 2021-04-12 21:41 phr2000 阅读(49) 评论(0) 推荐(0)
摘要:https://www.acwing.com/problem/content/280/ \(01背包变式\) \(f[i][j]:表示在前i个中选,选出的数和为j的个数.\) for (int i = 1; i <= n; ++i) f[i][0] = 1; for (int i = 1; i <= 阅读全文
posted @ 2021-04-12 21:21 phr2000 阅读(112) 评论(0) 推荐(0)
摘要:https://www.acwing.com/problem/content/1024/ 二维01背包 #include <bits/stdc++.h> using namespace std; #define IO ios::sync_with_stdio(false);cin.tie(0); c 阅读全文
posted @ 2021-04-12 19:54 phr2000 阅读(68) 评论(0) 推荐(0)
摘要:http://codeforces.com/contest/1513/problem/C dp $f[i][j]:$表示当前数位上为i(0~9), 加法次数为j最终形成的数位. f[i][j] = f[i - 1][j + 1]; f[9][j] = f[1][j + 1] + f[0][j + 1 阅读全文
posted @ 2021-04-12 18:37 phr2000 阅读(159) 评论(1) 推荐(0)
摘要:导弹防御系统 本题就是拦截导弹的dfs版 能覆盖整个序列的最少的不上升子序列的个数等价于该序列的最长上升子序列长度 能覆盖整个序列的最少的不下降子序列的个数等价于该序列的最长下降子序列长度 #include <bits/stdc++.h> using namespace std; #define I 阅读全文
posted @ 2021-04-11 21:51 phr2000 阅读(198) 评论(0) 推荐(0)
摘要:拦截导弹 题意: 最少用几个不上升子序列完全覆盖原序列. 贪心: 处理一个不下降队列, 队列中的每个数都表示我们需要求得的不上升子序列的末尾.那么最终队列有多少个数,就表示答案是多少. 为了处理出这个队列q,我们遍历原数组s,对于每一个x: 若x大于等于q中每一个数,把x放到q的末尾 否则,找到q中 阅读全文
posted @ 2021-04-10 10:55 phr2000 阅读(64) 评论(0) 推荐(0)
摘要:常量表达式是指不会改变并且在编译阶段就能得到计算结果的表达式.显然,字面值属于常量表达式,用常量表达式初始化的const对象也是常量表达式. 一个对象(或表达式)是不是常量表达式由它的数据类型和初始值共同决定,例如: const int max_file = 20; // max_files 是常量 阅读全文
posted @ 2021-04-10 00:50 phr2000 阅读(180) 评论(0) 推荐(0)
摘要:传纸条 这道题要注意的是横坐标取值范围: x + y = k => y = k - x => 1 <= y = k - x <= m => k - m <= x <= k - 1 for (int k = 2; k <= m + n; ++k) for (int x1 = max(1, k - m) 阅读全文
posted @ 2021-04-08 23:01 phr2000 阅读(107) 评论(0) 推荐(0)
摘要:方格取数 令k为横纵坐标之和, 可以省去一维. 这两遍走法是互相无影响的. 如果会同时走上同一个坐标, 这个坐标的值就只加一次就好了, 这样就表示了第二走的值为0 #include <bits/stdc++.h> using namespace std; #define IO ios::sync_w 阅读全文
posted @ 2021-04-08 21:28 phr2000 阅读(126) 评论(0) 推荐(0)
摘要:std::move 的定义 template <typename T> // typename表明type是一个类型 typename remove_reference<T>::type&& move(T&& t) { return static_cast<typename remove_refer 阅读全文
posted @ 2021-04-08 00:21 phr2000 阅读(1449) 评论(0) 推荐(0)
摘要:template <typename T> void f(T &p); 函数参数p是一个模板类型参数T的引用,记住两点:编译器会应用正常的引用绑定规则; const是底层的,不是顶层的. 从左值引用函数参数推断类型 当一个函数参数是模板类型参数的一个普通(左值)引用时(即, T&),绑定规则告诉我们 阅读全文
posted @ 2021-04-07 23:51 phr2000 阅读(158) 评论(0) 推荐(0)
摘要:原题 本题每个节点存在两个懒标记add和mul用来更新区间节点的答案. 我们把区间的值sum看成sum = a * mul + add 对于modify操作 如果我们需要对一段区间的所有数乘上d, 相当于: sum = a * mul * d + add * d, 即, 我们只用修改对应mul和ad 阅读全文
posted @ 2021-04-07 23:18 phr2000 阅读(125) 评论(0) 推荐(0)
摘要:使用类的类型成员 我们通过(::)来访问static成员和类型成员. 在普通函数中,编译器掌握类的定义,因此,它知道通过作用域访问符访问的是名字还是static成员. 但对于模板代码,如T::mem它不会知道men是一个类型成员还是一个static数据成员,知道实例化时才知道. T::size_ty 阅读全文
posted @ 2021-04-05 23:55 phr2000 阅读(117) 评论(0) 推荐(0)
摘要:主要有两个操作:push_up 与 push_down. push_up 用子节点来算父节点信息,如:sum = l.sum + r.sum push_down 父节点的修改信息下传到子节点 基本操作 push_up(u) bulid() 将一段区间初始化为线段树 modify 修改 $\left 阅读全文
posted @ 2021-04-05 00:22 phr2000 阅读(69) 评论(0) 推荐(0)