牛客NOIP暑期七天营-普及组2D】的更多相关文章

链接:https://ac.nowcoder.com/acm/contest/926/D来源:牛客网 在一维坐标系中,给定 n条有颜色的线段,第 i条线段的左右端点分别为 li​和 ri​,此外它的颜色为 ci​. 给定m个查询,每个查询给定一个区间 [a,b],需要求出这个区间完全包含的线段中有多少种不同颜色的线段. 题解:说是普及组,还是需要一些水平的.简单的版本可以参考:最开始学主席树的时候的题目:SPOJ:D-query这些说起来之前那个题也可以这样做的. 即是离线操作,把询问和线段一起…
A 对于\(100\%\),直接开个桶统计即可.入门题目. 代码:https://ac.nowcoder.com/acm/contest/view-submission?submissionId=41153707&scrollToDetail=1 B 对于\(100\%\),直接按题目模拟就好.每次两个指针扫一下就是\(O(n)\)的了.整个加起来是\(O(\max(n,len)\times m)\)的复杂度.可以结合代码理解. 代码:https://ac.nowcoder.com/acm/co…
牛客NOIP暑期七天营-提高组1 链接 A 边权可为0就排序建一条链子. 但是边权不为0 除了第一个有0的不行. x连向上一个比他小的数. 期间判断有无解. #include <bits/stdc++.h> #define ll long long using namespace std; const int _=2e5+7; int read() { int x=0,f=1;char s=getchar(); for(;s>'9'||s<'0';s=getchar()) if(s…
————提高组———— 第一题:deco的abs 题目链接:https://ac.nowcoder.com/acm/contest/934/A 因为每个数都可以加任意次 d ,所以可以推出 0 <= 相邻两个数的差值的绝对值 < d  ,于是我们先让所有数对d取模 再枚举每个位置 ,用 last 记录上一个数的值 ,然后求 abs(a[now] - last) .abs( a[now] + d - last).abs( a[now] - d, last )即可 下面贴代码: #include…
目录 A-积木大赛 题目描述 link 题解 代码 B-破碎的序列 题目描述 link 题解 C-分班问题 题目描述 link 题解 比赛链接 官方题解 A-积木大赛 题目描述 link 题解 标签:模板题,一点点思维+二维差分+二维前缀和 借这道题机会复习了一下二维差分+二维前缀和这两个东西. 首先题目让我们求总的表面积,实际上可以拆分成两部分:上下表面积+前后左右表面积 1.上下表面积的话,根据俯视图想一想,就是有被积木覆盖额面积\(*2\): 2.前后左右表面积的话,感性理解一下,只要他的…
第一题:破碎的矩阵 题目链接:https://ac.nowcoder.com/acm/contest/932/A    刚看到这题的时候感觉特别熟悉...诶,这不就是codeforces某场比赛的某某题吗?(心里激动了一波)仔细看完题目 才发现这并不是codeforces那道构造题,但是多多少少还是有点类似...那题是问我们矩阵是否可以构造,这题则问的 是最多可以构造几个符合题意的矩阵.    首先要做的和cf那题一样都是先将每行的异或和异或后存于ans1,每列的异或和异或后存于ans2,这样a…
第一题:ACGT 题目链接:https://ac.nowcoder.com/acm/contest/931/A trie树.hash.map遍历  ①.trie树上的节点多记一个rest值表示还有多少个串没被用.枚举所有串, 每次先在trie上跑匹配串,看一看那个点的rest.如果没法匹配的话就往trie里插入原串,把结束节点的rest+1 ②.思路和trie类似.其实就是把trie换成hash.(把在树上跑换成去hash值) ③.将每个序列的个数存下,每次读入时判断对应序列的map的权值是否为…
题意:A班有N个人,B班有M个人,现在要组成一个新的班级C班,为了公平,从AB班各抽相同人数的人. 现在求所有方案中,人数之和是多少. 思路:即求Σ k*C(N,k)*C(M,k);    先忽略这个外层的k,看看两个组合数乘积的和怎么求. 显然Σ C(N,k)*C(M,k)=C(N+M,N);  因为C(N,k)=C(N,N-k): 所以可以看成在N中选N-k个,M中选k个,所以就是一个组合数. 现在看怎么处理这个k. 注意到k*C(N,k)=N*C(N-1,k-1);    就可以搞了: …
A:deco的abs. 水题,先%,然后相邻两个数min()一下差值. #include<bits/stdc++.h> #define ll long long using namespace std; ; ; int a[maxn]; ll ans; int main() { int N,D; scanf("%d%d",&N,&D); ;i<=N;i++) scanf("%d",&a[i]),a[i]%=D; ;i<…
A:hash 或者 map 或者trie. #include<bits/stdc++.h> #define rep(i,a,b) for(int i=a;i<=b;i++) using namespace std; ; map<vector<char>,int>mp; ]; vector<char>S; int main() { ; scanf("%d",&N); rep(i,,N){ scanf("%s"…
https://ac.nowcoder.com/acm/contest/920#question A 构造+双指针 发现m的限制是1e5,而点数是5e4,所以不能构造太多的边,思考一下最短路树的定义.会发现其实就是要构造出一个最短路树.按\(a_i\)升序排序,那么只需要找一个在\(a_i-S\)的点连边即可.这个玩意可以直接用双指针或者二分或者其他什么数据结构来实现.判断无解即判断是否存在大于S的边或者0边.复杂度\(O(n \log n)\) #include <bits/stdc++.h>…
目录 牛客NOIP暑期七天营-提高组3 A-破碎的矩阵 题目描述 link 题解 代码 B-点与面 题目描述 link 题解 代码 C-信息传递 题目描述 link 题解 牛客NOIP暑期七天营-提高组3 比赛链接 官方题解 A-破碎的矩阵 题目描述 link 题解 标签:推结论+快速幂 挺妙的一道题??比赛的时候想到了但不敢确定正确性. 首先很容易想到,对于一个二进制数它的每一位都是独立的.那么下面的结论对于\(x=1\)和\(x=2^{30}-1\)和\(2^{60}-1\)这三组都同样适用…
目录 牛客NOIP暑期七天营-提高组1 A-最短路 题目描述 link 题解 代码 B-最小生成链 题目描述 link 题解 代码 C-最小字典最短路 题目描述 link 题解 Update 牛客NOIP暑期七天营-提高组1 比赛链接 官方题解 A-最短路 题目描述 link 题解 有Special Judge,只要构造一下就好了.一种较简单的构造想法:将每个点按照它离源点的距离排序,你可以想象是一条类似链的东西,但是,又不一定是链,当存在大于等于2个的点离1的距离相同,就会形成分叉.其实就是将…
目录 牛客网NOIP赛前集训营-普及组(第二场) A 你好诶加币 B 最后一次 C 选择颜色 D 合法括号序列 牛客网NOIP赛前集训营-提高组(第二场) A 方差 B 分糖果 C 集合划分 牛客网NOIP赛前集训营-普及组(第二场) 题目链接:https://www.nowcoder.com/acm/contest/165#question A 你好诶加币 设最大值为maxx,最小值为minn 分三种情况: \(1.a > 0 且b > 0\) 会加爆long long,所以化简式子 \(m…
链接:牛客网暑期ACM多校训练营(第四场):A Ternary String 题意:给出一段数列 s,只包含 0.1.2 三种数.每秒在每个 2 后面会插入一个 1 ,每个 1 后面会插入一个 0,之后第一个数字消失.求最后为空串需要多少秒. 题解: (1)如果在消除一个 0 前经过了 n 秒,那么消掉这个 0 需要 n + 1 秒. (2)如果在消除一个 1 前经过了 n 秒,那么消掉这个 1 与其产生的所有数需要 (n + 1) * 2 秒. (3)如果在消除一个 2 前经过了 n 秒,那么…
链接:牛客网暑期ACM多校训练营(第五场):F - take 题意: Kanade有n个盒子,第i个盒子有p [i]概率有一个d [i]大小的钻石. 起初,Kanade有一颗0号钻石.她将从第1到第n打开盒子.当她打开一个盒子时,如果里面有一颗钻石并且比它的钻石大,那么她将用她的钻石代替它. 现在您需要计算预期的替换次数. 您只需要输出答案模块998244353. 注意:如果x%998244353 = y * d%998244353,那么我们表示x / y%998244353 = d%99824…
牛客网暑期ACM多校训练营(第二场) 水博客. A.run 题意就是一个人一秒可以走1步或者跑K步,不能连续跑2秒,他从0开始移动,移动到[L,R]的某一点就可以结束.问一共有多少种移动的方式. 个人感觉是带约束条件的超级楼梯问题.说是dp其实就是递推吧.只要连续的两秒不是跑的就可以.所以在已经跑了i步的时候,直接考虑最后一步是跑的还是走的就可以了. 所以公式就是dp[i]=dp[i-1]+dp[i-1-k];然后前缀和预处理一下,直接从L的for到R的就可以了. 反正乱七八糟就出来了.现在写题…
牛客网暑期ACM多校训练营(第一场) A.Monotonic Matrix 这个题就是给你一个n*m的矩阵,往里面填{0,1,2}这三种数,要求是Ai,j⩽Ai+1,j,Ai,j⩽Ai,j+1 ,问你一共有几种填法. 变形一下就会发现其实是走非交叉格子路径计数,限制条件下的非降路径问题.就是从左上到右下走格子路径.从上到下为0——n,从左到右为0——m. 考虑 01 和 12 的分界线,是 (n, 0) 到 (0, m) 的两条不相交(可重合)路径,因为起点重合了,所以把其中一条路径往左上平移了…
牛客网暑期ACM多校训练营(第三场)H Diff-prime Pairs (贡献) 链接:https://ac.nowcoder.com/acm/contest/141/H来源:牛客网 Eddy has solved lots of problem involving calculating the number of coprime pairs within some range. This problem can be solved with inclusion-exclusion meth…
2018牛客网暑期ACM多校训练营(第二场)I- car 链接:https://ac.nowcoder.com/acm/contest/140/I来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 131072K,其他语言262144K 64bit IO Format: %lld 题目描述 White Cloud has a square of n*n from (1,1) to (n,n). White Rabbit wants to know the maximum…
2020牛客寒假算法基础集训营2 A.做游戏 这是个签到题. #include <cstdio> #include <cstdlib> #include <cstring> #include <queue> #include <vector> #include <algorithm> #include <map> #include <iostream> #define inf 0x3f3f3f3f #defin…
2020牛客寒假算法基础集训营1 这套题整体来说还是很简单的. A.honoka和格点三角形 这个题目不是很难,不过要考虑周全,面积是1,那么底边的长度可以是1也可以是2, 注意底边1和2会有重复的,所以要注意去除这个重复部分的. #include<bits/stdc++.h> using namespace std; ; typedef long long ll; ; int main(){ ll n,m,ans=; scanf("%lld%lld",&n,&am…
链接:C 来源:牛客网 牛牛的同学给牛牛表演了一个读心术:牛牛先任意选定一个非负整数,然后进行N次操作:每次操作前,假设牛牛当前的数是a,那么这个操作可能是a = a + x, 或者a = a * x, 或者a = a % x.N轮操作结束后,牛牛的同学成功猜出了牛牛最终的结果.牛牛觉得十分神奇,他现在把N个操作记录了下来,希望你帮忙验证一下这个读心术是不是一定会成功(既无论牛牛最开始选定的是什么数,最终的结果都是一样的). 哇!这题可以乱搞!!! 然后我的乱搞就gg了TAT 然后正解也真的是乱…
链接:https://www.nowcoder.com/acm/contest/165/D来源:牛客网 合法括号序列 键盘上有左括号(,右括号),和退格键-,共三个键. 牛牛希望按键n次,使得输入的字符串恰好一个合法的括号序列. 每按一次左括号(,字符串末尾追加一个左括号( 每按一次右括号),字符串末尾追加一个右括号) 每按一次退格键-,会删掉字符串的最后一个字符, 特别的,如果字符串为空,牛牛也可以按退格,但是什么都不会发生. 合法括号序列的定义和上一场比赛中的C题是一样的 https://w…
面 试 面试 面试 题目描述 牛牛内推了好多人去牛客网参加面试,面试总共分四轮,每轮的面试官都会对面试者的发挥进行评分.评分有 A B C D 四种.如果面试者在四轮中有一次发挥被评为 D,或者两次发挥被评为 C,就不会通过面试.如果面试者没有一次被评为 D,并且有三个或以上的 A,则会获得 special offer.其余情况会获得普通 offer. 现在告诉你一些面试者的发挥,请你算一算,他们的面试结果分别是什么. 输入 第一行输入一个 T,代表面试者的个数. 接下来有 T 行,每行都有一个…
目录 T1 面试 描述 题目描述 输入描述: 输出描述: 题解 代码 T2 纸牌游戏 描述 题目描述 输入描述: 输出描述: 题解 代码 T3 涨薪 描述 题目描述 输入描述: 输出描述: 题解 代码 T4 描述 题目描述 输入描述: 输出描述: 题解 代码 T1 面试 描述 题目描述 牛牛内推了好多人去牛客网参加面试,面试总共分四轮,每轮的面试官都会对面试者的发挥进行评分.评分有 A B C D 四种.如果面试者在四轮中有一次发挥被评为 D,或者两次发挥被评为 C,就不会通过面试.如果面试者没…
前三题略 T4: 题目描述 小A有n个长度都是L的字符串.这些字符串只包含前8个小写字符,'a'~'h'.但这些字符串非常的混乱,它们几乎长得互不相同.小A想通过一些规则,让它们长得尽可能相同.小A现在有K次机会,他可以每次机会,可以选择一对字符x,y,让x,y变成等价的字符(注意这里x,y和字符'x', 'y'不是一样的,只是个代号).注意,等价关系是有传递性的.比如小A让'a'和'b'等价, 'b'和'c'等价,那么'a'和'c'等价. 对于两个长度字符串P,Q是等价的,当且仅当对于每一位,…
链接:https://www.nowcoder.com/acm/contest/145/C 来源:牛客网 题目描述 A binary string s of length N = 2n is given. You will perform the following operation n times : - Choose one of the operators AND (&), OR (|) or XOR (^). Suppose the current and s2i. For examp…
链接:https://www.nowcoder.com/acm/contest/172/A来源:牛客网 题目描述 小N得到了一个非常神奇的序列A.这个序列长度为N,下标从1开始.A的一个子区间对应一个序列,可以由数对[l,r]表示,代表A[l], A[l + 1], ..., A[r]这段数.对于一个序列B[1], B[2], ..., B[k],定义B的中位数如下: 1. 先对B排序.得到新的序列C. 2. 假如k是奇数,那么中位数为.假如k为偶数,中位数为. 对于A的所有的子区间,小N可以知…
题意 题目链接 Sol maya普及组的dp都要想很长时间,我真是越来越菜了qwq 设$f[i][j]$表示当前到第$i$个位置,剩下$j$个左括号没被匹配 转移的时候判断一下即可 /* */ #include<cstdio> #include<cstring> #include<algorithm> #include<map> #include<vector> #include<set> #include<queue>…