牛客NOIP暑期七天营-TG1 赛后题解】的更多相关文章

目录 牛客NOIP暑期七天营-提高组1 A-最短路 题目描述 link 题解 代码 B-最小生成链 题目描述 link 题解 代码 C-最小字典最短路 题目描述 link 题解 Update 牛客NOIP暑期七天营-提高组1 比赛链接 官方题解 A-最短路 题目描述 link 题解 有Special Judge,只要构造一下就好了.一种较简单的构造想法:将每个点按照它离源点的距离排序,你可以想象是一条类似链的东西,但是,又不一定是链,当存在大于等于2个的点离1的距离相同,就会形成分叉.其实就是将…
目录 牛客NOIP暑期七天营-提高组3 A-破碎的矩阵 题目描述 link 题解 代码 B-点与面 题目描述 link 题解 代码 C-信息传递 题目描述 link 题解 牛客NOIP暑期七天营-提高组3 比赛链接 官方题解 A-破碎的矩阵 题目描述 link 题解 标签:推结论+快速幂 挺妙的一道题??比赛的时候想到了但不敢确定正确性. 首先很容易想到,对于一个二进制数它的每一位都是独立的.那么下面的结论对于\(x=1\)和\(x=2^{30}-1\)和\(2^{60}-1\)这三组都同样适用…
牛客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…
链接:https://ac.nowcoder.com/acm/contest/926/D来源:牛客网 在一维坐标系中,给定 n条有颜色的线段,第 i条线段的左右端点分别为 li​和 ri​,此外它的颜色为 ci​. 给定m个查询,每个查询给定一个区间 [a,b],需要求出这个区间完全包含的线段中有多少种不同颜色的线段. 题解:说是普及组,还是需要一些水平的.简单的版本可以参考:最开始学主席树的时候的题目:SPOJ:D-query这些说起来之前那个题也可以这样做的. 即是离线操作,把询问和线段一起…
目录 A-积木大赛 题目描述 link 题解 代码 B-破碎的序列 题目描述 link 题解 C-分班问题 题目描述 link 题解 比赛链接 官方题解 A-积木大赛 题目描述 link 题解 标签:模板题,一点点思维+二维差分+二维前缀和 借这道题机会复习了一下二维差分+二维前缀和这两个东西. 首先题目让我们求总的表面积,实际上可以拆分成两部分:上下表面积+前后左右表面积 1.上下表面积的话,根据俯视图想一想,就是有被积木覆盖额面积\(*2\): 2.前后左右表面积的话,感性理解一下,只要他的…
————提高组———— 第一题: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…
第一题:破碎的矩阵 题目链接: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<…