
牛客
邵光亮
要为自己喜欢的事情不留余力
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
2020牛客暑期多校训练营(第十场)
A Permutation题意;给一个质数 ppp,求一个 111 ~ p−1p-1p−1的排列,满足 xi+1≡2xi(modp)x_{i+1}≡2x_i( mod p)xi+1≡2xi(modp) ororor xi+1≡3xi(modp)x_{i+1}≡3x_i(mod p)xi+1≡3xi(modp)。从 111 开始选,能选 222 的倍数就选 2∗x%p2∗x\%p2∗x%p,能选 333 的倍数就选 3∗x%p3∗x\%p3∗x%p,不能选就输出 −1−1−1 就行。AC代码原创 2020-08-15 10:56:02 · 140789 阅读 · 0 评论 -
2020牛客暑期多校训练营(第八场)
G Game SET题意:一套牌有四种属性,每种属性都有三种特征,shapes(one,two,orthree)shapes (one, two, or three)shapes(one,two,orthree), shape(diamond,squiggle,oroval)shape (diamond, squiggle, or oval)shape(diamond,squiggle,oroval), shading(solid,striped,oropen)shading (solid, strip原创 2020-08-04 18:21:59 · 140184 阅读 · 0 评论 -
2020牛客暑期多校训练营(第七场)
B Mask Allocation题意:就是将 n∗mn∗mn∗m 个口罩分成 kkk 份,使得可以从中挑出 nnn 组,每组口罩数一样多;也可以从中挑出 mmm 组,每组口罩一样多,最后输出的字典序要最大。AC代码:const int N = 1e5 + 10;const ll mod = 1e9 + 7;int a[N];int main(){ int T; sd(T); while (T--) { int n, m; sdd(n, m); int cnt = 0;原创 2020-08-02 11:04:49 · 140144 阅读 · 0 评论 -
2020牛客暑期多校训练营(第六场)
B Binary Vector题意:随机生成 nnn 个 0,10,10,1 向量,使这 nnn 个为一组,求这 nnn 个向量独立的概率。f(1)f(1)f(1) 的时候:可以选择 0,10 ,10,1两种,只有 111 符合,000 和任何向量都不线性无关。所以 f(1)=12f(1)=\frac{1}{2}f(1)=21f(2)f(2)f(2) 的时候:有0,00,00,0010 1011,01,01,01,11,11,101,10,1101 ,10 ,1101,10,11三原创 2020-07-28 22:21:07 · 140052 阅读 · 0 评论 -
2020年7月27日总结
这几场比赛打下来,发现自己之前的部分模板都不能用了,不知道是数据卡的紧了,还是之前没有整理好,然后又重新整理了一遍,和队友商量了一下做题的策略,我负责快速签到,然后把铜牌题做出来,CDXCDXCDX 在看到大概的过题数后,去做银牌题,这样争取在最短的时间内做出来更多的题,最近这两场牛客就是没有把时间最大化的利用起来,导致最后思路出来了,没能写出来,最后的题写出来了可能就能进榜单第一页。...原创 2020-07-27 17:58:11 · 139751 阅读 · 0 评论 -
2020牛客暑期多校训练营(第五场)
D Drop Voicing(dp)题意:有一个 1 n1~n1 n 的排列,有以下两种操作:Drop−2Drop-2Drop−2:将倒数第二个数放到开头,前面的数向后平移InvertInvertInvert:将倒数第二个数放到开头,前面的数向后平移若干连续的 Drop−2Drop-2Drop−2 称为 Multi−dropMulti-dropMulti−drop。计算要使该排列排成 1 n1~n1 n 所需的最少的 Multi−dropMulti-dr原创 2020-07-26 19:23:31 · 139609 阅读 · 0 评论 -
2020牛客暑期多校训练营(第四场)
B Basic Gcd Problem题意:给出 n,cn,cn,c 让你求出那个函数的值。举个例子:n=6,c=3n=6,c=3n=6,c=3f3(5)=max{3∗f3(cd(1,6)),3∗f3(gcd(2,6)),3∗f3(cd(3,6)),3∗f3(cd(4,6)),3∗f3(cd(5,6))}f_3(5)=max\{3*f_3(cd(1,6)),3*f_3(gcd(2,6)),3*f_3(cd(3,6)),3*f_3(cd(4,6)),3*f_3(cd(5,6))\}f3(5)=ma原创 2020-07-21 17:29:34 · 139146 阅读 · 0 评论 -
2020牛客暑期多校训练营(第三场)
A Clam and Fish(贪心)题意:000 阶段是没有鱼也没有蛤111 阶段是没有鱼有蛤222 阶段是有鱼没有蛤333 阶段是有鱼也有蛤蛤可以制作成鱼饵,来获取鱼,但是在有蛤的时候需要制作成鱼饵在下一阶段才能使用,且直接有鱼的情况下,不需要用鱼饵也可以获取鱼。制作鱼饵和直接钓鱼在一个阶段只能选择一项来进行。求最多可以获得多少条鱼。有鱼的天数就抓一条鱼,光有蛤的时候可以选择这一阶段做鱼饵还是在这一天用鱼饵钓一条鱼。遍历一遍, 000 的时候有鱼饵就用鱼饵钓鱼,2,32,32,3 都是原创 2020-07-19 16:46:29 · 150234 阅读 · 0 评论 -
2020牛客暑期多校训练营(第一场)
A B-Suffix Array题意;将字符串 sss 的每个后缀化成 BBB 数组,然后对 BBB 数组进行字典序排序。那个定义的规则就是找前面和他相同字符的最近距离,否则为 000 。设 cic_ici 相当于后面的最近的与 sis_isi 相同的字符到 iii 的距离。对于不存在这样的 jjj 的 cic_ici,我们要让他比其他 cic_ici 都大,设为 ci=nc_i=nci=n,然后最后再放一个 n+1n+1n+1 在 ccc 的末尾,最后求出 ccc 的后缀数组,去掉最后原创 2020-07-16 10:26:33 · 146743 阅读 · 0 评论 -
2020牛客暑期多校训练营(第二场)
B Boundary题意在平面上给若干个点,求一个过原点的圆,使得尽量多的点在圆上。保证点数不超过 200020002000,坐标绝对值不超过 100001000010000。枚举两个点,与原点三点确定一个圆。求得每个点的圆心位置,用数据结构或排序维护每个圆心的出现次数。AC代码:const int N = 2010;ld x[N], y[N];map<pair<ld, ld>, int> mp;int main(){ int n; sd(n); rep(原创 2020-07-15 10:25:39 · 146344 阅读 · 0 评论 -
牛客算法周周练9 D 石子游戏
题意:nnn 个数字中,其中有 eveneveneven 个偶数。将一个奇数 xxx 分成两个正整数,可以操作 x2\frac{x}{2}2x 次,得到 x2\frac{x}{2}2x 个偶数和 111 个 111,将操作次数计入 cntcntcnt。此时,已操作 cntcntcnt 次,且有 even+cnteven + cnteven+cnt 个偶数,n−evenn - evenn−even 个 111,111 已不可操作。合并 even+cnteven + cnteven+cnt 个偶数.原创 2020-06-07 09:59:21 · 143715 阅读 · 0 评论 -
“科林明伦杯”哈尔滨理工大学第十届程序设计竞赛
A 点对最大值B 减成一每个都先减去最小的那个,然后选择没有变成 000 的区间再都减去这个区间的最小值。这个过程其实就是求每个元素之间的差分和。AC代码;const int N = 1e6 + 50;int n, m;int a[N]; int main(){ int t; sd(t); while (t--) { sd(n); ll ans = 0; rep(i, 1, n) {原创 2020-06-01 16:46:18 · 141567 阅读 · 0 评论 -
牛客练习赛63 C 牛牛的揠苗助长(二分)
二分天数,用一个数字记录如果不施加魔法第 xxx 后每个水稻的高度,然后找到这些水稻的中位数,想要施加魔法的次数最小肯定是都变成中位数的高度,然后判断天数是否够用即可。AC代码:const int N = 2e5 + 10;int n, m, k;ll a[N], b[N];bool check(ll x){ rep(i, 1, n) { b[i] = a[i] + x / n; if (x % n >= i) b[i]++; } sort(b + 1, b + .原创 2020-05-09 10:11:41 · 144776 阅读 · 0 评论 -
牛客练习赛63 B 牛牛的鱼缸
分类讨论即可:AC代码:int main(){ int t; int l, h; int L, H; sdd(h, l); sdd(H, L); double ans, x; x = (H * l * 1.0) / L; if (x <= h) { ans = (h - x) * l * 1.0 + x * l * 0.5; } else { x = (L * h * 1.0) / H; ans = x * h * 0.5; } printf("%.8.原创 2020-05-09 09:17:47 · 144603 阅读 · 0 评论 -
B 病毒扩散(组合数)
题意:先打表找规律,然后就会发现是杨辉三角形。AC代码:const int N = 5010;const int mod = 998244353;int f[N][N] = {0};int n, m;int x, y, t;int main(){ sd(n); f[0][0] = 1; rep(i, 1, 5000) { f[i][0] = 1; rep(j...原创 2020-04-26 18:57:03 · 140115 阅读 · 0 评论 -
NC205213 牛妹的游戏(三元环)
题意:给定 nnn 个点 mmm 无向边,求该图和图的补图是否有度数为 333 的环。拉姆塞结论–点数超过5的图和对应补图必有度数为3的环。那么点数少于6的图直接暴力找环即可。AC代码:const int N = 20;const int mod = 998244353;int n, m;bool vis[N][N];bool flag;int main(){ i...原创 2020-04-26 18:44:06 · 139971 阅读 · 0 评论 -
牛客练习赛60 D 斩杀线计算大师(枚举)
题目描述算术能力是每个炉石玩家必不可少的,假设现在有三种伤害卡,伤害值分别是 a,b,ca,b,ca,b,c。并且每种伤害卡的数量你可以认为是无限的。现在牛牛想知道是否存在一种方式可以刚好造成kkk 点伤害,输出 x,y,zx,y,zx,y,z 分别表示三种伤害卡的使用个数。数据保证一定存在解。如果存在多组解,输出任意一组。输入描述:一行四个整数分别表示 a,b,c,ka,b,c,ka,b...原创 2020-03-28 11:23:31 · 145528 阅读 · 0 评论 -
牛客练习赛60 B 三角形周长和
题目描述给定平面上nn个点的坐标,并且我们定义两个点的距离为曼哈顿距离.曼哈顿距离是指对两个点 (x1,y1),(x2,y2)(x_1,y_1),(x_2,y_2)(x1,y1),(x2,y2) ,他们之间的距离为 ∣x2−x1∣+∣y2−y1∣|x_2 - x_1| + |y_2 - y_1|∣x2−x1∣+∣y2−y1∣ .众所周知三个点可以构成一个三角形,那么 nnn 个...原创 2020-03-28 11:17:34 · 145275 阅读 · 0 评论 -
牛客练习赛60 A 大吉大利(位运算)
题目描述给定 nnn 个整数,依次为 a1,a2,...,ana_1,a_2,...,a_na1,a2,...,an求∑i=1n∑j=1n(ai&aj)\sum_{i = 1}^n\sum_{j = 1}^n(a_i\&a_j)∑i=1n∑j=1n(ai&aj) KaTeX parse error: Expected 'EOF', got '&' ...原创 2020-03-28 11:06:03 · 144976 阅读 · 0 评论