
牛客2021多校
文章平均质量分 57
欧阳小百合
始于足下!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
2021牛客暑假多校9_H.Happy Number
H.Happy Number 题目传送门: 题目传送门 题面: 题目大意: 由2、3、6组成的数叫快乐数,求大小为第n个的快乐数。 思路: 三进制。 代码: #include <bits/stdc++.h> using namespace std; typedef long long ll; int ans[] = {2, 3, 6}; ll sum[] = {0, 3, 12, 39, 120, 363, 1092, 3279, 9840, 29523, 88572, 265719, 797原创 2021-08-18 12:05:59 · 184 阅读 · 0 评论 -
2021牛客暑期多校训练营8_D.OR(赛场上可能出不了,一知半解ing))
D.OR 题目传送门: 题目传送门 题面: 题目大意: 给你n-1个元素的数组b,cb,cb,c b2,b3,b4...bn{b_2,b_3,b_4...b_n}b2,b3,b4...bn以及c2,c3,c4...cn{c_2,c_3,c_4...c_n}c2,c3,c4...cn, 已知bi=ai−1∣aib_i=a_i-_1 | a_ibi=ai−1∣ai,ci=ai−1+aic_i=a_i-_1+a_ici=ai−1+ai。问你能构造出几组这样的数组a? 思路: C原创 2021-08-09 22:34:38 · 199 阅读 · 1 评论 -
2021牛客暑期多校训练营8_A.Ares, Toilet Ares
Ares, Toilet Ares 一道读题题+签到题,我希望下次不会出问题。因为经验问题wa了几发,我一定要吃一堑长一智。 题面: 思路: 写的花里胡哨,意思就是a+∑(zi−yi)/zia+\sum(z_i-y_i)/z_ia+∑(zi−yi)/zi。如果xix_ixi是0的时候不计入sumsumsum。 代码: #include <bits/stdc++.h> using namespace std; typedef long long ll; const int maxn =原创 2021-08-09 20:38:37 · 158 阅读 · 0 评论 -
2021牛客暑期多校训练营8_K.Yet Another Problem About Pi
Yet Another Problem About Pi 题目传送门: 题目传送门 题面: 题目大意: 无限多网格,长宽分别给定为w,dw,dw,d,线的长度是pi,一笔画怎么让这条线经过的网格最多。 思路: 哎,一开始想的就是沿着直线走。 关键点在于长度为无理数,实际上从一个点出发,刚开始就有4个网格可以走到。 那么实际上就是ll ans = 4ll + ll(pi / y) * 2; 但是特殊样例: 2 2 按照以上做法答案是666,但是实际上可以达到777。 通过走斜对角线实现。 将此作为两个操作当原创 2021-08-09 20:31:21 · 147 阅读 · 0 评论 -
2021暑假牛客多校_K.King of Range(双指针尺取)
K.King of Range 题目传送门: 题目传送门 题面: 题目大意: 给出一个大小为 nnn 的序列,找出 max−min>km a x − m i n > kmax−min>k的区间个数。 mmm个询问,对于每个询问给定一个常数kkk,输出区间个数。 思路: 尺取。 代码: #include <bits/stdc++.h> using namespace std; typedef long long ll; const int maxn = 2e7 + 9; in原创 2021-08-04 13:58:31 · 180 阅读 · 0 评论 -
2021暑假牛客5_B.Box
B.Box 题目传送门: 题目传送门 题面: 题目大意: 面前有n个箱子,里面是黑球是白球的概率都一样。知道里面是什么球的方法只有打开它,花费wiw_iwi代价。或者花费C询问获得未打开里面黑球的数量。 问最小代价期望。 思路: 实际上只有两种情况: 询问一次; 不询问。 因为询问一次后可以通过新打开盒子内部情况动态获得当前黑白球剩余数量,所以问了无论何时问都是一样的,所以只有问了和没问区别。 结果取个min就好。 因为开哪个都一样,所以我们选择代价从小到大开。 剩下的就等于一个随机 01 序列从前原创 2021-08-04 12:37:25 · 95 阅读 · 0 评论 -
2021暑假牛客5_J.Jewels
Jewels 题目传送门: 题目传送门。 题面: 题目大意: 捞宝石,代价是x2+y2+z2x^2+y^2+z^2x2+y2+z2,宝石每时每刻都在下沉变成(x,y,z+vt)(x,y,z+vt)(x,y,z+vt)。问一堆宝石,按照某种最优排列捞使得总代价最小。 思路: 一开始在想贪心,觉得每个时刻钻石增加的代价是2vtz+v2t22vtz+v^2t^22vtz+v2t2,但是这个式子有多个变量,实际上代价增长与宝石状态与时刻都有关,尝试对总时间贪心/下一时刻贪心均失败。 实际上是以每一个t都对应了一堆原创 2021-08-04 10:07:09 · 227 阅读 · 0 评论 -
2021牛客多校4_Inverse Pair_树状数组或者归并求逆序对
Inverse Pair 题目传送门: 题目传送门 题面: 题目大意: 给定一个无重复的排列,每个元素可以执行+1的操作或不变,求操作后最少的逆序对对数。 思路: 思考怎么加可以减少逆序对对数,如果x 在 x+1 的后面, 则可以通过操作让逆序对减少。 而且因为是排列,所以不会增加逆序对(+1也最多变得和某个数一样,不会再变大了)。 但是可能后续操作会覆盖之前消除的记录。 如题解。 但实际上也没那么复杂,遇到如果x 在 x+1 的后面,直接全部暴力让x+1,最后再跑一遍看有几个逆序对。 merge_so原创 2021-07-28 15:59:16 · 130 阅读 · 0 评论 -
#2021牛客暑期多校训练营4_C.LCS_构造
LCS 题目传送门: 题目传送门 题面: 题面大意: 给你$a,b,c,n$4个数字,要输出3个字符串,其中第一个和第二个的最长公共子序列为长度为a,第二个和第三个的最长公共子序列为长度为b,第一个和第三个的最长公共子序列为长度为c。 思路: 比较基本的构造题。 容易想到可以对abc进行按照大小重新排序后,选择最小的那个(存到a),给每个字符串都铺上对应数量的‘a’,此时: LCS(s1,s2)=aLCS(s1,s2)=aLCS(s1,s2)=a LCS(s2,s3)=aLCS(s2,s3)=aLCS(s原创 2021-07-27 10:44:35 · 90 阅读 · 0 评论 -
#2021牛客暑假多校3_J.Counting Triangles_正难则反
J.Counting Triangles 题目传送门: J 题面: 一句话: 给一个 n(n<=8000) 个顶点的图,每两个顶点边颜色为黑或白,求三个顶点组成的三角形边颜色相同的个数。 正难则反!!!!!!!! 不要直接求个数,用总数减去不符合条件的个数。 代码: #include <bits/stdc++.h> using namespace std; typedef long long ll; namespace GenHelper { unsigned z1, z2,原创 2021-07-25 16:05:41 · 203 阅读 · 1 评论 -
#2021牛客暑假多校3_E.Math_数论打表
E.Math 题面: 题目大意: 给定nnn的情况下,问你在1≤x≤y≤n1≤x≤y≤n1≤x≤y≤n的范围内,能找到多少组数对(x,y)(x,y)(x,y),使得x2+y2x^2+y^2x2+y2除以x∗y+1x*y+1x∗y+1是一个整数。 输出数量。 题目思路: 先打个表找规律。 #include <bits/stdc++.h> using namespace std; typedef long long ll; int main() { int i=10000; l原创 2021-07-25 15:26:50 · 611 阅读 · 0 评论