06 2021 档案

摘要:#代码: #pragma GCC optimize(2) #include<bits/stdc++.h> using namespace std; typedef long long ll; const int maxn=51000; int a[maxn],n; int tr[maxn],b[ma 阅读全文
posted @ 2021-06-15 21:50 OvO1 阅读(52) 评论(0) 推荐(0)
摘要:link #思路: 经典套路,通过dfs序将树上修改转化为线性修改,这样问题就转化为了单点修改,区间查询,用树状数组维护。 类似题 #代码: #pragma GCC optimize(2) #include<bits/stdc++.h> using namespace std; typedef lo 阅读全文
posted @ 2021-06-14 19:39 OvO1 阅读(64) 评论(0) 推荐(0)
摘要:link #思路: 良心题解 首先,$O(n^{2})$的算法并不难想,也很容易就想到先排序后对每个奶牛都计算贡献。这样会有一个问题就是计算$dis$时要取绝对值,但是排序后每只奶牛跟前面奶牛的$x$坐标的大小关系是不确定的,所以计算贡献的方法也是不一样的,如何合并起来算的话是不正确的。 考虑怎么解 阅读全文
posted @ 2021-06-14 19:06 OvO1 阅读(70) 评论(0) 推荐(0)
摘要:#思路: 由于矩阵只由$0,1$组成,所以最后的值由改变次数决定。 用二维树状数组维护改变次数,区间修改单点求值。 #代码: #pragma GCC optimize(2) #include<bits/stdc++.h> using namespace std; typedef long long 阅读全文
posted @ 2021-06-14 16:01 OvO1 阅读(64) 评论(0) 推荐(0)
摘要:#代码: #include <iostream> #include <cstring> #include <algorithm> #include <vector> using namespace std; typedef long long LL; const int N = 1e5+10; LL 阅读全文
posted @ 2021-06-13 20:46 OvO1 阅读(57) 评论(0) 推荐(0)
摘要:link #思路: 数据范围是$1e5$. 先回想数据范围为$1e3$的做法: $dp[i]$表示以第i个数为结尾的最大上升子序列和,转移就是$dp[i]=max(dp[j]+w[i]),1<=j<i$ 时间复杂度$O(n^{2})$ 这题显然过不去,考虑用数据结构优化。 每次转移过来的都是前缀的最 阅读全文
posted @ 2021-06-13 19:28 OvO1 阅读(84) 评论(0) 推荐(0)
摘要:问题 D: Lunlun Number 时间限制: 1 Sec 内存限制: 128 MB 题目描述 A positive integer X is said to be a lunlun number if and only if the following condition is satisfi 阅读全文
posted @ 2021-06-12 09:20 OvO1 阅读(169) 评论(0) 推荐(0)
摘要:问题 J: 自由世界 时间限制: 5 Sec 内存限制: 128 MB 题目描述 牛牛最近在玩某款游戏,其地图不能看成一个平面直角坐标系,而类似于一张无向图。 地图上存在n个小镇,小镇从1到n编号。有m条道路连接两个小镇,每条道路有其长度wi。 牛牛在k个小镇建立了传送门,也就是说,牛牛可以在任何时 阅读全文
posted @ 2021-06-12 09:16 OvO1 阅读(123) 评论(0) 推荐(0)
摘要:牛牛最近在玩某款游戏,其地图可以看成一个平面直角坐标系。 地图上存在n个小镇,小镇从1到n编号。第i个小镇的坐标为(xi,yi)。定义两个小镇的距离为曼哈顿距离,比如小镇i到小镇j的距离为|xi−xj|+|yi−yj|,其中,|a|表示取a的绝对值。 牛牛在m个小镇建立了传送门,也就是说,牛牛可以在 阅读全文
posted @ 2021-06-12 09:12 OvO1 阅读(82) 评论(0) 推荐(0)
摘要:题目链接 #思路: 将相交或相切的用并查集维护起来,最后看上表面跟下表面能否在同一个连通块。 #代码: #include <iostream> #include <algorithm> #include <cstdio> #include <cstring> #include <cmath> #in 阅读全文
posted @ 2021-06-08 22:08 OvO1 阅读(123) 评论(0) 推荐(0)
摘要:题意: 题目描述 斯普林菲尔德(春之田野???)学院的校长正在考虑为某些科目招聘新老师 现在有一批申请岗位的老师 每个老师能教一个或多个科目 校长想要选择一些申请者以保证每个科目都至少有两名老师能教 同时总共花的钱要最小 输入格式: 输入由多组测试组成,它们的格式如下: 第一行包含三个给定的整数S, 阅读全文
posted @ 2021-06-07 15:36 OvO1 阅读(95) 评论(0) 推荐(0)
摘要:传送门 思路: 贪心的考虑,如果将原数组的前$k$位放满$n$位能够满足条件的话,就会这样放。 如果不能满足条件的话,将该$k$位$+1$后一定会满足条件,这便是最小的。 要注意进位的情况,并且如果是9999这种情况的话,要变成10000,。 代码: #include <iostream> #inc 阅读全文
posted @ 2021-06-06 14:07 OvO1 阅读(82) 评论(0) 推荐(0)
摘要:加了部分博客链接 1.图的存储: 邻接矩阵: g[a][b]存储点a,b间的有关信息(权值或该两点间是否有边)稠密图 邻接表: 类似哈希表的拉链法,每个点都有一个单链表,存储这个点可以走到的点(包括直接走到和间接走到)。 邻接表的结构体实现 struct node{ int value;//存储边的 阅读全文
posted @ 2021-06-05 16:22 OvO1 阅读(56) 评论(0) 推荐(0)
摘要:传送门 #思路: 首先要明确的问题,怎么判断该序列是等差序列: 从小到大排序后,所有的邻项的差值都相等,也就是差值出现了$n-2$次。 所以说,可以枚举删除哪个数,然后$check$是否合法。 为什么可行呢? 因为删除该数的时候影响的只是他的相邻项,可以预处理出邻项的差值,然后每次$O(1)chec 阅读全文
posted @ 2021-06-03 21:12 OvO1 阅读(66) 评论(0) 推荐(0)
摘要:传送门 #题意: 给定一个长度为$n(2<=n<=10^{3}且为偶数)$的序列,每次都可以选择两个下标$i,j$并且$i<j$,进行下面两种操作之一: \(1.\) \(a_{i}=a_{i}+a_{j}\) \(2.a_{j}=a_{j}-a_{i}\) 最多执行$5000$次操作,并且操作后的 阅读全文
posted @ 2021-06-02 23:23 OvO1 阅读(70) 评论(0) 推荐(0)
摘要:传送门 #思路: 枚举每个点作为原点,求最小环长度。 关于求最小环,将spfa算法改为:将与原点所连的所有点放入队列。 输出方案的话,维护前驱数组记录是如何转移的。 推荐一篇很好的博客 #代码: #include <iostream> #include <algorithm> #include <c 阅读全文
posted @ 2021-06-01 21:43 OvO1 阅读(84) 评论(0) 推荐(0)
摘要:di #思路: ##Step1: 首先考虑一下简化版本:如果是在一个链上,如何放置权值使得题意中求的和最大。 记$left[i]$表示$i$左边的点数,$right[i]$表示$i$右边的点数。 1.最开始链上没有放置任何权值,$mex$为0,当前的答案为$0$。 2.第一步将权值$0$赋值给边$( 阅读全文
posted @ 2021-06-01 20:40 OvO1 阅读(57) 评论(0) 推荐(0)
摘要:传送门 #思路 点的排列是开始密集,越来越稀疏。 贪心的考虑,先去密集的地方取数据点更优。 如果取完了密集地方的数据点,也还是要取稀疏的地方取。 由于实际在时间$t$范围内可达的点大约只有70个,可以枚举这些点作为中间点。 第一步:从起点到达中间点; 第二步:从中间点往密集的地方走,即下标小的地方; 阅读全文
posted @ 2021-06-01 17:45 OvO1 阅读(90) 评论(0) 推荐(0)
摘要:原题链接 #思路 由于只有两列,所以一个点会变成障碍的条件是他旁边的三个点都无法通行。 比如假设$(1,2)$变成岩浆: 如果$(1,1)$是岩浆,无法通行; 如果$(1,2)$是岩浆,无法通行; 如果$(1,3)$是岩浆,无法通行; 记录障碍物的个数,如果为$0$的话可以通行。 每次通过给定点周围 阅读全文
posted @ 2021-06-01 14:02 OvO1 阅读(51) 评论(0) 推荐(0)