摘要:
https://ac.nowcoder.com/acm/contest/3005/C 题意 给出一个长度为 n 的数列 a1,a2,…,an,求其长度为 k 的连续子段的乘积对 998244353 取模余数的最大值。 题解 尺取法。 代码 #include<bits/stdc++.h> using 阅读全文
摘要:
https://ac.nowcoder.com/acm/contest/3003/H 题意 有 n 个元素( 编号 1..n ),第 i 个元素的能量值为 ai。 选择至少 k 个元素来施放一次魔法,魔法消耗的魔力是这些元素能量值的极差。形式化地,若所用元素编号集合为 S,则消耗的魔力为 maxi 阅读全文
摘要:
https://ac.nowcoder.com/acm/contest/3002/C 题意 在一个无限大的平面中,一个人站在 这个坐标。 有 n 个靶子,第 i 个靶子的坐标是 在 x 轴或 y 轴上放置一块挡板来挡住弓箭的轨迹,使可以射中的靶子数量不超过 k 个,挡板的最短长度是多少? 注: 弓箭 阅读全文
摘要:
https://ac.nowcoder.com/acm/contest/3002/F 题意 这个树有 个顶点, 条边。每个顶点被染成了白色或者黑色。 取两个不同的点,它们的简单路径上有且仅有一个黑色点的取法有多少? 注: ①树上两点简单路径指连接两点的最短路。 ② 和 的取法视为同一种。 题解 并查 阅读全文
摘要:
https://ac.nowcoder.com/acm/contest/3002/H 题意 对于一个 “01” 串而言,每次操作可以把 0 字符改为 1 字符,或者把 1 字符改为 0 字符。所谓 “01” 串,即只含字符 0 和字符 1 的字符串。 最多有 次操作的机会。在操作之后找出一个尽可能长 阅读全文
摘要:
https://ac.nowcoder.com/acm/contest/3002/A 题意 满足以下三个条件的三角形是“好三角形”。 1.三角形的三个顶点均为格点,即横坐标和纵坐标均为整数。 2.三角形的面积为 。 3.三角形至少有一条边和 轴或 轴平行。 在平面中选取一个大小为 的矩形格点阵,可以 阅读全文
摘要:
题解 看完这题,直接来一套最短路。这次WA了,淦。 因为这道题路径的选择条件为:第一标尺是距离短优先,第二标尺是从管理中心带出去的自行车少的优先,第三标尺是从站点带回去的自行车少的优先。 只用最短路算法解决这道题的话,第二标尺和第三标尺不能被正确维护,因为最短路算法的特点,会出现改变其他站点的自行车 阅读全文
摘要:
题目链接 Tarjan #include<bits/stdc++.h> using namespace std; const int maxn=5e6+5; struct node { int v,index,next; node(){} node(int a,int b,int c) { inde 阅读全文
摘要:
定义 给定一棵有根树,若结点 z 既是结点 x 的祖先,也是结点 y 的祖先,则称 z 是x,y的公共祖先。 在 x,y 的所有公共祖先中,深度最大的一个称为 x,y 的最近公共祖先,记为LCA(x,y)。 LCA(4 , 7) = 2,LCA(6,7) = 5 实现 暴力大法好 若求LCA(4 , 阅读全文
摘要:
题解 题不难,记录一下红黑树特征。 👉 每个结点是黑色或者红色。 👉 根结点是黑色。 👉 每个叶子结点(NULL)是黑色。 👉 如果一个结点是红色的,则它的子结点必须是黑色的。 👉 每个结点到叶子结点所经过的黑色结点的个数相同。 代码 #include<bits/stdc++.h> usi 阅读全文
摘要:
题解 DFS。比较巧的一点是,利用 map <int , int> = line 存储。比如一号线上有两个相邻的站点 pre,end,那么就可以这样存储 map[pre*10000 + end] = map[end*10000 + pre] = 1,表示从 pre 到 end 和 end 到 pre 阅读全文
摘要:
问题代码 #include<bits/stdc++.h> using namespace std; int main() { string s="a"; printf("%d\n",s.size()-5); cout<<s.size()-5<<endl; for(int i=0;i<=s.size( 阅读全文
摘要:
题解 利用前缀和维护钻石的价值,然后枚举左端点,二分查找右端点。 代码 #include<bits/stdc++.h> using namespace std; int n,m,pre_sum[100005]; vector<int> ans; void check(int i,int &j,int 阅读全文
摘要:
题解 排队模拟。需要注意的是,如果一个人在17:00及以后还没有开始服务,这种情况才输出“Sorry”。一个人在17:00之前已经开始了服务,就算结束服务在17:00之后,这样也是没问题的。 代码 #include<bits/stdc++.h> using namespace std; const 阅读全文
摘要:
题解 now - 当前位的数值 left - 在now左边的所有数字 right - 在now右边的所有数字 mul - right的数量级,如 10,100,100 ① 如果 now == 0 ,当now可以为1时,左边的数值必须为(0 ~ (left-1)),右边的数值可以是 0 ~ 999… 阅读全文