![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
2020暑假比赛
Cichard
这个作者很懒,什么都没留下…
展开
-
牛客多校第八场K 贪心+int128
Kabaleo Lite题意:给你n种菜的利润和n种菜的数量,且招待客人的话一定要从第一盘开始顺序选择,不能跳过任意一盘菜,问你最多能招待多少个客人,然后在招待相同的客人的情况下利润如何才能最高思路:首先题目求的是招待最多的客人,而且还是只能从第一盘开始招待,所以显而易见的是最多能招待的客人为第一盘菜的数量,然后在招待相同客人的情况下,进行贪心,从前往后,首先维护利润的前缀和,菜的数量前面的一定大于等于后面的,所以可以从大到小进行贪心,具体实现可看代码,sort一边,然后定义最小的位置,即这个位置之后的原创 2020-08-04 19:12:57 · 148 阅读 · 0 评论 -
牛客多校第八场I题 并查集
Interesting Computer Game题意:给你n对数,然后每对数只能挑一个数,并且如果这个数在前面被挑过了,那么就不能被挑选,问最多能挑多少个数思路:我一开始想到的是拓扑排序,毕竟之前正好刷过这样类似的几道题,然并软,我就是没有做出来。先说一下并查集的思路把。先说一下建图把,虽然说挺简单的,先对我们得到的数进行离散化,因为数有可能为1e9,这超出我们能开的数组的范围,而实际上题目最多能给我们2e5个不同的数,然后就是简单的建图了,每个数为一个节点,边即为每对出现就相连。首先要知道这样原创 2020-08-04 18:53:21 · 192 阅读 · 0 评论 -
牛客第八场G 暴力
题意:给你n行字符串,其中每行字符串分为四个单词,让你选择其中的三行,这三行要符合对于同一列的单词要么都一样要么都不一样,其中‘*’可以表示任何单词,打印出你选择的行,如果没有则打印-1思路:纯暴力,这题难点我觉得是在输入上,毕竟没其他的了。对于输入的字符串的单词用map记录以下,然后得到id,或者hash也行,单纯的觉得map更方便一点,然后对 “ * ”区别对待就行,然后判断,三层for,如果你选的这三行其中有一个‘ * ’ 号那么就能过,其他的要么全部相等要么全不相等。判断以下就行。#includ原创 2020-08-04 14:28:02 · 95 阅读 · 0 评论 -
牛客暑假第六场 K-bag 差分+思维
题意:给你一段长度为n的序列判断是否为K-bag的子序列,定义K-bag为k个数的全排列思路:这题的思路有很多,有hash+map,有dp,也有差分。说一下差分把,首先对与这段序列,有开头一定在1~min(k,n)之间,用一个数组维护这段区间,如果这个数组t[i]的前缀和等于0,那么就表示这个位置可以作为开头,反之则不能,基于这个结论,对两个相同的数字之间的的距离进行分类,如果两个数字之间的距离>=k,即表示1~k都是可以作为开头的,如果小于k,那么就表示这个区间必有一个位置为开头给这个区间全部+1原创 2020-07-31 19:19:08 · 117 阅读 · 0 评论 -
牛客暑假多校2020第四场H题, 思维题
https://ac.nowcoder.com/acm/contest/5669/HH-Harder Gcd Problem题意:在1~n中选出2*m个数,排成两列数组长度p,q分别为m,且gcd(p,q)>1,问m最大为多少,且打印出你的两列数组思路:先用素数筛法,从小到大把2~n的数存放进一个二维数组,其中每一列的开头为素数,之后的以为为这个素数的倍数,而且整个二维数组没有重复的数,这里要进行一个记录。然后从大到小对这些筛选出来的数进行挑出,如果长度为偶数,那么直接筛出,如果长度为奇数,那么原创 2020-07-20 19:18:43 · 197 阅读 · 0 评论 -
华东月赛 E题,思维题
https://acm.ecnu.edu.cn/contest/292/problem/E/E-因数串题意:给定一个数n为几个素数的几次方,你要找到一个序列,使得不重复的输出数n的所有约数,同时这个序列的约束是a[i]要从a[i-1]乘上或除以某个素数,输出这个序列思路:找规律,不想说啥 从第一个素数的个数先全部乘上,然后乘上另一个素数的一次方,然后出去这个之前素数的,具体看图把#include <cstdio>#include <iostream>#include &原创 2020-07-26 14:53:36 · 196 阅读 · 1 评论 -
2020牛客第五场E题 lcm+大数模板+一点点思维
E题题意:给你一段序列p[i],然后让你在1~n的序列中任意挑出一组使得a[i],使得经过有限次的循环后令a数组变为严格递增的数组,同时有限次的循环指的是创建一个辅助数组b,另b=a,然后a[i]=b[p[i]],也就是一步一步进行置换,然后最后得到的数组要是1到n,问你最多有多少个这样的数组a。思路:思维很简单,因为你选择的a无论如何都会变成1234…n,所以可以设你第一个选择的数组就是123…n,然后对这个数组进行循环,可以肯定,经过有限次的循环之后,这个数组有会变成123…n,同时这个循环所有经过原创 2020-07-26 15:10:18 · 158 阅读 · 0 评论