typedef 是赋予现有类型一个新的名字,而不是创建新的类型。为了“见名知意”,请尽量使用含义明确的标识符,并且尽量大写。 typedef 在表现上有时候类似于 #define,但它和宏替换之间存在一个关键性的区别。正确思考这个问题的方法就是把 typedef 看成一种彻底的“封装”类型,声明之后不
https://ac.nowcoder.com/acm/contest/9033/D 分析:这种类型的题目做法很固定 首先离线 设当前点为i 若以i为右端点 则合法的左端点一定是连续的一段 设为[l,r] 这个可以预处理出来 预处理的时候要注意 不能只考虑i的颜色 一定要和之前的颜色取max 询问的时候 区间修改区间求和 从
\(i\) 和 \(j\) 不对称很烦,求 \(\sum_i\sum_j\mathrm{lcm}(A_i,A_j)\) 再减去 \(\sum_i A_i\) 再除 \(2\) 即可得到答案。现在来考虑 \(i\) 和 \(j\) 取值均为 \(0\sim N-1\) 的式子: \[\begin{aligned} &\sum_i\sum_j\mathrm{lcm}(A_i,A_j) \\ =&\sum_i\sum_j\frac{A
https://www.acwing.com/problem/content/description/3543/ 输入一系列整数,利用所给数据建立一个二叉搜索树,并输出其前序、中序和后序遍历序列。 输入格式 第一行一个整数 n,表示输入整数数量。 第二行包含 n 个整数。 输出格式 共三行,第一行输出前序遍历序列,第二行输出中序遍
数据结构---总结 没写完 1.线性表 顺序表 typedef int ElemenType; typedef struct { ElemenType *data; // 数据域 int length; }Node; // 顺序表初始化 void InitNode(Node *t){ t->data = (Node *)malloc(sizeof(Node) * 100); if(t->data == NULL) exit(0);
题目链接 2172. Dinic/ISAP求最大流 给定一个包含 \(n\) 个点 \(m\) 条边的有向图,并给定每条边的容量,边的容量非负。 图中可能存在重边和自环。求从点 \(S\) 到点 \(T\) 的最大流。 输入格式 第一行包含四个整数 \(n,m,S,T\)。 接下来 \(m\) 行,每行三个整数 \(u,v,c\),表示从点 \(u
枚举 \([0,2^n-1]\) 子集 \(O(n^3)\) for (int s = 0; s < 1 << n; s++) for (int ns = s; s; ns = (ns - 1) & s) 证明: 法1: 对于每一位 1. s = 0, ns = 0 2. s = 1, ns = 0, 1 每一位有 3 种情况,所以共有 \(3^n\) 个子集 法2: 二项式定理 \(C_n^k*2^k=(2+1)^n\) 子集和问题 高
比赛链接 2022牛客暑期多校训练营2 D. Jobs (Easy Version) 有 \(\mathrm{N}\) 公司,每个公司提供 \(m_{i}\) 个岗位,每个岗位有三个限制条件 \(\mathrm{IQ} , \mathrm{EQ}, \mathrm{AQ}\) 。只有自己的三个值都大于等于该岗位的限 制,该公司才会发offer。现有 \(Q\) 个人问,每个人可以
A. Optimal Path 思路: 最小就是走第一行和最后一列 #include <bits/stdc++.h> using namespace std; typedef long long LL; typedef pair<int, int> PII; const int N = 200010; int a[N]; void solve() { int n, m; cin >> n >> m; LL res = 0;
+00:02 +00:16 +01:08 +02:07 VP 情况 4/8 ABCE ,赛时排名可以到823,什么时候我可以上个青 B 本想写个map的二分的,发现自己不会,写了个普普通通的二分 C 高精度模拟,一发过了,用个vector将每个数位存起来,从个位开始判断,如果 A_i 的数能加上小于10的正整数大于等于S_j+
E. Gardener and Tree 将度为1的顶点加入队列,做拓扑排序,记录点的遍历层次,答案为 n-前k层的点 // AC one more times ////////////////////////////////////////INCLUDE////////////////////////////////////////// #include <iostream> #include <algorithm> #include <cst
关于u16和u8 通常编译单片机程序,我们会看到u16和u8 typedef unsigned char u8; typedef unsigned int u16; u8 unsigned char 一个字节也就是8比特,表示范围是0~255 u16 unsigned int 两个字节也就是16比特,表示范围是0~65535
https://codeforces.com/contest/1215/problem/B 给你一个序列a1,a2,…,an,由n个非零整数组成(即ai≠0)。 您必须计算以下两个值: 使得al⋅al+1…ar−1⋅ar为负的指数对(l,r) (l≤r)的个数; 使得al⋅al+1…ar−1⋅ar为正的指数对(l,r) (l≤r)的个数; 输出 打印两个整数—分别是负乘积的
当模数不为质数的时候,可以用辗转相减来消元。 每个数的大小在消元的过程都会变小,以这个作为势能,不难分析出复杂度为 \(\mathcal{O}(n^2(\log p+n))\). 代码实现参考 qyc 的板子,常数小而且好写,qyc nb! #include<cstdio> #include<vector> #include<cstring> #include<iostream> #incl
首先它是个差分约束系统,要求变量总和最小就跑最长路。 但是它边权只有 \(0\) 或 \(1\),考虑这个图有什么特殊性质。 先缩点,每个 SCC 内部如果出现了一条 \(u\) 到 \(v\) 的边权为 \(1\),根据 SCC 的定义,一定还存在一条 \(v\) 到 \(u\) 的路径,由于边权 \(\geq 0\),所以一定会出现一个
题目链接 题意描述 题目意思是给你一段文章,然后将左双引号"""替换成"``",将右双引号替换成"''" 思路分析 这道题目还是非常容易地,属于是C++的语法题,鉴于cin和scanf都无法读入字符空白和换行,因此选择了getchar(),当返回值为EOF即为-1时便停止,也就是后面没有字符了,将读入的字符判断,如
洛谷传送门 POJ 传送门 一眼点分治。 当递归到结点 \(u\) 时,计算出子结点 \(v\) 的子树内,所有结点和 \(u\) 的距离。然后与之前的合并并计算答案即可。使用树状数组,时间复杂度 \(O(n \log n \log k)\),空间复杂度 \(O(n + k)\)。 code /* p_b_p_b txdy AThousandSuns txdy Wu_Ren
启发式合并 对于任意入度为1的点,选择它的前驱进行染色一定优于对它本身染色,于是将这两点进行合并(_Merge部分) 合并的方向由两个点的出度决定,由出度小的点向出度大的点进行合并(这样最多只有n/2条要合并的边) 合并的过程中,可能会出现入度变为1的点,进行类似深搜的操作即可 #include<b
花了很多时间,终于调试好了一个使用qt的cgal程序. 主文件main.cpp代码如下 #include <QApplication> #include <CGAL/Exact_predicates_inexact_constructions_kernel.h> #include <CGAL/Triangulation_2.h> #include <CGAL/draw_triangulation_2.h> #include <iostream&g
区间查询最值:https://codeforc.es/contest/1709/problem/D 题目没说求最小,可以先走到最下面再往右走。 判断的时候用一下线段树判断就好了。 #include<bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int,int>pii; const int mod=998244353; const int
洛谷传送门 思路 考虑将图往左压正,就得到了一个直角三角形的图。 在这个图中,如果没有斜边,则任意时刻走的向下的边都要 \(\ge\) 向右的边。这一部分就是 [SCOI2010] 生成字符串 了。 现在有斜边,考虑枚举走斜边的次数,设 \(u_i\) 为第 \(r\) 行第 \(c\) 列的点,走斜边的次数为 \(k\),那
洛谷传送门 CodeForces 传送门 一道不错的博弈论。 思路 此题的关键性质在于:一方可以重复另一方上一次的操作从而使得局面不变。 因此有结论:先手必胜当且仅当先手第一步就取胜,后手必胜当且仅当先手无法在第一步就取胜且无论先手如何操作后手都能一步胜利。 可以这么理解。若先手第
(8条消息) C++函数指针详解_candyliuxj的博客-CSDN博客_c++函数指针(重要) (8条消息) typedef void (*Fun) (void) 的理解——函数指针——typedef函数指针_走在不归路上的博客-CSDN博客_typedef void (重要) (8条消息) 定义一个函数指针类型_一直在路上25的博客-CSDN博客_重定义函数
洛谷传送门 AtCoder 传送门 思路 考虑正向进行操作并且维护当前棋子能到达的行区间 \([up,down]\) 和列区间 \([left,right]\)。则先手每次将区间往外扩展一格,而后手每次尽可能将区间往内缩小。当某一时刻先手执行完操作后区间的最左端或最右端不在棋盘上了,那么输出 NO。执行完所
你谷 link 一道蛮模版的字符串题,只需要一步非常显然的转化。 首先思考如果无视四种操作该怎么做,如果将每一个点看成是一个字符,那么就是给定一个文本串,多个模式串,求每个模式串在文本串里出现几次,这显然是一个字符串的模板题,可以使用 AC 自动机,也可以使用诸如后缀数组、后缀树、后缀