题目 题意: 给你n(最大36)个数,让你从这n个数里面找出来一些数,使这些数的和等于s(题目输入),用到的数输出1,没有用到的数输出0 例如:3  4 2 3 4 输出:0 0 1 题解: 认真想一下这一道题,首先看到n不是多大就想用dfs(超时),又在dfs的基础上记忆化(超时),大概是我记忆化不完全.又想用01背包,打出来代码后发现s就是体积,但是s的范围太大了,数组存不下 T_T 看题解发现用一个叫 折半枚举(就是一种思想) 和 二进制枚举 的东西 折半枚举:比如有时集合过大无法全部搜索…
题意 解下列方程 \((x+y) \equiv b \ mod \ p\) \((x\ *\ y) \equiv c \ mod \ p\) 题解 \(y = b-x\) 带入二式 \(x * (b-x) \equiv c \ mod \ p\) \(bx - x^2 =c + kp\) \(x^2 - bx + c + kp = 0\) 解得\(x = \frac{b \ \pm \ \sqrt{b^2 - 4c+kp} }{2}\) 要使\(x\)为整数则\(\sqrt{b^2 - 4c+k…
题意:给出由01组成的矩阵,求求全是1的次大子矩阵. 思路: 单调栈 全是1的最大子矩阵的变形,不能直接把所有的面积存起来然后排序取第二大的,因为次大子矩阵可能在最大子矩阵里面,比如: 1 0 0 1 1 1 1 1 1 有篇博主的代码细节处理的很好,由于矩阵每行的长度一致,则不必重复在数组末尾标记0:然后由于j是从1,最开始如果push进0的话,有两个好处: 1.可以不受栈之前"残留"的元素m+1的影响 2.不用再判断栈是某为空来确定wid的值 Code #include <b…
LINK:Keyboard Free 我要是会正经的做法 就有鬼了. 我的数学水平没那么高. 三个同心圆 三个动点 求围成三角形面积的期望. 不会告辞. 其实可以\(n^2\)枚举角度然后算出面积 近乎可以得到面积的期望. 正解的话 听李指导说的意思是指二维积分?辛普森积分即可??? 值得一提的是 三角形面积我也不会计算 自闭了. code //#include<bits/stdc++.h> #include<iostream> #include<cstdio> #in…
LINK:Just Shuffle 比较怂群论 因为没怎么学过 置换也是刚理解. 这道题是 已知一个置换\(A\)求一个置换P 两个置换的关键为\(P^k=A\) 且k是一个大质数. 做法是李指导教我的. \(k\sqrt{A}=p\)即\(A^{\frac{1}{k}}=p\) 设当前置换大小为r 那么有 \(A^r=I\)其中I为单位置换. \(A^{r+1}=A\)那么有\(A^{ar+1}=A\) 原式等于\(A^{\frac{ar+1}{k}}=P\) 那么只需要随便找个a满足\(k|…
LINK:Interval 赛时连题目都没看. 观察n的范围不大不小 而且建图明显 考虑跑最大流最小割. 图有点稠密dinic不太行. 一个常见的trick就是对偶图转最短路. 建图有点复杂 不过建完跑最短路即可. 当做复习了一下吧. 值得注意的是需要开\(long long\) code //#include<bits/stdc++.h> #include<iostream> #include<cstdio> #include<ctime> #includ…
LINK:Cover the Tree 最受挫的是这道题,以为很简单 当时什么都想不清楚. 先胡了一个树的直径乱搞的贪心 一直过不去.后来意识到这类似于最经典长链剖分优化贪心的做法 然后那个是求最大值 这个是构造不太一样 最后也没能搞出来. 不过后了我wa了几发之后 我唯一的队友看不下去了 他来做这道题了 最后还是过了这道题.(有一个好队友就是很舒服 可以想到从叶子节点到跟的过程 每个叶子节点必须要向上合并 因为其父亲的那条边需要被覆盖. 这要到达某个节点会有很多叶子节点相遇 此时考虑父亲那条边…
LINK:Boundary 计算几何确实是弱项 因为好多东西都不太会求 没有到很精通的地步. 做法很多,先说官方题解 其实就是枚举一个点 P 然后可以发现 再枚举一个点 然后再判断有多少个点在圆上显然会超时. 直接考虑求出所有点和\(O,P\)的夹角 因为同弧所对圆周角相等 最后统计有多少个角度相等来做. 一个误区是 两个对称的圆上的点被算在一起了 此时强制利用 第三个点在所在直线的左侧/右侧来消除影响. 正确性显然.复杂度\(n^2\cdot logn\) 一个比较好想好写的做法: 枚举到第三…
LINK:All with Pairs 那天下午打这个东西的时候状态极差 推这个东西都推了1个多小时 (比赛是中午考试的我很困 没睡觉直接开肝果然不爽 一开始看错匹配的位置了 以为是\(1-l\)和\(r-(r-l+1)\)进行匹配. 我想这不是随便写个trie树???码完发现过不去样例 我真的是眼瞎 后来看清了. 大致思路如下 可以直接暴力枚举\(n^2\)个点对 找到最大的匹配位置这个也可以暴力 由于串长总和是M. 这一部分复杂度也不过是\(n^2+M\)的. 过不了 就可以思考能不能从大到…
layout: post title: 2019牛客暑期多校训练营(第五场)G - subsequeue 1 (一题我真的不会的题) author: "luowentaoaa" catalog: true tags: mathjax: true - ACM-ICPC 题意 给你两个由数字组成的字符串\(S\),\(T\) 长度为\(1e3\),问你S中有多少个子序列的值大于字符串T: 思路 首先在比赛的时候一眼确定是\(N^2\) 复杂度的DP,但是想了两三个小时却没想到怎么转移,各种…
传送门 J-Counting Triangles_2021牛客暑期多校训练营3 (nowcoder.com) 题目 Goodeat finds an undirected complete graph with n vertices. Each edge of the graph is painted black or white. He wants you to help him find the number of triangles (a, b, c) (a < b < c), such…
题意 给出n个数组(每组数个数不定),m个询问 l, r, x 序号在区间\([l,r]\)的每个数组是否都可以取出任意个数异或出x 题解 判断一个数组能否异或出x,是简单的线性基问题 判断多个线性基能否异或出x只需求出这些线性基的交,在交线性基上判断能否异或出x,多个线性基的交一定能被每个线性基分别表示,利用线段树维护区间线性基交就行,线性基求交模板是牛客上扒的咖啡鸡的 代码 #include <bits/stdc++.h> using namespace std; const int mx…
题意:求Σfi^m%p. zoj上p是1e9+7,牛客是1e9:  对于这两个,分别有不同的做法. 前者利用公式,公式里面有sqrt(5),我们只需要二次剩余求即可.     后者mod=1e9,5才mod下没有二次剩余,所以不能这么做了.可以分解mod,然后利用循环节搞. zoj: #include <bits/stdc++.h> using namespace std; typedef long long LL; ; ; LL fac[N],A[N],B[N]; void Init() {…
链接:https://ac.nowcoder.com/acm/contest/881/A来源:牛客网 题目描述 Two arrays u and v each with m distinct elements are called equivalent if and only if RMQ(u,l,r)=RMQ(v,l,r)RMQ(u,l,r)=RMQ(v,l,r) for all 1≤l≤r≤m1≤l≤r≤mwhere RMQ(w,l,r)RMQ(w,l,r) denotes the inde…
链接:https://ac.nowcoder.com/acm/contest/881/B 来源:牛客网 Integration 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 524288K,其他语言1048576K 64bit IO Format: %lld 题目描述 Bobo knows that ∫ ∞ 0 1 1 x 2 d x = π 2 . ∫0∞11+x2 dx=π2. Given n distinct positive integers a 1 , a 2 , -…
链接:https://ac.nowcoder.com/acm/contest/881/A 来源:牛客网 Equivalent Prefixes 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 524288K,其他语言1048576K 64bit IO Format: %lld 题目描述 Two arrays u and v each with m distinct elements are called equivalent if and only if R M Q ( u ,…
链接:https://ac.nowcoder.com/acm/contest/882/F来源:牛客网 Given 2N people, you need to assign each of them into either red team or white team such that each team consists of exactly N people and the total competitive value is maximized. Total competitive va…
链接:https://ac.nowcoder.com/acm/contest/888/E来源:牛客网 Gromah and LZR have entered the fifth level. Unlike the first four levels, they should do some moves in this level. There are nn_{}n​ vertices and mm_{}m​ bidirectional roads in this level, each road…
链接:https://ac.nowcoder.com/acm/contest/881/A来源:牛客网 Two arrays u and v each with m distinct elements are called equivalent if and only if RMQ(u,l,r)=RMQ(v,l,r)RMQ(u,l,r)=RMQ(v,l,r) for all 1≤l≤r≤m1≤l≤r≤m where RMQ(w,l,r)RMQ(w,l,r) denotes the index of…
链接:https://ac.nowcoder.com/acm/contest/889/D来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 262144K,其他语言524288K 64bit IO Format: %lld 题目描述 Amy asks Mr. B  problem D. Please help Mr. B to solve the following problem. Amy wants to crack Merkle–Hellman knapsack…
链接:https://ac.nowcoder.com/acm/contest/886/J来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 262144K,其他语言524288K 64bit IO Format: %lld 题目描述 Rowlet is playing a very popular game in the pokemon world. Recently, he has encountered a problem and wants to ask for…
链接:https://www.nowcoder.com/acm/contest/147/A 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K 64bit IO Format: %lld 题目描述 Niuniu has recently learned how to use Gaussian elimination to solve systems of linear equations. Given n and a[i], wh…
题意:给定p=1e9+7,构造x,y使其满足(x+y) mod p = b,(x*y) mod p = c . 思路:不考虑取模的情况下, .在取模的意义下,,因为a是模p的二次剩余的充分必要条件为  ,所以可以根据二次剩余求出x-y. https://www.cnblogs.com/lfri/p/11364235.html https://blog.csdn.net/qq_41117236/article/details/99684003…
题意:给定p=1e9+7,A,B.  求一对X,Y,满足(X+Y)%P=A; 且(X*Y)%P=B: 思路:即,X^2-BX+CΞ0;  那么X=[B+-sqrt(B^2-4C)]/2: 全部部分都要在modP意义下,所以求一个x满足x^2%p=B^2-4C,这个用二次剩余求即可. 套了模板. #include <bits/stdc++.h> using namespace std; ; typedef long long ll; int k; ll a,p,w; struct T{ll x,…
https://ac.nowcoder.com/acm/contest/889/B 假如我们能够求出 \(x-y\) 在模p意义的值,那么就可以和 \(x+y\) 联立解出来了. 由于 \((x-y)^2=(x+y)^2-4xy=b^2-4c\) ,那么设 \(n=b^2-4c\) ,就是要求解出一个二次剩余. #include<bits/stdc++.h> using namespace std; typedef long long ll; const int p = 1e9 + 7; st…
\((x+y)\equiv b\pmod p\) \((x\times y)\equiv c\pmod p\) 由第一个式子可知:\(x+y=b~or~x+y=b+p\) 先任选一个代入到第二个式子里得 \[(x\times(b-x))\equiv c\pmod p \Rightarrow (2*x-b)^2\equiv (b^2-4c)\pmod p \] 解二次剩余方程 \(q^2\equiv a\pmod p\) 因为这个方程去查了很多资料 1. 欧拉准则 对于\(x^2\equiv a\…
>传送门< 题意 $n$个宽度为$w_{i}$,高为$h_{i}$ 的 木块,要求分成$k$组,对于每组内的所有木块,高度都变为组内最低木块的高度,宽度保持不变,求变化的最小面积. 分析 由于$dp$状态定义不同写法也不同,这里给出一种解法 高度比较高的木块为迁就高度比较低的(为了$dp$方程及其优化),所以先把木板按照高度从高到低排序 如果设$d[i][k]$ 为前$ i $个分成 $k $份可以保留的最大面积,那么答案就是 $tot−d[n][k]$($tot$ 为初始总面积) 考虑如何转…
>传送门< 前言 这题我前前后后看了三遍,每次都是把网上相关的博客和通过代码认真看了再思考,然并卵,最后终于第三遍也就是现在终于看懂了,其实懂了之后发现其实没有那么难,但是的的确确需要思维.(博客分析那块写的啰里吧嗦又改了很多废话) 题意 在一个长度为$10^{9}$的序列上,保证只有$n(n<10^{6})$个区间等于$1$,且$1$的个数小于10^{7},其他位置全部为$-1$,求区间和$>0$的区间数量 分析 题目意思很简单,对不对~ 那接下来我们就思考下该怎么做这题. 考虑…
题意 有一个只由1,-1组成的数组,给出所有连续的1所在位置,求满足1的个数大于-1的个数的子区间的数量 题解 参考博客:https://www.cnblogs.com/Yinku/p/11221494.html 考虑做前缀和,问题就转化成sum[i]-sum[j] > 0的对数, 由于数据范围较大不可能对整个数组前缀和,可以只计算对答案有贡献的区间的前缀和,需要对给出的线段1进行合并,例如(111) -1 (11)就可以合并,(11) -1-1-1-1-1 (11)就没必要合并,这样可以去掉很…
题意 给出n个不同的数字\(a_i\),求出最大的子集,使得子集内任意两个数在二进制下至少有两位不同. 题解 先对任意两个二进制位只有一个不同的两个数连边,那么问题就转化成找出最多的点集,任意两点没有边,也就是最大独立集问题.普通的图求最大独立集是N-P困难的,但是二分图求最大独立集合是多项式复杂度的. 所以我们把图转换成二分图形式,把二进制下有奇数个1的数放在左边,有偶数个1的数放在右边,这样左边内的点和右边内的点一定不会有连边,因为两边的点二进制1的个数奇偶性是一样的,且不存在相同的数,那么…