自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(459)
  • 收藏
  • 关注

原创 1277:【例9.21】方格取数——数字三角形模型

【题目描述】设有N×N的方格图,我们在其中的某些方格中填入正整数,而其它的方格中则放入数字0。如下图所示:某人从图中的左上角A出发,可以向下行走,也可以向右行走,直到到达右下角的B点。在走过的路上,他可以取走方格中的数(取走后的方格中将变为数字0)。此人从A点到B点共走了两次,试找出两条这样的路径,使得取得的数字和为最大。【输入】第一行为一个整数N(N≤10),表示N×N的方格图。接下来的每行有三个整数,第一个为行号数,第二个为列号数,第三个为在该行、该列上所放的数。

2023-01-10 21:05:24 792 1

原创 1287:最低通行费——数字三角形模型

【题目描述】一个商人穿过一个N×N的正方形的网格,去参加一个非常重要的商务活动。他要从网格的左上角进,右下角出。每穿越中间1个小方格,都要花费1个单位时间。商人必须在(2N-1)个单位时间穿越出去。而在经过中间的每个小方格时,都需要缴纳一定的费用。这个商人期望在规定时间内用最少费用穿越出去。请问至少需要多少费用?注意:不能对角穿越各个小方格(即,只能向上下左右四个方向移动且不能离开网格)。【输入】第一行是一个整数,表示正方形的宽度N (1≤N

2023-01-10 18:14:27 868

原创 1284:摘花生——数字三角形模型

【题目描述】Hello Kitty想摘点花生送给她喜欢的米老鼠。她来到一片有网格状道路的矩形花生地(如下图),从西北角进去,东南角出来。地里每个道路的交叉点上都有种着一株花生苗,上面有若干颗花生,经过一株花生苗就能摘走该它上面所有的花生。Hello Kitty只能向东或向南走,不能向西或向北走。问Hello Kitty最多能够摘到多少颗花生。【输入】第一行是一个整数T,代表一共有多少组数据。1≤T≤100接下来是T组数据。

2023-01-10 18:14:18 481

原创 dfs、bfs搜索题型小结

最短路问题,一般采用bfs比较好;想用dfs解决的话,需要剪枝;下面这几道涉及到状态压缩,比普通的题会稍微复杂一点;求连通块数量,可以顺便求一下连通块中的最大数量;求连通块数量(此题默认只有两个),连通两个连通块。当然求连通块也可以用并查集来做,下面提供一个例题。这里用dfs解决,下面有一个bfs解决方法;这种问题就不需要回溯;

2023-01-07 14:39:14 1011

原创 B. Kill Demodogs——模拟+数学公式推导

B. Kill Demodogs——模拟+数学公式推导。

2023-01-06 21:57:59 405 1

原创 B.牛牛排队伍——模拟双链表

题目其实很简单,就是单链表的增删查,但是刚开始,直接vis标记删除元素,查找一个位置的前一个用的while不断向前找,但是TLE;毕竟O(n*k)的复杂度,一开始没有考虑时间复杂度,说明只能O(n)线性来解决,刚开始模拟单链表没用next后继,只用了前驱,有点bug,WA了好几下,后来浩提供的用next的思路才过了;

2023-01-06 21:03:42 238

原创 A. Joey Takes Money——贪心

Codeforces Round #841 (Div. 2) and Divide by Zero 2022 A. Joey Takes Money——贪心。

2023-01-06 16:16:12 379

原创 B. Quick Sort——模拟

Codeforces Round #842 (Div. 2) B. Quick Sort——模拟。

2023-01-06 15:28:36 384

原创 P3375 【模板】KMP字符串匹配——KMP

给出两个字符串s1​和s2​,若s1​的区间[l,r]子串与s2​完全相同,则称s2​在s1​中出现了,其出现位置为l。现在请你求出s2​在s1​中所有出现的位置。定义一个字符串s的 border 为s的一个s的子串t,满足t既是s的前缀,又是s的后缀。对于s2​,你还需要求出对于其每个前缀s′的最长 bordert′的长度。

2023-01-05 11:46:56 725

原创 99. 激光炸弹——二维前缀和

地图上有 N 个目标,用整数 Xi,Yi 表示目标在地图上的位置,每个目标都有一个价值 Wi。注意:不同目标可能在同一位置。现在有一种新型的激光炸弹,可以摧毁一个包含 R×R 个位置的正方形内的所有目标。激光炸弹的投放是通过卫星定位的,但其有一个缺点,就是其爆炸范围,即那个正方形的边必须和 x,y 轴平行。求一颗炸弹最多能炸掉地图上总价值为多少的目标。输入格式第一行输入正整数 N 和 R,分别代表地图上的目标数目和正方形包含的横纵位置数量,数据用空格隔开。

2022-12-28 18:58:40 607 2

原创 编译原理——基本块、流图、基本块优化、循环优化(代码优化)

把后面用的H、I的换为根(源头),H的源头是D,那么把下面用到H的换成D;I的源头是E,那么把下面用到I的换成E;常量B,可以直接删掉,把用到B的都替换成3即可;然后只写G、L、M用到的基本块,其余的不用写;由于A+C、A*C已经计算过,故将H=D,I=E;把循环中,一直不变的量(常量)移出循环,可以放在循环的上一个基本块中;把没用的代码直接删掉;B=J+1与循环无关,那么直接提出去即可;首先观察四元式程序,发现不用进行。,讲的挺不错的,可以去看看;,那么就可以直接通过上面的。,那么就可以直接通过上面的。

2022-12-27 16:38:05 8065

原创 243. 一个简单的整数问题2——线段树+懒标记

给定一个长度为 N 的数列 A,以及 M 条指令,每条指令可能是以下两种之一:C l r d,表示把 A[l],A[l+1],…,A[r] 都加上 d。Q l r,表示询问数列中第 l∼r 个数的和。对于每个询问,输出一个整数表示答案。输入格式第一行两个整数 N,M。第二行 N 个整数 A[i]。接下来 M 行表示 M 条指令,每条指令的格式如题目描述所示。输出格式对于每个询问,输出一个整数表示答案。每个答案占一行。数据范围1≤N,M≤105,|d|≤10000,

2022-12-27 11:13:22 608

原创 编译原理——参数传递—传名、传地址、得结果、传值

这个传参方式不太好理解,就是P(X,Y,Z),P函数内部还是对局部变量进行操作,和传值一样,但是需要多一步操作,就是把形参X,Y,Z值传给主函数的实参(A+B,A,A),也就是执行完P函数的X的值赋给A+B,Y的值赋给A,Z的值也赋给A,注意A有两次赋值操作,那么后赋值的会覆盖之前的,所以A的取值就是Z的值,而不是Y的值;X、Y、Z的操作当成局部变量来做(当成传值来做),最后对应着把形参的值赋给实参,后赋值的覆盖之前的;

2022-12-26 21:09:57 4499 1

原创 编译原理——求后缀表达式、三元式、四元式

多了一个运算结果,其实就是个变量,所以他叫四元式;然后三元式引用的(x)换成Tx;可能就是一填空题,考试应该也不会太复杂,要会,掌握着由外到内求解思想即可;间接三元式其实就是对三元式做一个小改动,通过上图可以发现。其实就是二叉树的后序遍历,左右根;每个四元式的前面有一个地址编号,用于跳转用;三元式的拆分求解顺序和后缀表达式相反,以上题的表达式为例,写出其四元式。后面三道的具体步骤就不写了;:(运算符,参数1,参数2,(运算符,参数1,参数2,,和三元式不一样的就是。,小括号内的最后拆(

2022-12-26 19:49:21 13527 3

原创 编译原理——求短语、直接短语(简单短语)、素短语、句柄

然后通过一些例题,实战一下;根据上面介绍的概念、求法,应用一下即可;

2022-12-26 16:35:58 5988 9

原创 246. 区间最大公约数——差分+线段树

给定一个长度为 N 的数列 A,以及 M 条指令,每条指令可能是以下两种之一:C l r d,表示把 A[l],A[l+1],…,A[r] 都加上 d。Q l r,表示询问 A[l],A[l+1],…,A[r] 的最大公约数(GCD)。对于每个询问,输出一个整数表示答案。输入格式第一行两个整数 N,M。第二行 N 个整数 A[i]。接下来 M 行表示 M 条指令,每条指令的格式如题目描述所示。输出格式对于每个询问,输出一个整数表示答案。每个答案占一行。数据范围。

2022-12-26 13:38:04 587

原创 245. 你能回答这些问题吗——线段树

给定长度为 N 的数列 A,以及 M 条指令,每条指令可能是以下两种之一:1 x y,查询区间 [x,y] 中的最大连续子段和,2 x y,把 A[x] 改成 y。对于每个查询指令,输出一个整数表示答案。输入格式第一行两个整数 N,M。第二行 N 个整数 A[i]。接下来 M 行每行 3 个整数 k,x,y,k=1 表示查询(此时如果 x>y,请交换 x,y),k=2 表示修改。输出格式对于每个查询指令输出一个整数表示答案。每个答案占一行。数据范围输入样例:5 3。

2022-12-25 14:17:00 512

原创 编译原理——正规式、NFA转换构造DFA、DFA的化简

我这里刚开始写的比较繁琐,主要是方便理解,做熟悉的话,可以直接写出不成立条件,从集合里拆分出来即可,没必要把成立的也写一遍;把删除的点的自环传给替代它的点,把2的入边(原来指向2的边,现在指向它的替代,也就是指向1),2的出边(就是由2引出去的边)不用管;第一问,对于图a,和上面一样,先画出状态转换矩阵,对矩阵进行编号,然后画出DFA,然后通过分割法进行化简,然后画出化简后的DFA即可;比如这个图就是NFA,因为0可以通过输入一个字符a到达本身,还可以通过a到达1,这就是在同一状态,有多条出边;

2022-12-24 21:10:07 23600 14

原创 1549:最大数——线段树

【题目描述】原题来自:JSOI 2008给定一个正整数数列 a1,a2,a3,⋯,an ,每一个数都在 0∼p–1 之间。可以对这列数进行两种操作:添加操作:向序列后添加一个数,序列长度变成 n+1;询问操作:询问这个序列中最后 L 个数中最大的数是多少。程序运行的最开始,整数序列为空。写一个程序,读入操作的序列,并输出询问操作的答案。【输入】第一行有两个正整数 m,p,意义如题目描述;接下来 m 行,每一行表示一个操作。

2022-12-24 13:30:27 943

原创 379. 捉迷藏——最小路径覆盖+匈牙利算法

Vani 和 cl2 在一片树林里捉迷藏。这片树林里有 N 座房子,M 条有向道路,组成了一张有向无环图。树林里的树非常茂密,足以遮挡视线,但是沿着道路望去,却是视野开阔。如果从房子 A 沿着路走下去能够到达 B,那么在 A 和 B 里的人是能够相互望见的。现在 cl2 要在这 N 座房子里选择 K 座作为藏身点,同时 Vani 也专挑 cl2 作为藏身点的房子进去寻找,为了避免被 Vani 看见,cl2 要求这 K 个藏身点的任意两个之间都没有路径相连。

2022-12-23 18:56:51 733

原创 378. 骑士放置——最大独立集+匈牙利算法

给定一个 N×M 的棋盘,有一些格子禁止放棋子。问棋盘上最多能放多少个不能互相攻击的骑士(国际象棋的“骑士”,类似于中国象棋的“马”,按照“日”字攻击,但没有中国象棋“别马腿”的规则)。输入格式第一行包含三个整数 N,M,T,其中 T 表示禁止放置的格子的数量。接下来 T 行每行包含两个整数 x 和 y,表示位于第 x 行第 y 列的格子禁止放置,行列数从 1 开始。输出格式输出一个整数表示结果。数据范围1≤N,M≤100输入样例:2 3 0输出样例:4。

2022-12-23 14:56:59 202

原创 376. 机器任务——最小点覆盖+匈牙利算法

有两台机器 A,B 以及 K 个任务。机器 A 有 N 种不同的模式(模式 0∼N−1),机器 B 有 M 种不同的模式(模式 0∼M−1)。两台机器最开始都处于模式 0。每个任务既可以在 A 上执行,也可以在 B 上执行。对于每个任务 i,给定两个整数 a[i] 和 b[i],表示如果该任务在 A 上执行,需要设置模式为 a[i],如果在 B 上执行,需要模式为 b[i]。任务可以以任意顺序被执行,但每台机器转换一次模式就要重启一次。求怎样分配任务并合理安排顺序,能使机器重启次数最少。

2022-12-23 14:05:58 604

原创 372. 棋盘覆盖——最大匹配+匈牙利算法

给定一个 N 行 N 列的棋盘,已知某些格子禁止放置。求最多能往棋盘上放多少块的长度为 2、宽度为 1 的骨牌,骨牌的边界与格线重合(骨牌占用两个格子),并且任意两张骨牌都不重叠。输入格式第一行包含两个整数 N 和 t,其中 t 为禁止放置的格子的数量。接下来 t 行每行包含两个整数 x 和 y,表示位于第 x 行第 y 列的格子禁止放置,行列数从 1 开始。输出格式输出一个整数,表示结果。数据范围1≤N≤100,0≤t≤100输入样例:8 0输出样例:32。

2022-12-23 10:32:48 182

原创 P3386 【模板】二分图最大匹配——匈牙利算法

给定一个二分图,其左部点的个数为n,右部点的个数为m,边数为e,求其最大匹配的边数。左部点从1至n编号,右部点从1至m编号。

2022-12-22 18:38:36 511

原创 P1525 [NOIP2010 提高组] 关押罪犯——染色法判定二分图+二分答案

S 城现有两座监狱,一共关押着N名罪犯,编号分别为1−N。他们之间的关系自然也极不和谐。很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突。我们用“怨气值”(一个正整数值)来表示某两名罪犯之间的仇恨程度,怨气值越大,则这两名罪犯之间的积怨越多。如果两名怨气值为c的罪犯被关押在同一监狱,他们俩之间会发生摩擦,并造成影响力为c的冲突事件。每年年末,警察局会将本年内监狱中的所有冲突事件按影响力从大到小排成一个列表,然后上报到 S 城 Z 市长那里。

2022-12-22 17:39:46 125

原创 1515:网络协议——Tarjan求强连通分量

【题目描述】出自 IOI 1996一些学校连接在一个计算机网络上。学校之间存在软件支援协议。每个学校都有它应支援的学校名单(学校 a 支援学校 b,并不表示学校 b 一定支援学校 a)。当某校获得一个新软件时,无论是直接得到还是网络得到,该校都应立即将这个软件通过网络传送给它应支援的学校。因此,一个新软件若想让所有连接在网络上的学校都能使用,只需将其提供给一些学校即可。任务。

2022-12-22 12:50:23 249

原创 1513:【 例 1】受欢迎的牛——Tarjan求强连通分量

【题目描述】原题来自:USACO 2003 Fall每一头牛的愿望就是变成一头最受欢迎的牛。现在有 N 头牛,给你 M 对整数 (A,B),表示牛 A 认为牛 B 受欢迎。这种关系是具有传递性的,如果 A 认为 B 受欢迎,B 认为 C 受欢迎,那么牛 A 也认为牛 C 受欢迎。你的任务是求出有多少头牛被除自己之外的所有牛认为是受欢迎的。【输入】第一行两个数 N,M;接下来 M 行,每行两个数 A,B,意思是 A 认为 B 是受欢迎的(给出的信息有可能重复,即有可能出现多个 A,B)。

2022-12-21 19:04:58 446

原创 1556:Dis——Tarjan求LCA、倍增求LCA

【题目描述】给出 n 个点的一棵树,多次询问两点之间的最短距离。注意:边是双向的。【输入】第一行为两个整数 n 和 m。n 表示点数,m 表示询问次数;下来 n−1 行,每行三个整数 x,y,k,表示点 x 和点 y 之间存在一条边长度为 k;再接下来 m 行,每行两个整数 x,y,表示询问点 x 到点 y 的最短距离。【输出】输出 m 行。对于每次询问,输出一行。【输入样例】2 21 2 1001 22 1【输出样例】100100【提示】

2022-12-20 16:33:59 591

原创 1557:祖孙询问——倍增求LCA

【题目描述】已知一棵 n 个节点的有根树。有 m 个询问,每个询问给出了一对节点的编号 x 和 y,询问 x 与 y 的祖孙关系。【输入】输入第一行包括一个整数 n 表示节点个数;接下来 n 行每行一对整数对 a 和 b 表示 a 和 b 之间有连边。如果 b 是 −1,那么 a 就是树的根;第 n+2 行是一个整数 m 表示询问个数;接下来 m 行,每行两个正整数 x 和 y,表示一个询问。【输出】

2022-12-19 17:32:08 561

原创 1536:【例 2】数星星 Stars——树状数组

【题目描述】原题来自:Ural 1028天空中有一些星星,这些星星都在不同的位置,每个星星有个坐标。如果一个星星的左下方(包含正左和正下)有 k 颗星星,就说这颗星星是 k 级的。例如,上图中星星 5 是 3 级的(1,2,4 在它左下),星星 2,4 是 1 级的。例图中有 1 个 0 级,2 个 1 级,1 个 2 级,1 个 3 级的星星。给定星星的位置,输出各级星星的数目。一句话题意:给定 n 个点,定义每个点的等级是在该点左下方(含正左、正下)的点的数目,试统计每个等级有多少个点。

2022-12-18 14:33:42 399

原创 1535:【例 1】数列操作——树状数组

【题目描述】给定n个数列,规定有两种操作,一是修改某个元素,二是求子数列[a,b]的连续和。数列元素个数最多10万个,询问操作最多10万次。【输入】第一行2个整数n,m(n表示输入n个数,m表示m操作)第二行n个整数接下来m行,每行三个数k,a,b(k=0,表示求子数列[a,b]的连续和;k=1,表示第a个数加b)。【输出】若干行,表示k=0时,对应子数列[a,b]连续和。【输入样例】10 51 1 50 1 30 4 81 7 50 4 8【输出样例】

2022-12-18 12:41:14 314

原创 244. 谜一样的牛——二分+树状数组

有 n 头奶牛,已知它们的身高为 1∼n 且各不相同,但不知道每头奶牛的具体身高。现在这 n 头奶牛站成一列,已知第 i 头牛前面有 Ai 头牛比它低,求每头奶牛的身高。输入格式第 1 行:输入整数 n。第 2…n 行:每行输入一个整数 Ai,第 i 行表示第 i 头牛前面有 Ai 头牛比它低。(注意:因为第 1 头牛前面没有牛,所以并没有将它列出)输出格式输出包含 n 行,每行输出一个整数表示牛的身高。第 i 行输出第 i 头牛的身高。

2022-12-18 11:35:47 536

原创 243. 一个简单的整数问题2——差分+树状数组

给定一个长度为 N 的数列 A,以及 M 条指令,每条指令可能是以下两种之一:C l r d,表示把 A[l],A[l+1],…,A[r] 都加上 d。Q l r,表示询问数列中第 l∼r 个数的和。对于每个询问,输出一个整数表示答案。输入格式第一行两个整数 N,M。第二行 N 个整数 A[i]。接下来 M 行表示 M 条指令,每条指令的格式如题目描述所示。输出格式对于每个询问,输出一个整数表示答案。每个答案占一行。数据范围1≤N,M≤105,|d|≤10000,

2022-12-18 10:18:26 501

原创 242. 一个简单的整数问题——差分思想+树状数组

给定长度为 N 的数列 A,然后输入 M 行操作指令。第一类指令形如 C l r d,表示把数列中第 l∼r 个数都加 d。第二类指令形如 Q x,表示询问数列中第 x 个数的值。对于每个询问,输出一个整数表示答案。输入格式第一行包含两个整数 N 和 M。第二行包含 N 个整数 A[i]。接下来 M 行表示 M 条指令,每条指令的格式如题目描述所示。输出格式对于每个询问,输出一个整数表示答案。每个答案占一行。数据范围1≤N,M≤105,|d|≤10000,

2022-12-17 15:36:51 487

原创 241. 楼兰图腾——树状数组

在完成了分配任务之后,西部 314 来到了楼兰古城的西部。相传很久以前这片土地上(比楼兰古城还早)生活着两个部落,一个部落崇拜尖刀(V),一个部落崇拜铁锹(∧),他们分别用 V 和 ∧ 的形状来代表各自部落的图腾。西部 314 在楼兰古城的下面发现了一幅巨大的壁画,壁画上被标记出了 n 个点,经测量发现这 n 个点的水平位置和竖直位置是两两不同的。

2022-12-17 14:25:54 605

原创 P1983 [NOIP2013 普及组] 车站分级——拓扑排序+dp

一条单向的铁路线上,依次有编号为 $1, 2, …, n $的 $n $个火车站。每个火车站都有一个级别,最低为1级。现有若干趟车次在这条线路上行驶,每一趟都满足如下要求:如果这趟车次停靠了火车站x,则始发站、终点站之间所有级别大于等于火车站$ x$ 的都必须停靠。(注意:起始站和终点站自然也算作事先已知需要停靠的站点)例如,下表是$ 5趟车次的运行情况。其中,前4$ 趟车次均满足要求,而第5趟车次由于停靠了3号火车站(2级)却未停靠途经的6号火车站(亦为2级)而不满足要求。现有m。

2022-12-16 18:15:15 813

原创 164. 可达性统计——拓扑排序+dp

给定一张 N 个点 M 条边的有向无环图,分别统计从每个点出发能够到达的点的数量。输入格式第一行两个整数 N,M,接下来 M 行每行两个整数 x,y,表示从 x 到 y 的一条有向边。输出格式输出共 N 行,表示每个点能够到达的点的数量。数据范围输入样例:10 103 82 32 55 95 92 33 94 82 104 9输出样例:1633211111。

2022-12-16 13:48:24 180

原创 1351:【例4-12】家谱树——拓扑排序

【题目描述】有个人的家族很大,辈分关系很混乱,请你帮整理一下这种关系。给出每个人的孩子的信息。输出一个序列,使得每个人的后辈都比那个人后列出。【输入】第1行一个整数N(1≤N≤100),表示家族的人数;接下来N行,第i行描述第i个人的儿子;每行最后是0表示描述完毕。【输出】输出一个序列,使得每个人的后辈都比那个人后列出;如果有多解输出任意一解。【输入样例】504 5 1 01 05 3 03 0【输出样例】2 4 5 3 1。

2022-12-16 11:43:11 381

原创 P1113 杂务——拓扑排序+dp

John的农场在给奶牛挤奶前有很多杂务要完成,每一项杂务都需要一定的时间来完成它。比如:他们要将奶牛集合起来,将他们赶进牛棚,为奶牛清洗乳房以及一些其它工作。尽早将所有杂务完成是必要的,因为这样才有更多时间挤出更多的牛奶。当然,有些杂务必须在另一些杂务完成的情况下才能进行。比如:只有将奶牛赶进牛棚才能开始为它清洗乳房,还有在未给奶牛清洗乳房之前不能挤奶。我们把这些工作称为完成本项工作的准备工作。至少有一项杂务不要求有准备工作,这个可以最早着手完成的工作,标记为杂务1。John有需要完成的n。

2022-12-16 11:15:40 441 1

原创 P5318 【深基18.例3】查找文献——dfs+bfs遍历图

小K 喜欢翻看洛谷博客获取知识。每篇文章可能会有若干个(也有可能没有)参考文献的链接指向别的博客文章。小K 求知欲旺盛,如果他看了某篇文章,那么他一定会去看这篇文章的参考文献(如果他之前已经看过这篇参考文献的话就不用再看它了)。假设洛谷博客里面一共有n(n≤105)篇文章(编号为 1 到n)以及m(m≤106)条参考文献引用关系。目前小 K 已经打开了编号为 1 的一篇文章,请帮助小 K 设计一种方法,使小 K 可以不重复、不遗漏的看完所有他能看到的文章。

2022-12-15 14:17:37 166

空空如也

空空如也

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

TA关注的人

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