牛客提高D6t3 分班问题】的更多相关文章

分析 就就就是推柿子 看官方题解吧/px 代码 #include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> #include<cctype> #include<cmath> #include<cstdlib> #include<queue> #include<ctime&g…
题目 发现自己一年之前非常垃圾 题目大意是给你一个\(n\)个点的环,给每个点一个\([1,a_i]\)的取值,并且满足环上任意相连两点权值不能相等,求方案数 考虑断环为链,发现不大会 不妨考虑所有\(a_i\)均相等的情况,设\(m=a_i\) 对于第一个点,有\(m\)种选择,其后每一个点的取值都不能和上一个相等,即\(m-1\)种选择,于是整个环就是\(m(m-1)^{n-1}\) 吗? 显然不是,这样我们不能保证\(1\)号点和\(n\)号点的取值不相等.设\(f_i\)表示\(1\)号…
分析 不难想到dp[i][j]表示前i个数分了j组的最大值 我们发现这个dp状态有决策单调性 g[i][j]表示对于第i个数它的第j位最近出现的位置 每次一定从这些点转移 预处理即可 似乎还可以做到1e5 https://www.cnblogs.com/hanyuweining/p/10321914.html 就是这个/kel 等有时间再看? 代码 #include<iostream> #include<cstdio> #include<cstring> #includ…
题目链接 为了纪(zhuang)念(bi)写完这个树剖单独写一篇.感觉还好,也就6k嘛. 完整比赛题解:https://www.cnblogs.com/SovietPower/p/9826829.html. 肯定要用点来表示边的颜色,然后树剖. 对于操作2,我们可以拆成: 将\(u\to v\)路径上的点,所有连向子节点的边染成\(col2\): 将\(u\to v\)路径上的点,所有连向父节点的边染成\(col1\): 将\(LCA(u,v)\)连向父节点的边染成\(col2\). 那么本题的…
题意 题目链接 Sol 设\(solve(x, y)\)表示\(i \in [0, x], j \in [0, y]\)满足题目要求的方案数 首先容斥一下,\(ans = solve(r_1, r_2) - solve(l_1 - 1, r_2) - solve(l_2 - 1, r_1) + solve(l_1 -1, l_2 - 1)\) 然后按照套路按位拆分,这里拆的时候是直接对\(x, y\)进行拆分 这样就把问题转换成了看起来似乎简单一些的问题 假设拆完后的数是 110011101 1…
分析 我们不难发现对于偶数的情况只要相邻两个数不相等即可 而对于奇数的情况只要中间恰好隔一个数的两个数不相等即可 于是我们又dp[i][0/1]表示考虑到第i位,这一位和它后面离它最近的一个确定的数是否相等 每次从i-1转移即可 注意对于奇数的情况最终答案要n-1和n的dp值相乘以保证合法 代码 #include<iostream> #include<cstdio> #include<cstring> #include<string> #include<…
分析 每次修改用二位差分记录一下 之后对于三维分别统计即可 代码 #include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> #include<cctype> #include<cmath> #include<cstdlib> #include<queue> #include&l…
分析 傻子题? 对d取模后随便贪心即可 代码 #include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> #include<cctype> #include<cmath> #include<cstdlib> #include<queue> #include<ctime>…
分析 树上从下往上线性基合并即可 并不需要启发式/xyx 代码 #include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> #include<cctype> #include<cmath> #include<cstdlib> #include<queue> #include<…
分析 我们对于每一个点记录他所在的这一行以它为右端点向前最多有几个连续的1 之后我们考虑每一列 对每一列的点按照之前求出的值从小到大排序 一次考虑每一个宽度 而高度也可以很容易的求出 每次取最大值即可 代码 #include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> #include<cctype> #includ…
分析 对于每一个点只要维护它前面/后面的一小一大组合的数量 对于这个可以维护两个树状数组 然后从前往后/从后往前分别扫一遍相乘即可 代码 #include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> #include<cctype> #include<cmath> #include<cstdlib&…
分析 我们发现如果行的异或和等于列的异或和那么对于n-1行m-1列的所有数的选择都是任意的 因为一定可以在它的行末/列末选一个合适的数是的整体满足 但是我们发现对于右下角那一个数是否满足存疑 我们设矩阵为 a1  a2  a3  a4 a5  a6  a7  a8 a9  a10 a11 a12 a13 a14 a15 a16 设行和列的异或值分别为X1 X2 X3 X4 Y1 Y2 Y3 Y4 设左上角3*3的矩阵的异或值为ALL 则: a16 = X4 ^ (Y1 ^ Y2 ^ Y3 ^ A…
分析 预处理出所有合法数字 然后直接lower_bound查询即可 代码 #include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> #include<cctype> #include<cmath> #include<cstdlib> #include<queue> #inclu…
分析 用map维护一下每种字符串当前有几个即可 代码 #include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> #include<cctype> #include<cmath> #include<cstdlib> #include<queue> #include<ctim…
分析 我们发现可以把题目转化为:有一个序列a,问它的排列中相邻两个值异或的最大值的最小值 我们发现序列的构成一定是前几位全是一样的 从某一位开始左面全是0右面全是1 所以只要找到一种方案是的交界两个值异或最小即可 把是0的插入01trie,每次拿是1的查询异或最小值 代码 #include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm&g…
题目 吉老师的题做不动啊 首先\([l_1,r_1],[l_2,r_2]\)并不是非常好做,我们考虑将其拆成前缀信息 设\(solve(n,m)=\sum_{i=0}^n\sum_{j=0}^m[m|(i\bigoplus j)]\) 于是我们的答案就变成了\(solve(r_1,r_2)-solve(l_1-1,r_2)-solve(r_1,l_2-1)+solve(l_1-1,l_2-1)\) 考虑\(solve(r_1,r_2)\)怎么求 一个非常特殊的情况是\(r_1=2^n-1,r_2…
题目 吉老师的题时过一年还是不会做 从\(1\)号点出发经过每条边至少一次并且还要回到\(1\)号点,这跟欧拉回路的条件非常像,但是欧拉回路的实际上是"经过每一条边恰好一次并且回到出发点" 所以可以理解为将每一条边拆成多条边,使得总边权和最小,并且图中存在一条欧拉回路 而一张图存在欧拉回路的条件是不存在度数为奇数的点 换句话说,给每条边定一个经过次数\(cnt_i\),最小化\(\sum_{i=1}^mcnt_i2^i\),并且使得每个点的所连边的\(cnt\)的和为偶数 看起来不是很…
目录 牛客网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…
牛客网提高组Day2 T1 方差 第一眼看就知道要打暴力啊,然而并没有想到去化简式子... 可能因为昨晚没睡好,今天上午困死 导致暴力打了一个半小时,还不对... #include <algorithm> #include <cstring> #include <cstdio> #include <cmath> using namespace std; typedef long long LL; ; int n, m; double sum; LL a[M]…
牛客网提高组Day1 T1 中位数 这好像是主席树??听说过,不会啊... 最后只打了个暴力,可能是n2logn? 只过了前30%  qwq #include<algorithm> #include<cstring> #include<cstdio> using namespace std; ; int n, len; int tmp, ans; int a[M]; struct nond { int id, num; }e[M]; bool cmp1(nond x,…
牛客的这场比赛感觉真心不错!! 打得还是很过瘾的.水平也比较适合. T1:中位数: 题目描述 小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可以知道它们对应的中位数.…
牛客网NOIP赛前集训营-提高组(第四场)游记 动态点分治 题目大意: \(T(t\le10000)\)组询问,求\([l,r]\)中\(k(l,r,k<2^{63})\)的非负整数次幂的数的个数. 思路: 暴力,注意特判\(0\)和\(1\)的情况. 源代码: #include<cstdio> #include<cctype> typedef unsigned long long uint64; inline uint64 getint() { register char…
牛客网NOIP赛前集训营-提高组(第四场)B区间 题目描述 给出一个序列$ a_1  \dots   a_n$. 定义一个区间 \([l,r]\) 是好的,当且仅当这个区间中存在一个 \(i\),使得 \(a_i\) 恰好等于 \(a_l, a_{l+1} \ \ \dots \ \ a_{r-1}, a_r\) 的最大公因数. 求最长的好的区间的长度. 输入描述: 第一行 n,表示序列的长度: 第二行 n 个数 a1,a2,...,an. 输出描述: 输出一行一个数,表示最长的好的区间的长度.…
分糖果 链接:https://www.nowcoder.com/acm/contest/173/B 来源:牛客网 题目描述 \(N\) 个小朋友围成一圈,你有无穷个糖果,想把其中一些分给他们. 从某个小朋友开始,我们顺时针给他们标号为\(1\) ~ \(N\).第 \(i\) 个小朋友可以得到至多 \(a[i]\),至少 \(1\) 个糖果. 问,有多少种分配方案使得每一对相邻的小朋友拿到的糖果数不同.答案对 \(10^9 + 7\) 取模. 输入描述: 第一行一个整数 \(N\). 接下来一行…
牛客网NOIP赛前集训营-提高组(第四场) 题目描述 给出一个序列 a1, ..., an. 定义一个区间 [l,r] 是好的,当且仅当这个区间中存在一个 i,使得 ai 恰好等于 al, al+1, ..., ar-1, ar 的最大公因数. 求最长的好的区间的长度. • 注意到:如果…
C.分元宵   链接:https://www.nowcoder.com/acm/contest/85/C来源:牛客网 这个题就是快速幂,注意特判,一开始忘了特判,wa了一发. 代码: 1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 #include<cmath> 5 #include<cstdlib> 6 #include<algorithm> 7 using…
链接:https://www.nowcoder.com/acm/contest/173/A来源:牛客网 题目描述 一个长度为 m 的序列 b[1...m] ,我们定义它的方差为 ,其中  表示序列的平均值. 可以证明的是,如果序列元素均为整数,那么方差乘以 m^2 之后,得到的值一定是整数. 现在有一个长度为 N 的序列 a[1...N],对每个 i = 1~N,你需要计算,如果我们删除 a[i],剩下的 N-1 个元素的方差乘以 (N-1)^2 的值. 输入描述: 第一行一个整数 N.接下来一…
链接: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可以知…
染色 链接:https://ac.nowcoder.com/acm/contest/176/A来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 524288K,其他语言1048576K 64bit IO Format: %lld 题目描述 fizzydavid和leo有n个方格排成一排,每个方格初始是白色.fizzydavid有红色染料,leo有蓝色染料.他们共进行了m次操作,在每次操作中,fizzydavid或者leo会选择若干个(可以是零个)连续相邻的方格并用自己…
牛客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…