title: 牛客多校补题3 author: Sun-Wind date: July 26, 2022 J 思路 模拟+搜索,比赛的时候就一个细节写错了 #include <bits/stdc++.h> #define int long long #define endl '\n' using namespace std; const int N = 5e5 + 10, mod = 1e9 + 7, INF = 0x3f3f3f3f3f3f3f3f; int
N-Particle Arts 题意 有n个粒子,第i个粒子有\(a_i\)的能量。粒子之间不停的碰撞,当两个分别具有能量a,b的两个粒子相撞之后这两个粒子会消失,同时产生两个能量分别为a&b,a|b,的粒子。当这些粒子的状态稳定之后求它的能量的方差是多少。(稳定是指方差不再改变) 数据范围 \(1 <= n <= 1
比赛链接: https://ac.nowcoder.com/acm/contest/33188 A.Ancestor 题意: 已知两棵有 \(n\) 个节点的树 \(A\) 和 \(B\),每个节点都有自己对应的权重,有一个长为 \(k\) 的序列 \(x\),表示树中的关键节点,第 \(i\) 轮删除 \(x_i\) 这个关键节点,问 \(A\) 树中剩余关键节点的最近公共祖先的
题目链接 题目 给定两个整数 l 和 r ,对于所有满足1 ≤ l ≤ x ≤ r ≤ 10^9 的 x ,把 x 的所有约数全部写下来。对于每个写下来的数,只保留最高位的那个数码。求1~9每个数码出现的次数。 思路 显然数论分块 然后统计一下每一块内1到9出现的情况乘上 \(n/l\) 即可 Code // Problem:
比赛链接: https://ac.nowcoder.com/acm/contest/33187 G.Link with Monotonic Subsequence 题意: 构造一个排列,让 \(max(lis(p), lds(p))\) 最小。 思路: 根据 \(Dilworth\) 定理,最小上升子序列长度为 \(\lceil \sqrt{n} \rceil\),所以构造每组长度都是 <= $ \lceil \sqrt{n} \rceil$
题目地址 题目 思路 以下分数皆表示整除 \[\Large\max(n\bmod i)\\\Large=\max(n-\frac n i\times i)\\\Large=n+\max(-\frac n i\times i)\\\Large=n-\min(\frac n i \times i) \]显然,当 \(\frac n i\) 一定时,\(i\) 越小越好,所以可以把每个 \(\frac n i\) 求出来,然后数列分块取
比赛链接 A 题解 知识点:贪心。 将区间按左端点排序,合并区间,记录所有区间之间断开的长度即可。 时间复杂度 O(nlogn)O(nlogn) 空间复杂度 O(n)O(n) 代码 #include <bits/stdc++.h> #define ll long long using namespace std; struct n
一共有n个物品, 第i个物品的体积为v[i]; 有一个背包容量为m,现在我要挑选一些物品放入这个背包 我现在知道在总体积不超过背包容量的情况下,他一共有多少种放法(总体积为0也算一种放法)。 输入 3 10 1 2 4 输出 8 #include<bits/stdc++.h> using namespace std; typedef long lo
title: 牛客多校补题 author: Sun-Wind date: July 22, 2022 C 思路 几何 + 枚举 首先通过画图我们可以知道,同一行上覆盖最多的点由该行第一个被占据的座位决定,所以要预处理出每一行最靠近黑板的点 由询问数量可以知道,对于每次询问需要用O(n)的时间解决 分两个区域解决,第一次
这题主要学习两点,一个是LCA具有可加性,这个在做题的时候考虑到了; 另一个是对于在一个具备可加性的点集中去除一个点再看剩下点的影响,可以考虑预处理出前缀和以及后缀和,然后枚举删掉的节点进行计算。rainy说这是非常常见的套路。 1 #include "bits/stdc++.h" 2 using namespace s
链接 \(A:Ancestor\) 预处理出 \(A,B\) 上关键点的前缀 \(lca\) 和后缀 \(lca\) ,枚举删除的点求即可。 #pragma GCC optimize(3) #include<bits/stdc++.h> #define IL inline #define LL long long using namespace std; const int N=2e5+3; struct hh{ int to,nxt; }; int n,k,n
比赛链接 G 题解 知识点:思维。 \(lds(p)\) 表示最小上升子序列分划数 (Dilworth 定理) \(lis(p)\cdot lds(p) \geq n \Rightarrow max \{lds(p), lis(p)\} \geq \lceil \sqrt n \rceil\) 因此将排列构造多个长度为 \(\lceil \sqrt n \rceil\) 递增串,并且递增串的最大值一定递减,形
比赛链接 A 题解 知识点:贪心。 将区间按左端点排序,合并区间,记录所有区间之间断开的长度即可。 时间复杂度 \(O(n\log n)\) 空间复杂度 \(O(n)\) 代码 #include <bits/stdc++.h> #define ll long long using namespace std; struct node { ll l, r; }a[200007]; int main()
题目传送门:https://ac.nowcoder.com/acm/contest/33188/A 题意: • 给出两棵编号 1-n 的树 A B , A B 树上每个节点均有一个权值,给出 k 个关键点的编号,问有多 少种方案使得去掉恰好一个关键点使得剩余关键点在树 A 上 LCA 的权值大于树 B 上 LCA 的权值。 思路:预处理出关键点序列的
链接 \(C:Link with Nim Game\) 判断必胜态还是必败态很明显直接求异或和就好了。 异或和为 \(0\) ,则为必败态,我们肯定是希望尽量一次每人取一个石子。 存在这种方案吗?我们可以找到 \(lowbit\) 最小的那堆石子取一个,这样对方肯定也只能从 \(lowbit\) 相等的那堆石子中取一个。 存
2022 牛客多校第二场题解+补充 《关于我和我的队友没有人会博弈和计算几何这档事》 《关于我数据结构已经写不动了这档事》 A Falfa with Polygon 以为是计算几何,结果是 dp。我用的是随机化。 考虑 \(f(s,i,j)\) 表示从 \(s\) 开始走了 \(i\) 条边现在在 \(j\) 点,那么 \[f(s,i,j)=
A B C D E F G H I J K L M 总题数 通过题数 ! ! O O ! O 12 3 Ø Ø O Ø Ø O Ø O 12 ? 赛后总结 G 证明见《离散数学》鸽巢原理 思想是分成\(\sqrt (n)\)个长度不超过\(\sqrt (n)\)的单增子序列,每个子序列按第一位数,从大到小排列 #include<cstdio> #i
先不补题了,因为要给萌新联赛出题。。。 牛客多校 2022牛客暑期多校训练营1 2022牛客暑期多校训练营2 杭电多校
打的特别自闭,特别是最后太阳穴很疼,滚去睡觉了。唯一的贡献是J题。 ABCDEFGHIJKL J题一眼看去就是最小二乘法,百度找了个公式套上去过了。 #include<bits/stdc++.h> using namespace std; typedef long long ll; ll read() { ll x;scanf("%lld",&x);return x; } double
ABCDEFGHIJK A是一个贪心,首先发电站和电塔其实本质上是差不多的,问题转化成n个区间覆盖问题,不相邻的区间用电线连一连的问题,sort后On的扫一遍,计算答案即可。 #include<bits/stdc++.h> using namespace std; typedef long long ll; int read() { int x;scanf("%d",&
一.本周学习进度 1.本周复习了背包模型+单调队列优化DP 2.打了两场牛客 3.打了一把Atcoder+两把cf 二.本周cf和atcoder情况 1.Atcoder261 2.cf809div2 3.cfedu132 三.下周学习计划 1.开始狂刷DP章节 2.尽量多补一
文章目录 数据表介绍1: 练习1:入门(简单) 数据表介绍2: 练习2:入门(基础) 入门(文本) 数据表介绍1: 用户信息表:user_profile其中device_id指终端编号(每个用户有唯一的一个终端),gender指性别,age指年龄,university指用户所在的学校,gpa是该用户平均学分绩点,active_days_within_30
https://ac.nowcoder.com/acm/contest/33186/I 题意 日本麻将有34种牌,每种4张。给你13张牌,其中每种牌最多两张,最少0张。 一轮操作定义如下: 1.从剩余牌堆中任意抽取一张,现在共14张 2.如果刚好凑成7对牌,则结束游戏 3.从手牌中丢弃一张牌,继续下一轮。 一名玩家进行游戏,问:游戏的期望轮
链接 \(A : Villages: Landlines\) 做法一:将有交集的两个区间合并(显然若一个区间被覆盖可只建电塔使另一个区间被覆盖),两两相邻区间的最短距离的和即为最小值。 做法二:按发电站的位置向左右遍历,对于左边,按建筑区间的最右端位置排序,记录目前电力能到达的最左端,贪心更新,对于右边同理
2022牛客暑期多校第一场 I. Chiitoitsu 题意 日本麻将共有 \(34\) 种牌,每种牌各 \(4\) 张,共 \(136\) 张牌,给定一开始手上的 \(13\) 张牌,剩下的 \(123\) 张牌在牌堆中,每次随机从牌堆摸 \(1\) 张,摸完后若手上的 \(14\) 张牌是 \(7\) 对互不相同的对子,则游戏结束,否则需要在 \(14\) 张