自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 atcoder2

先求出每一条边用了几次,一共n!* (n - 1) 条边,但是任意两点之间一共有 n * (n - 1) / 2 条边 每条边用了 n!* (n - 1) / (n * (n - 1) / 2) 次;可以简化为 01背包,但是只要在t 时间内选了 ,就可以吃完,在二维循环时,将时间(体积)加上当前物品的时间 - 1 就可以了,这个操作的目的为了当时间只剩1 的时候 还是可以将当前物品放进去。一眼dp 但是10^6 所以考虑数学性质,只有两种形式的操作,通过解方程来求出每种操作的个数,然后排列组合。

2024-03-03 13:22:15 315 1

原创 刷题记录;

atcoder CDE

2024-03-02 18:01:25 244 1

原创 codeforce 922 div 2 D

dp[i] = min(j ~ i , dp[j]) + a[i],(sum[j + 1, i - 1] <= x) 在连续子序列满足的情况下,求删除数的最小花费,如果花费小于x 返回true。1 2 3 4 5 如果按我们的思路当x = 5时 不满足,它在没有遍历后面的时候直接把 1 先删去了,需要优化check函数,所以现在我们需要动态规划的思想。但是需要优化找最小的dp[j]的过程,所以需要使用优先队列来存一下每个满足条件的dp[i];dp[i] 表示 删除第 i 个数 使前面全部满足的最小花费,

2024-01-31 11:51:21 157 1

原创 树状数组 + 离散化

问题转化为 对于每个 i 有多少个 j 满足这个条件,我们发现这就是一个区间求和问题,我们可以用线段树或者树状数组,因为n >= 1e9 所以线段树需要动态开点,树状数组离散化代码简单,所以我们采用树状数组。设a[] 为 初始数组 b[] 为前缀和数组,问题可以转化为。题意 求一段区间(l , r)的和 在给定区间的方案数。初始想法,区间和 不难想到前缀和,我们将问题转化一下.代码可以去题解看看这里不给了。

2024-01-29 14:46:49 248

原创 codeforce 1400

并且首尾的01发生交换时,答案会发生改变 f(0010) = 11,f(0001) = 1,f(1000) = 10;所以我们就找到第一个1 和最后一个1 计算交换次数是否 小于 k ,如果不能全部满足,先交换末尾,因为我们发现交换末尾会使答案减小10。我们发现对于两个1中间的0的个数不会对答案造成任何影响,f(0011000) = 22,f(00100100) = 22;

2024-01-25 23:23:47 259

原创 codeforce 1400 加 树形dp 板子

题目保证y <= x因为 y <= x 所以尽量不操作相邻的数,只有当a ,b 只有两个不相同的数时,将这两个数变为相同,需要 两次 y 操作,如果这两个数正好相邻 那么需要一次x操作,则需要比较一下 代价,对于其他情况都可以转换为 y 操作。对于两种操作,每次都将a向后移动,将c向前启动,a,c的相对位置不会改变。所以我们不需要考虑b的位置,将b全部删去,考虑a,c的相对位置即可。容易发现两个操作本质上是互逆的,因此只要将 a 和 b 中的所有元素拆开再比较是否相同即可。

2024-01-24 20:20:17 350

原创 codeforce 1400构造题

先考虑最简单的情况 如果矩阵元素都是 0 ,那么每个集合都有一个不同的数,每个集合都不是其他集合的子集,我们在此基础上考虑,g[i][j] 变为 1 说明 i 集合是 j 集合的子集,因为现在每个集合都是一个数,我们直接把 i 集合分配的数放到 j 集合。如果有解,我们发现对于竖着的牌,只会对行的01(黑白用01表示)个数产生影响,因为它对列的贡献是不变的,所以我们先枚举行 和 竖着的牌,保证01交替,在枚举列 ,横着的牌。对于无解的情况,我们发现只要每一行(每一列)的牌的个数是奇数个 就是无解;

2024-01-23 22:03:07 372 1

原创 小国王(状态压缩dp)

【代码】小国王(状态压缩dp)

2023-05-02 08:27:23 112 1

原创 dijkstra算法和bellman_ford算法区别

小记

2023-04-26 22:05:58 655

原创 求求组合数

用快速幂求逆元 在利用公式求解。适用于数据较小的时候。

2023-04-25 22:16:56 80

原创 复习滑动窗口(单调队列)

求一个窗口的最大值和最小值。注意这里的队列存的是下标。用数组模拟队列的方法。

2023-04-25 21:55:51 68

原创 算法 :并查集

find函数用来找出每个集合的根节点,然后进行路径压缩让 x结点 直接指向根节点。

2023-04-16 10:06:05 43

原创 算法学习记录( 8)

最长上升子序列是指在一个给定序列中,找到一个最长的子序列,使得子序列中的元素单调递增。例如,序列 [1, 3, 5, 4, 7] 的最长上升子序列是 [1, 3, 5, 7],长度为4。可以用一个嵌套循环来遍历所有的元素对,如果前一个元素小于后一个元素,则可以将后一个元素添加到前一个元素所在的最长上升子序列中,从而得到以第i个元素为结尾的最长上升子序列长度。假设dp[i]表示以第i个元素为结尾的最长上升子序列的长度。这是一个经典的动态规划问题。

2023-04-07 09:53:09 87 1

原创 算法学习记录(7)

如果边上的这两个顶点在一个集合中,说明两个顶点已经连通,这条边不要。如果这个边与之前选择的所有边不会组成回路,就选择这条边分;然后现将dist[t] 加到答案上面去 ,然后再用t 更新各点的距离。将所有边按照权值的大小进行升序排序,然后从小到大一一判断。直到具有 n 个顶点的连通网筛选出来 n-1 条边为止。将 t 更新后要先判断 i 和dist[t] 的合法性。遍历过程的每条边,判断这两个顶点的是否在一个集合中。筛选出来的边和所有的顶点构成此连通网的最小生成树。在初始状态下给各个个顶点在不同的集合中。

2023-04-06 07:46:16 65

原创 算法学习记录(6)

在使用算法模板时 注意在更新结点时改变一下状态,改变st数组的状态。bellmen_frod 算法求有边数限制的最短路。dijksrtra 算法求不含负权边的最短路。spfa算法用来求存在负权边的最短路问题。spfa 算法求最短路。

2023-04-03 20:50:25 36

原创 算法学习记录(5)

(DAG)的顶点排序方法,它将一个有向无环图中的所有顶点排成一个线性序列,使得图中任意一条有向边上的起点排在终点的前面。应用 :可达性统计 (题目来自acwing 164)拓扑排序一般用来解决单向无环图;

2023-04-02 19:43:14 36

原创 算法学习记录(4)

关键 :区间和公式的理解(及get函数): ABCDE 与 ABC 的前三个字符值是一样,只差两位,乘上P的二次方把 ABC 变为 ABC00,再用 ABCDE - ABC00 得到 DE 的哈希值。

2023-04-01 20:38:03 43

原创 算法学习记录(3)

【代码】算法学习记录(3)

2023-04-01 19:55:15 44

原创 区间合并算法

区间合并

2023-04-01 18:37:55 43

原创 算法学习记录 (1)

离散化 处理区间和问题

2023-04-01 17:31:28 61

空空如也

空空如也

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

TA关注的人

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