集训队 线段 题解p10009

点是否在线段上

几种要考虑的情况 1) 点p和线段断点a, b重叠 2) pa, pb共线, p在线段ab上 3) pa, pb共线, p在线段ab外 4) pa, pb不共线 //点是否在线段上 public static bool IsPointOnSegment(Vector2 p, Vector2 a, V ......
线段

点到线段的距离2

几种要考虑的情况 1) 点和线段两端重叠的情况 2) 点在线段两侧的情况 p在另一侧的情况以此类推 3) 点在线段中间的情况 //点到线段的距离 public static float PointToSegmentDistance2(Vector2 p, Vector2 a, Vector2 b) ......
线段 点到

P9817 题解

这里提供一个非常暴力但是期望复杂度很低的算法。 不难想到要么就是全部放 \(1\),要么就是取出一个最大的质数,然后对于剩下的部分继续按照这样的策略求答案。 因为质数间隔不大,然后暴力判断质数复杂度是 \(O(\sqrt n)\) 的,再加上 IOI 的 buff,我们可以直接考虑从大到小枚举质数, ......
题解 P9817 9817

[ARC104F] Visibility Sequence 题解

题意 对于一个长度为 \(N\) 的序列 \(H\),可以通过如下方式构造一个序列 \(P\): 若存在 \(j \in \left[1, i\right)\),使得 \(H_j > H_i\),则 \(P_i = \max\limits_{j \in \left[1, i\right) \land ......
题解 Visibility Sequence 104F ARC

树状数组用线段树来写

#include<bits/stdc++.h>#define int long longusing namespace std;const int N=5e5+10;int a[N],tag[N<<2];struct{ struct{ int l,r,sum; }tr[N<<2]; void pus ......
线段 数组

CF1866M Mighty Rock Tower 题解

Problem - 1866M - Codeforces Mighty Rock Tower - 洛谷 先考虑一个 \(O(n^2)\) 的 dp 设计状态: \(dp_i\) 表示搭 \(i\) 层的期望 转移:\(dp_i=dp_{i-1}\times(1-P_i)+\sum\limits_{j ......
题解 Mighty 1866M Tower 1866

[ARC104E] Random LIS 题解

题意 给定一个长度为 \(N\) 的序列 \(A\),按照下列方式生成一个长度为 \(N\) 的序列 \(X\): \(\forall i\in[1,n]\),\(X_i\) 在 \([1,A_i]\) 中的整数中均匀随机生成。 求其最长上升子序列长度的期望,对 \(10^9+7\) 取模。 \(1 ......
题解 Random 104E ARC 104

【数据结构】线段树解决历史问题

无区间最值操作 这里讲两种简易方法: 1.矩阵 考虑线段树的 \(tag\) 必须要有结合律,几个值互相更新,考虑矩阵乘法去实现这个操作。 例题 支持区间加,查询区间和,区间历史版本和。 考虑记一个点的状态为: \[\begin{bmatrix} his\\ sum\\ len \end{bmatr ......
线段 数据结构 结构 数据 问题

[ARC098F] Donation 题解

[ARC098F] Donation 题解 题目描述 给定一张 \(n\) 点,\(m\) 边的无向图,到达一个点需要拥有 \(a_i\) 的权值,对于一个点操作需要消耗 \(b_i\) 的权值,询问最少需要多少权值才能够对每个点都进行一次操作(权值在任何时候都不能小于 \(0\))。 题目分析 提 ......
题解 Donation 098F ARC 098

CF1245D Shichikuji and Power Grid 题解

Problem - D - Codeforces Shichikuji and Power Grid - 洛谷 首先这题显然不可能是 dp 我们发现第二个式子是困难的,但题目竟然给 \(n \leq 2000\) ,因此我们考虑抽象建图。我们把两个点的贡献两两建成一张图,最终的答案显然是把这个图划分 ......
题解 Shichikuji 1245D Power 1245

CSP-S2023 全场题解

lock 这题就是个模拟吧,赛时被迷惑了以为是什么不可做题,仔细看只有 \(10^5\) 种状态,那就枚举好了。 我们分别从状态串出发,枚举它能达到的答案,加到 set 取个并集,不过注意给定的状态不能是密码,要减掉。注意不要直接计数器减减,不然如果有相同的算在状态里面的会多减,我考场代码就这么被 ......
题解 全场 CSP-S 2023 CSP

NOIP 提高组 题解

NOIST2023 涂色游戏 对于每一行每一列记录一个时间戳,对于每个格子颜色即为时间戳较大的颜色。 幂次 考虑暴力,我们发现 \(O(\sqrt[3]{n})\) 的复杂度是可以接受的,所以可以枚举 \(\sqrt[3]{n}\) 内的数然后暴力往上乘,可以用一个 unordered_map 判重 ......
题解 NOIP

Go语言Golang DevOps运维开发实战集训营,高级运维必修

Go语言Golang DevOps运维开发实战集训营,高级运维必修 Go语言简介 Go语言,也称为Golang,是一门由Google开发的开源编程语言。它的设计目标是提供一种高效、简洁、安全且支持并发的编程语言,适用于构建可靠且高性能的软件系统。Go语言在短短的时间内迅速走红,成为开发者们喜爱的选择 ......
实战 语言 Golang DevOps

算法学习笔记(33): 矩阵乘法与线段树标记

矩阵乘法与线段树标记 让我们回归本质,将一切线性操作归为矩阵。 目录矩阵乘法与线段树标记线段树区间加线段树历史版本和线段树历史版本最大/最小值线段树区间取 \(\min\) 与历史版本最大NOIP2022 比赛优化标记常数关于向量构造的一些小技巧作者有话说 线段树的懒标记是非常普遍且巧妙的,但是对于 ......
线段 乘法 矩阵 算法 标记

CF827D Best Edge Weight 题解

Problem - 1867D - Codeforces Cyclic Operations - 洛谷 差一点就想出来了 首先 \(b_i\) 构建出来的肯定是一个章鱼森林,而且手玩一下样例就会发现我们每次要找到一个大小为 \(K\) 的环后让里面的点重新指向,一直重复这些操作直到所有点都被找到。 ......
题解 Weight 827D Best Edge

P2251 质量检测(分块线段树RMQ单调队列)

P2251 质量检测 正解应该是ST表和单调队列,不过对于这道题来说只有查询没有修改,这里我还是想用线段树和分块来写,不得不说分块是真好,优雅的暴力 线段树版本: #include <bits/stdc++.h> #define LL long long using namespace std; c ......
线段 队列 质量检测 质量 P2251

线段与圆是否相交

一个点在圆内 两个点都在圆内 两个点都在圆外 public static bool IsSegmentCircleIntersect(Vector2 p1, Vector2 p2, Vector2 center, float r) { float sqrR = r * r; //1) 一个点在圆内, ......
线段

点是否在线段两侧

不在两侧时 在两侧时 //点是否在线段两侧 public static bool IsPointSideOfLine(Vector2 p, Vector2 a, Vector2 b) { var ap = p - a; var ab = b - a; if (Vector2.Dot(ap, ab) ......
线段

[ARC104B] DNA Sequence 题解

题意 对于一个只含有 A,C,T,G 的字符串 \(s\), 定义其为匹配的当且仅当其中 A 的数量和 T 的数量相等,C 的数量和 G 的数量相等。 给定一个长度为 \(N\) 的字符串 \(S\),求其有多少个非空子串是匹配的。 \(1 \le N \le 5000\)。 题解 \(\mathc ......
题解 Sequence 104B ARC 104

[ARC104C] Fair Elevator 题解

题意 有 \(N\) 个区间 \([a_i,b_i](a_i<b_i)\),都是 \([1,2n]\) 内的整数且互不相同(\(a_i\ne b_j,a_i\ne a_j,b_i\ne b_j\))。 现在给定一些 \(a\) 和 \(b\) 的值,剩下不知道的用 \(-1\) 表示。问是否存在一种 ......
题解 Elevator 104C Fair ARC

[ARC104D] Multiset Mean 题解

题意 给定 \(N,K\) 和 \(M\)。对于每个大小在 \([1,N]\) 中的 \(x\),求每个元素大小在 \([1,N]\) 中,平均数为 \(x\) 且相同元素不超过 \(K\) 个的可重集的数量,对 \(M\) 取模。 \(1 \le N,K \le 100\),\(M\) 为质数。 ......
题解 Multiset 104D Mean ARC

CF580E Kefa and Watch 题解

花了一个半个下午+半个晚上终于调出来了...... 0. 题面 长度为 \(n\) 的字符串,每个字符是 \(\mathtt{0} \sim \mathtt{9}\) 的数位,\(m + k\) 种操作: 格式为 1 l r c,表示将 \(l \sim r\) 赋值为 \(c\),保证 \(0 \ ......
题解 Watch 580E Kefa 580

题解:USACO23OPEN-Silver

题解:USACO23OPEN-Silver T1 Milk Sum 给定一个长度为 \(N\) 的序列 \(a_1,a_2,...,a_n\),现在给出 \(Q\) 次操作每次将 \(a_x\) 修改为 \(y\) , 每次修改后,求将序列重排后的 \(T\) 的最大值,定义 \(T=\sum_{i ......
题解 OPEN-Silver Silver USACO OPEN

CF773A Success Rate 题解

Success Rate (提供二分做法) 前言 听说是史上最简单蓝题,做了一下。 题意 已知 \(x,y,p,q\),通过只让 \(y\) 加 \(1\) 或 \(x,y\) 同时加 \(1\),使得满足: \[\frac{x'}{y'}=\frac{p}{q} \]思考 目标状态为 \(\fra ......
题解 Success 773A Rate 773

【noip赛前20天冲刺集训 day16】星空遗迹

Description 在石头剪刀布中,一共有三种手势:\(R(Rock), P(Paper), S(Scissors)\),其中 \(R\) 能赢 \(S\),\(S\) 能嬴 \(P\),\(P\) 能赢 \(R\)。 现在,我们定义 \(w(x, y)\) 是 \(x\) 和 \(y\) 中获 ......
遗迹 星空 noip day 16

CF1868B2 Candy Party (Hard Version) 题解

Problem - 1868B2 - Codeforces Candy Party (Hard Version) - 洛谷 相信大家已经看过 Simple Version ,这题和上题不同之处就在于如果 \(b_i = 2^x\) ,他可以被分解成 \(2^x\) 或 \(2^{x+1}-2^x\) ......
题解 Version 1868B Candy Party

CF227A Where do I Turn? 题解

题目大意: \(A\),\(B\) 在一条直线上。\(B\),\(C\) 在一条直线上你从 \(A\) 走到了 \(B\) 去 \(C\),问现在应该是直走、左转、还是右转。 思路: 分类讨论:分别求 \(A\) 到 \(B\),\(B\) 到 \(C\) 是什么方向,然后可得 \(A\) 到 \( ......
题解 Where 227A Turn 227

CF333B题解

分析 发现只能跳 \(n - 1\) 次,所以每个点一定是畅通无阻地抵达终点,所以有障碍的行和列放不了,并且每一个行或列最多放一个。 因为同时跳,思考会不会跳到一起,发现如果不在正中间可以将起点放到另一头就不会跳到一起,如果在正中间就一定会跳到一起,所以正中间的行和列加一起最多只能放一个。 代码 # ......
题解 333B 333 CF

P9740 「KDOI-06-J」ION 比赛 题解

题目 思路: 先计算总分数 \(sum\),\(c_i=\frac{100}{a_i}\) 为每道题的每个测试点分数。 如果总分数达到 \(Au\) 线,直接输出 Already Au. 。 否则计算到达 \(Au\) 线还需多少分 \(p\),遍历所有题,求出每道题的失分,如果失分大于等于 \(p ......
题解 P9740 9740 KDOI ION

CF333A题解

分析 被除数一定,除数越小,商越大,所以选择合法的最小 \(3_{x}\)。 枚举指数即可,复杂度 \(\mathcal{O(\log_{3}w)}\),\(w\) 为值域 \(1e18\),可以通过本题。 代码 #include <iostream> #define int long long u ......
题解 333A 333 CF