自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 汽车加油行驶问题(洛谷P4009 分层图费用流)

分层图+费用流

2022-07-14 19:45:06 303

原创 家园 / 星际转移问题(洛谷P2754 分层图+最大流)

分层图+最大流

2022-07-14 19:44:11 324

原创 第十三届蓝桥杯大赛软件赛决赛_CB个人题解

第十三届蓝桥杯大赛软件赛决赛_CB

2022-06-29 10:38:23 354

原创 P3302 [SDOI2013]森林(树上主席树+启发式合并)

小 Z 有一片森林,含有 N 个节点,每个节点上都有一个非负整数作为权值。初始的时候,森林中有 M 条边。 小Z希望执行 T 个操作,操作有两类: Q x y k 查询点 x 到点 y 路径上所有的权值中,第 k 小的权值是多少。此操作保证点 x 和点 y 连通,同时这两个节点的路径上至少有 k 个点。 L x y 在点 x 和点 y 之间连接一条边。保证完成此操作后,仍然是一片森林。 为了体现程序的在线性,我们把输入数据进行了加密。设 lastans 为程序上一次输出的结果,初始的时候 lastans 为

2021-11-29 22:56:24 357 1

原创 粟粟的书架(主席树+前缀和)

题目链接粟粟的书架 题目大意: 给你一个n×mn \times mn×m的矩阵, qqq个询问, 每次给你一个左上角在(x1,y1)(x1,y1)(x1,y1),右下角在(x2,y2)(x2,y2)(x2,y2)的子矩阵, 和一个权值hhh, 要求在子矩阵中选出最少的数,使得这些数的和不小于hhh. 思路: 注意到题目数据有50%50 \%50%是{n≤200,n≤200,q≤2×105}\{n \leq 200, n \leq 200, q \leq 2 \times 10^5\}{n≤200,n≤2

2021-11-24 23:40:56 332 1

原创 The Continental Cowngress G(2-sat)

题目链接: The Continental Cowngress G 简述 : 给出 nnn 个法案, mmm 头牛的意见, 每头牛会表决两次。 每次表决格式为 i Y 表示“支持 iii 号法案”或 i N 表示“反对 iii 号法案”。 最终,每头牛至少要有一个表决被满足。不可能成立的话输出 IMPOSSIBLE,否则输出方案。 由于对 Farmer John 的领导感到极其不悦,奶牛们退出了农场,组建了奶牛议会。 议会以“每头牛都可以获得自己想要的”为原则,建立了下面的投票系统: MMM只到场的奶

2021-11-19 15:58:40 404 2

原创 P2572 [SCOI2010]序列操作(线段树毒瘤题)

题目传送门:序列操作 给定长度为nnn的010101序列, 有五种操作 将下标[l,r][l,r][l,r]内的数全改为000 将下标[l,r][l,r][l,r]内的数全改为111 将下标[l,r][l,r][l,r]内的数000改为111, 111 改为000 求∑i=lra[i]\displaystyle\sum_{i=l}^{r}a[i]i=l∑r​a[i] 求下标[l,r][l,r][l,r]内最多有多少个连续的111 太毒瘤了, 写得头皮发麻; 主要是细节太多了. 见代码 关于为何pushd

2021-08-23 20:59:00 254

原创 动态开点与线段树合并

在一些计数问题中, 线段树用于维护值域(一段权值范围), 这样的线段树也叫权值线段树. 为了降低空间复杂度, 我们可以不建出整棵线段树的结构, 而是在最初只建立一个根节点, 代表整个区间, 当需要访问线段树的某颗子树(某个字区间)时, 再建立代表这个子区间的节点. 采用这种方法维护的线段树称为动态开点的线段树.动态开点的线段树抛弃了完全二叉树父子节点的2倍编号规则, 改为使用变量记录左右子节点的编号(相当于指针). 如果有若干棵线段树, 他们都维护相同的值域[1,n][1,n][1,n], 那么它们对各个字

2021-08-23 15:37:56 197 2

原创 线段树之状态压缩

线段树博大精深 对于线段树上的状态压缩, 个人的理解就是把修改的信息转化成二进制存储, 再配上位运算, 来处理问题的一种方法 色板游戏 这一题应该是状态压缩的板子题, 将一段区间内的每个格子涂成某种颜色, 查询某段区间内颜色的种数. 方法1: 将颜色ccc转化为2c2^{c}2c来存储, 这样二进制下的每一位1代表1种颜色, 修改的时候直接把这段区间的datadatadata修改为2c2^{c}2c, 延迟标记设为ccc, 然后向下传递, 查询时只需要将答案转化为二进制, 然后查询二进制下1的个数即可 方法

2021-08-11 10:54:12 295

原创 树上差分(求法与练习)

差分: 与前缀和背道而驰的算法, 给你一个数列, 要求在数组下标在[l,r][l,r][l,r]范围内的数同时+x+x+x, 那么只需在差分数组a[l]+x,a[r+1]−xa[l]+x,a[r + 1]-xa[l]+x,a[r+1]−x, 最后∑i=1ja[i]\displaystyle\sum_{i=1}^{j}a[i]i=1∑j​a[i]就是原数组arr[j]arr[j]arr[j]变化之后的值. 树上差分和最近公共祖先是两兄弟, 缺一不可 树上差分分为两种, 一种为边差分, 一种为点差分. 边差分:

2021-08-06 18:53:24 905 1

原创 树的直径(求法以及练习)

何为树的直径, 简单来说其实就是在一棵树上, 距离最远的两个点的距离. 如何求直径 bfs(dfs)bfs(dfs)bfs(dfs):第一次bfs(dfs)bfs(dfs)bfs(dfs) :从任意节点出发, 求出到该节点最远的节点ppp, 然后进行第二次bfs(dfs)bfs(dfs)bfs(dfs), 求出到ppp最远的节点qqq, ppp到qqq的路径长度即为树的直径. 树形dpdpdp: 设dp[x]dp[x]dp[x]表示从节点xxx出发走向以xxx为根的子树,能够到达的最远节点的距离, 设集合

2021-08-05 20:11:43 361

原创 差分约束系统

负权最短路 链式前向星: //建图方式 int tot; int head[MAX_N]; struct node { int to, cost, next;} G[MAX_N * 2]; inline void add(int u, int v, int w) { ++ tot; G[tot].to = v; G[tot].cost = w; G[tot].next = head[u]; head[u] = tot; } //初始化方式 memset(head, -

2021-07-21 10:35:30 183

原创 CF616E Sum of Remainders(数论)

题目链接 : Sum of Remainders 题意 : 输入 nnn 和 mmm, 计算 ∑i=1mnmodi\sum_{i = 1} ^ {m} n _{mod} i∑i=1m​nmod​i 思路 : nmodin_{mod}inmod​i = n−[ni]∗in -[ \frac{n}{i}] * in−[in​]∗i, ([ni\frac{n}{i}in​] 代表 ni\frac{n}{i}in​ 向下取整) 所以 ans=m∗n−∑i=1m[ni]∗ians=m * n - \sum_{i

2021-07-13 11:15:09 235

原创 L - Fantasy of a Summation(数论+找规律)

题目传送门 :Fantasy of a Summation 你的任务是计算图中表达式的结果. 算数列的每个数对答案的贡献, 后来发现贡献就是a[i] * k, k是a[i]在这个表达式中出现的次数. 答案就是对贡献求和. 然后就是打表, 发现每个数出现的次数均为 k * n ^ (k - 1). ans = ∑ a[i] * k * n ^ (k - 1) % mod ......

2021-07-09 10:54:52 164

原创 POJ3417-Network(树上差分 + LCA)

题目传送门:Network

2021-07-08 22:42:12 237

原创 G.Most Common Suffix(字符串哈希)

题目传送门:Most Common Suffix 题目大意: 给出n个字符串,每次询问一个x, 求这n个字符串长度为x的公共后缀最多出现的次数; 思路: 倒着求哈希, 然后o(1)查询; 小tip: usigned long long 不用担心溢出, 因为它会自动取模. 代码: #include<bits/stdc++.h> using namespace std; typedef long long ll; typedef unsigned long long ull; typedef pai

2021-07-06 22:56:49 181 2

原创 武汉工程大学第三届ACM程序设计选拔赛B题——密室逃脱(最短路)

链接: 武汉工程大学第三届ACM程序设计选拔赛B题 来源:牛客网 题面: 小明没有打过校赛但是他被拉去出题了。他非常想打校赛,但是他现在被困到了迷宫出题,现在请你帮小明逃离出题现场。该迷宫由n * m个格子组成的迷宫,有些格子是陷阱,用’#‘表示,小明进入陷阱就会死亡,’.'表示没有陷阱。小明所在的位置用’S’表示,目的地用’T’表示。 小明只能向上下左右相邻的格子移动,每移动一次花费1秒。 有q个双向传送阵,每个传送阵各有两个口,都在迷宫的格子里,当走到或被传送到一个有传送阵的格子时,小明可以选择是否开.

2021-05-10 09:40:09 407 4

原创 Dreamoon Likes Permutations

题目:Dreamoon Likes Permutations 题目链接:喵喵喵 题意:如果m个整数的序列恰好包含一次从1到m的所有整数,则称为置换。 数m称为排列的长度。 Dreamoon有两个长度分别为l1和l2的置换p1和p2。 现在,Dreoonoon将这两个置换连接成长度为l1 + l2的另一个序列a。 a的前l1个元素是排列p1,a的下一个l2个元素是排列p2。 给定序列a,您需要找到两个排列p1和p2。 如果有几种方法可以还原它们,则应找到所有它们。 (请注意,也有可能没有办法。) tips:特

2021-05-03 17:46:34 133

原创 洛谷 P2872 Building Roads S (最小生成树)

1948: 连接格点 Time Limit: 10 Sec Memory Limit: 65535 MB 64bit IO Format: %lld Submitted: 109 Accepted: 30 [Submit][Status][Web Board] Description   有一个M行N列的点阵(行编号为1..M,列编号为1..N),相邻两点可以相连。一条纵向的连线花费一个单位,一条横向的连线花费两个单位。某些点之间已经有连线了,试问至少还需要花费多少个单位才能使所有的点全部连通。

2021-03-14 14:19:10 252

原创 (图论)洛谷P4779 单源最短路程

题目传送门:P4779 思路:dijkstra+堆优化 代码: #include<algorithm> #include<iostream> #include<queue> #include<vector> #include<string> #include<utility> #include<stack> #include<map> #include<set> #include<iomanip

2021-03-11 19:57:27 169

原创 洛谷P1629 邮递员送信(dijkstra算法)

题目传送门:邮递员送信 题目描述 有一个邮递员要送东西,邮局在节点 11。他总共要送 n-1n−1 样东西,其目的地分别是节点 22 到节点 nn。由于这个城市的交通比较繁忙,因此所有的道路都是单行的,共有 mm 条道路。这个邮递员每次只能带一样东西,并且运送每件物品过后必须返回邮局。求送完这 n-1n−1 样东西并且最终回到邮局最少需要的时间。 输入格式 第一行包括两个整数,nn 和 mm,表示城市的节点数量和道路数量。 第二行到第 (m+1)(m+1) 行,每行三个整数,u,v,wu,v,w,表示从 u

2021-03-10 22:18:23 690

原创 PAT (1003) 我要通过! 20分

题目传送门:我要通过! 首先思考题目给的三个重要信息: 1.字符串中必须仅有 P、 A、 T这三种字符,不可以包含其它字符; 2.任意形如 xPATx 的字符串都可以获得“答案正确”,其中 x 或者是空字符串,或者是仅由字母 A 组成的字符串; 3.如果 aPbTc 是正确的,那么 aPbATca 也是正确的,其中 a、 b、 c 均或者是空字符串,或者是仅由字母 A 组成的字符串。 思路: 根据第一个条件得出该字符串必须包含PAT这三个字符,而且不含其他字符。 再来看第二个条件,可以得出字符串主体“PA

2021-03-10 20:14:07 329

原创 PAT (1060)爱丁顿数 25分

1060 爱丁顿数 (25 分) 英国天文学家爱丁顿很喜欢骑车。据说他为了炫耀自己的骑车功力,还定义了一个“爱丁顿数” E ,即满足有 E 天骑车超过 E 英里的最大整数 E。据说爱丁顿自己的 E 等于87。 现给定某人 N 天的骑车距离,请你算出对应的爱丁顿数 E(≤N)。 输入格式: 输入第一行给出一个正整数 N (≤10 ​5 ​​ ),即连续骑车的天数;第二行给出 N 个非负整数,代表每天的骑车距离。 输出格式: 在一行中给出 N 天的爱丁顿数。 输入样例: 10 6 7 6 9 3 10

2021-03-10 19:51:25 125

原创 PAT(1054)求平均值 20分

题目传送门:pat 1054 求平均值 思路不必再阐述,纯模拟,但小坑很多,debug起来很繁琐(也许是我菜了ovo) 以下是注意事项: 是否存在除数字, ‘.’ , ‘-’ 以外的符号 是否有数字(第四个测试点) 小数点个数<=1 注意小数位数在两位以内 注意实数范围 废话不多说,上代码 #include<algorithm> #include<iostream> #include<queue> #include<vector> #incl

2021-03-10 19:28:47 228 1

原创 POJ 3723(最小生成树+优先队列)

POJ 3723 原题链接:http://poj.org/problem?id=3723 大致题意:招募n名男生与m名女生,没招募一位,底薪是10000RMB,若i男与j女之间存在亲密值,那么实际支付10000-k。 求招募n+m员工 所花最小费用 思路:最小生成树无疑了,将男生的编号加上m或者将女生编号加上n,那么就让女生和男生称为一体,换句话说 顶点数为n+m。 求最小生成树有两种方法:1.prime算法。2.kruskal算法。 本题可用kruskal(没试过prime)+并查集维护边+优先队列(so

2021-03-09 22:59:53 556 2

空空如也

空空如也

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

TA关注的人

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