摘要:
#代码: #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 阅读全文
摘要:
link #思路: 经典套路,通过dfs序将树上修改转化为线性修改,这样问题就转化为了单点修改,区间查询,用树状数组维护。 类似题 #代码: #pragma GCC optimize(2) #include<bits/stdc++.h> using namespace std; typedef lo 阅读全文
摘要:
link #思路: 良心题解 首先,$O(n^{2})$的算法并不难想,也很容易就想到先排序后对每个奶牛都计算贡献。这样会有一个问题就是计算$dis$时要取绝对值,但是排序后每只奶牛跟前面奶牛的$x$坐标的大小关系是不确定的,所以计算贡献的方法也是不一样的,如何合并起来算的话是不正确的。 考虑怎么解 阅读全文
摘要:
#思路: 由于矩阵只由$0,1$组成,所以最后的值由改变次数决定。 用二维树状数组维护改变次数,区间修改单点求值。 #代码: #pragma GCC optimize(2) #include<bits/stdc++.h> using namespace std; typedef long long 阅读全文
摘要:
#代码: #include <iostream> #include <cstring> #include <algorithm> #include <vector> using namespace std; typedef long long LL; const int N = 1e5+10; LL 阅读全文
摘要:
link #思路: 数据范围是$1e5$. 先回想数据范围为$1e3$的做法: $dp[i]$表示以第i个数为结尾的最大上升子序列和,转移就是$dp[i]=max(dp[j]+w[i]),1<=j<i$ 时间复杂度$O(n^{2})$ 这题显然过不去,考虑用数据结构优化。 每次转移过来的都是前缀的最 阅读全文
摘要:
问题 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 阅读全文
摘要:
问题 J: 自由世界 时间限制: 5 Sec 内存限制: 128 MB 题目描述 牛牛最近在玩某款游戏,其地图不能看成一个平面直角坐标系,而类似于一张无向图。 地图上存在n个小镇,小镇从1到n编号。有m条道路连接两个小镇,每条道路有其长度wi。 牛牛在k个小镇建立了传送门,也就是说,牛牛可以在任何时 阅读全文
摘要:
牛牛最近在玩某款游戏,其地图可以看成一个平面直角坐标系。 地图上存在n个小镇,小镇从1到n编号。第i个小镇的坐标为(xi,yi)。定义两个小镇的距离为曼哈顿距离,比如小镇i到小镇j的距离为|xi−xj|+|yi−yj|,其中,|a|表示取a的绝对值。 牛牛在m个小镇建立了传送门,也就是说,牛牛可以在 阅读全文
摘要:
题目链接 #思路: 将相交或相切的用并查集维护起来,最后看上表面跟下表面能否在同一个连通块。 #代码: #include <iostream> #include <algorithm> #include <cstdio> #include <cstring> #include <cmath> #in 阅读全文