09 2019 档案
摘要:"题目描述" 思路 一开始,觉得应该对每个格子为0的进行dfs,为了进行顺序最优的dfs,要先从可选数量少的格子进行,这样对每个格子创建一个set,存储能够填的数。 然后就是根据size大小排序,选择最小的进行dfs。 然后发现每次dfs都要进行排序,set的二维数组得设在dfs函数内,排序的时候又
阅读全文
摘要:"题目描述" 思路 一开始看这道题目,也不是很会,谁会把统计之类的问题和bfs联系在一起,没有开始的状态,没有结束的状态,题目中连一个最短之类的词也没有出现。 然后统计嘛,题目中说了方格高度都相同,就把周围的点都看一遍和这个点高度相同的就入队,把高度相同的点都打上浏览的标记。看的过程中,既有比它小的
阅读全文
摘要:"题目描述" 思路 一开始想先写一个bfs,目标字符串要加上一个' ',表示这是一个换行符,然后一个字母一个字母的找,每次重置一下vis数组,bfs返回的结果再加上1,表示要打印这个字母,结果第一个样例没有过。 然后就开始看题意,发现没看懂这就话的意思,”光标总是跳到下一个在该方向上与当前位置不同的
阅读全文
摘要:"题目描述" 思路 bfs主要问题就是走重复路的问题,需要设置一个vis数组防止走重复路,怎么把一个二维数组表示成一个数,扩展来说就是怎么把状态表示成一个数,看了别人的代码,可以二进制的数来记录状态,4x4的数组状态不会超过2^(17)。 然后就是怎么走的问题,规定只能向下,下右走,而向上,向左就是
阅读全文
摘要:"题目描述" 思路 代码 c++ include include include int tar[10], tmp[10], rec[10]; bool vis[40500]; int fa[40500], ed, ans, ant; char act[40500]; int jc[10] = {1
阅读全文
摘要:"题目描述" 思路 在图上进行广度优先遍历 边权相同,后来的比先来的付出的代价要大,直接从队尾入队 边权只有1, 0两种,0的累计代价要比1的累计代价小,小于等于队列中的其他点的代价,要从对头入队,1的从队尾入队 记录一个vis数组,记录经过此点的最小代价,防止重复走 题目给的是边,我们走的是点,要
阅读全文
摘要:"题目描述" 思路 代码 c++ include include using namespace std; int n, k, ans; vector v; void dfs(int x, int pre, int cnt) { if (x
阅读全文
摘要:"题目描述" 思路 三角形两边之和大于第三边 代码 c++ include include using namespace std; struct Node { double x, y; } a, b, c, d; int p, q, w; double getTime(Node a, Node b
阅读全文
摘要:"题目描述" 思路 代码 c++ include int n; double H, h, D, l, r, midl, midr, ans, ansl, ansr; double calc(double x) { return x + D (h x) / (H x); } int main() {
阅读全文
摘要:"题目描述" 思路 二分的是结果,使用并查集保存各个点之间是否连通 a为开始的点,b, c为目标点, 在经过了某个时刻时,a直接到不了b,a直接能到c,光通过这两个条件不能确定a间接到不了b, a可能通过c再到达b 并查集维护的就是目标点之间的连通性,不光要验证a能不能到达b,还要验证目标点内部能不
阅读全文
摘要:more +num 从第 num 行开始显示 空格键 翻滚下一屏 enter 翻滚一行 ctrl+b 翻滚上一屏 = 显示行号 q 退出
阅读全文
摘要:"题目描述" 思路 代码 c++ include include include long long n, avg, tot, arr[1000005], ans; inline long long int read() { long long s = 0, f = 1; char ch = get
阅读全文
摘要:1. 排一次序后就可以得到答案 2. 排一次序只能得到这次的最优选择,需要多次排序,得到全部的最优答案
阅读全文
摘要:"题目描述" 思路 代码 c++ include int n, ans, pre; bool rec[1000006]; struct Node { int a, b; } arr[1000006], tmp; void qsort(int L, int R) { int l = L, r = R;
阅读全文
摘要:"题目描述" 思路 代码 c++ include int n, ans, pre; struct Node { int a, b; } arr[1000006], tmp; inline int read() { int s = 0, f = 1; char ch = getchar(); whil
阅读全文
摘要:"题目描述" 思路 代码 c++ include include include using namespace std; int n, arr[50005], save[50005]; int tmp[50005]; long long maxx, minn; const int inf = 0x
阅读全文
摘要:1. 变量名和等号之间不能有空格 2. 单引号字符串里面的变量不会解析 3. 双引号字符串里面的变量会解析
阅读全文
摘要:"题目描述" 思路 代码 c++ include int n, na, nb, ans; struct Node { int a, b, c; } aa[1005], bb[1005], tmp; inline int read() { int s = 0, f = 1; char ch = get
阅读全文
摘要:"题目描述" 思路 代码 c++ include include struct Node { int a, b; } arr[1005], tmp; int ans, pre, n; inline int read() { int s = 0, f = 1; char ch = getchar();
阅读全文
摘要:"题目描述" 思路 Treap 模板题 代码 c++ include include include const int MAX = 110000 + 5; int n, m, rt, tot, inf = 0x7f3f3f3f, ot; char str[100]; struct Node { i
阅读全文
摘要:"题目描述" 思路 Treap树 + 延迟标记 代码
阅读全文
摘要:cat S | wc l // 统计目录下所有以S开头的文件的行数
阅读全文
摘要:"题目描述" 思路 代码 c++ include include include include const int MAX = 8e4 + 5, mod = 1e6; int n, m, inf = 0x3f3f3f3f; int ans, rt, tot; bool flag; struct N
阅读全文
摘要:"题目描述" 思路 代码 c++ include include include include define min(a, b) ((a) = 2) cnt(r) , size(r) ; else if (!lc(r) || !rc(r)) r = lc(r) + rc(r); else if (
阅读全文
摘要:``` 和$(ls /etc) 是两种获取命令执行结果的方式。 for file in List 的语法里面的List 就是使用使用ls /etc 的命令执行结果作为List(https://www.shiyanlou.com/questions/59195/) shell !/bin/bash f
阅读全文
摘要:"题目描述" 思路 尽量不要直接使用getchar得到单个字符,容易出现runtime error, 可以使用scanf("%s", str), 直接判断str[0]是否是对应字符就可以了。 代码 c++ include include define lc k '9') { if (ch == '
阅读全文
摘要:"题目描述" 思路 使用两个标记sum, flag(fg), sum表示安装软件的子节点有多少个;flag表示对这个区间的软件进行操作,1 全部安装, 1全部卸载,0不进行操作 代码 c++ include include define lc k '9') { if (ch == ' ') f =
阅读全文
摘要:"题目描述" 思路 树链剖分更新子树x,由于线段树节点的顺序由dfs产生,所以更新的线段树区间为[dfn[x], dfn[x] + size[x] 1] 代码 c++ include include define lc k '9') { if (ch == ' ') f = 1; ch = getc
阅读全文
摘要:"题目描述" 思路 树链剖分模板 代码 c++ include include define lc k (b) ? a : b) define FOR(a, b) for(int i=a;i '9') { if (ch == ' ') f = 1; ch = getchar(); } while (
阅读全文
摘要:nohup command myout.file 2 &1 & 指定nohup.out的文件名 jobs l 查看后台命令
阅读全文
摘要:行号的打开 :set number 行号关闭 :set nonumber 搜索 :/xxx 复制 复制一行 yy 粘贴 p 删除 删除一行 dd
阅读全文
摘要:题目描述(https://loj.ac/problem/10136) 思路 3个节点a,b,c选择(a,b)(a,c)(b,c)公共祖先深度最大的节点,3个节点的最大距离为每个节点到公共祖先的距离和 / 2; 代码
阅读全文
摘要:"题目描述" 思路 读入的节点+1,代表树上的节点,这样0节点可以成为根节点的父节点,方便dfs 代码 c++ include const int MAX = 4e4 + 5; int n, m, root; int head[MAX], ver[MAX '9') { if (ch == ' ')
阅读全文
摘要:"题目描述" 思路 一本通的描述比较详细 "比较好的博客" 代码
阅读全文
摘要:"题目描述" 题目概述 思路 代码 c++ include include const int MAX = 100005; int n, m, ans; int cnt[MAX], f[MAX][21], dep[MAX]; int head[MAX], ver[MAX = 0; i) { if (
阅读全文
摘要:"题目描述" 思路 lca 模板题 代码 c++ include include using namespace std; const int MAX = 1e5 + 5; int n, m; int head[MAX], ver[MAX '9') ch = getchar(); while (ch
阅读全文
摘要:"题目描述" 思路 "借鉴" 代码 c++ include define lc k '9') ch = getchar(); while (ch = '0' && ch 1; build(lc, l, mid); build(rc, mid + 1, r); sum[k] = (sum[lc] +
阅读全文
摘要:题目描述 思路 1. 0 和 1 开方之后不会改变,对 0, 1 节点打上标记 2. 如果孩子节点都打上标记了,说明这些孩子节点的和不会改变,那么父节点也打上标记 3. 对于打上标记的点,change 的时候直接 return 代码 c++ include include int n, m; lon
阅读全文
摘要:"题目描述" 思路 代码 c++ include include long long n, m; struct { long long at[1000005], arr[1000005 1; this build(k build(k add(k, l, r, v); return; } int mi
阅读全文
摘要:"题目描述" 思路 代码 c++ include include int n, m; struct { int at[1000005]; long long int arr[1000005 1; this build(k build(k r || y 1; this change(k change(
阅读全文
摘要:"题目描述" 思路 1. 询问的是区间[L, R],完美序列的开始下标 = L 2. 二分查找序列中满足开始下标大于L的第一个位置x 3. ST算法求解[x, R]的最大长度 y 4. x L 和 y 的最大值为结果 代码 c++ include define max(a,b) ((a) (b) ?
阅读全文
摘要:"题目描述" 思路 代码 c++ include include // include //using namespace std; define max(a, b) ((a) (b) ? (a) : (b)) define min(a, b) ((a) (b) ? (b) : (a)) int n
阅读全文
摘要:"题目描述" 思路 RMQ 问题 ST算法 代码 c+++ include include define max(a, b) ((a) (b) ? (a) : (b)) int n, m; int arr[100005]; int f[100005][21], log[100005]; inline
阅读全文
摘要:一维树状数组 c++ int lowbit(int n) return n & ( n); void update (int x, int y) { for (; x update(x, y) 区间查询 = sum(x)实现的是求[1, x]的和,求[L, R]的和就是sum(R) sum(L 1)
阅读全文
摘要:"题目描述" 思路 update是从(x,y)处往下更新,sum是求(x,y)到(0, 0)的和 lowbit(x) 表示二进制下x的最低位的1与它后面的0构成的树,那么对于奇数来说就是1 |x| 1 | 2 | 3 | 4 | 5| 6| | | | | | | | | |二进制| 1| 10 |
阅读全文
摘要:"题目描述" 思路 因为树状数组update是会一直更新到最后的节点,查询的也是端点的情况,所以用两个树状数组来维护一段区间 每次给定一个区间(l, r)变换, 就是update(l, 1, start), update(r, 1, ed) 注意 update(r, 1, ed), 而不是updat
阅读全文
摘要:"题目描述" 思路 用一个数组记录lowbit的值 代码 c++ include include int n, k; char st; int arr[500005], lowbit[500005]; void update(int x, int y) { while (x
阅读全文
摘要:"题目描述" 思路 题目的意思是在[l, r]的所有整数位置都种树,每个点可以重复种,问[L, R]的树有多少种 一个树状数组start保存l,一个树状数组end保存r,保存的方式就是从update(x, 1) start 表示从l开始就可以种树了,end 表示从r就不可以种树了 sum函数 求得就
阅读全文
摘要:"题目描述" 思路 1. 首先确定每个点是第几级 2. 然后统计第几级共有多少个点 首先,确定当前点是第几级,也就是找出这个点左下方有多少个点(不包括本身),由于给出的点是按y坐标从小到大排序,y坐标相同,x坐标从小到大排序,也就是说这个点以后的点因为y坐标过大或和当前点的y坐标相等(此时可以忽略x
阅读全文
摘要:题目描述 这是一道模板题。 给定数列a[1], a[2], ..., a[n],你需要依次进行 q 个操作,操作有两类: 1 i x:给定 ,将 i 加上 x; 2 l r:给定 ,求 l 到 r 的和 输入格式 第一行包含 2 个正整数 ,表示数列长度和询问个数。保证 。 第二行 n 个整数 ,表
阅读全文
摘要:"题目描述" 思路 使用哈希值表示较长串的子串的值,直接比较哈希值是否相等 代码 c++ include include using namespace std; char a[1000005], b[1000005]; unsigned int sum[1000005], sumb, bt[100
阅读全文
摘要:"题目描述" 思路 使用字符串产生两个哈希值,一个哈希值决定链表的头,另一个哈希值决定在某个链表头的后面的某个位置。 代码 c++ include include include int n; char a[10], b[209]; int bs = 37, h1 = 90001, h2 = 900
阅读全文

浙公网安备 33010602011771号