- 博客(15)
- 收藏
- 关注
转载 二次剩余定理及Cipolla算法入门到自闭
二次剩余定义: 在维基百科中,是这样说的:如果q等于一个数的平方模 n,则q为模 n 意义下的二次剩余。例如:x2≡n(modp)。否则,则q为模n意义下的二次非剩余。 Cipolla算法:一个解决二次剩余强有力的工具,用来求得上式的x的一个算法。 需要学习的数论及数学基础:勒让德符号、欧拉判别准则和复数运算。 勒让德符号:判断n是否为p的二次剩余,p为奇质数。 欧拉定...
2019-08-22 01:19:00
576
转载 String和Irreducible Polynomial(2019牛客暑期多校训练营(第七场))
示例: 输入: 4000010010111011110 输出: 00001001 0111 01111 0 题意:给出一个只含有0和1的字符串,找出一种分割方法,使得每个分割出的字符串都是在该字符串自循环节中最小。 题解:先把每段按1结尾分开,然后暴力合并,合并的条件是每段字符串的字典序都不下降,这样可以保证是最小表示。因为如果后面有一段字典序比前面合并的任意一段字典序小...
2019-08-16 16:04:00
154
转载 Pair(二进制处理+数位dp)(2019牛客暑期多校训练营(第七场))
示例: 输入: 33 4 24 5 27 8 5 输出:5731 题意:存在多少对<x,y>满足x&y>C或x^y<C的条件。(0<x<=A,0<y<=B) 题解:首先逆向考虑,求有多少对(x,y)满足x&y<=C且x^y>=C,然后用A*B去减它即可。然后就是数位dp模板题(数位dp不懂可先补...
2019-08-16 15:11:00
201
转载 Find the median(线段树+离散化)(2019牛客暑期多校训练营(第七场))
题目出处:Find the median 示例: 输入: 53 1 4 1 5 92 7 1 8 2 9 输出:34545 说明:L = [3, 2 ,4, 1, 7],R = [4, 8, 8, 3, 9] 题意:每次插入[l[i],r[i]][l[i],r[i]],询问中位数 题解:线段树模版题+离散化(不懂或忘了这些的先补充下知识)。线段树的...
2019-08-16 14:34:00
403
转载 数据离散化处理
百度百科(离散化): 离散化,把无限空间中有限的个体映射到有限的空间中去,以此提高算法的时空效率。 通俗的说,离散化是在不改变数据相对大小的条件下,对数据进行相应的缩小。例如: 原数据:1,999,100000,15;处理后:1,3,4,2; 原数据:{100,200},{20,50000},{1,400}; 处理后:{3,4},{2,6},{1,5}; 用法:很多算法的...
2019-08-16 13:50:00
352
转载 Governing sand(主席树/贪心)(2019牛客暑期多校训练营(第七场))
示例:输入:25 1 11 10 125 1 23 2 3输出:12 题意:n种树,第i种树有P[i]颗,砍掉每颗树的代价是C[i], 高度是H[i]。需要用最小的花费砍掉一些树,让最高的树超过一半。 题解:按高度分类,从小到大枚举最大高度,比当前枚举的高度 h 要高的,一定删,比它小的,如果删前 ? 小的。 贪心代码: 1 #include<bits/stdc+...
2019-08-13 15:44:00
177
转载 线段树入坑到放弃
线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。使用线段树可以快速的查找某一个节点在若干条线段中出现的次数,时间复杂度为O(logN)。而未优化的空间复杂度为2N,实际应用时一般还要开4N的数组以免越界,因此有时需要离散化让空间压缩。一.建树:例如:一个长度为4的线段,我们可以表示成这样: 如果你要表示线段的和,那么最上面...
2019-08-13 14:50:00
140
转载 Magic Line(思维+计算几何问题)(2019牛客暑期多校训练营(第三场))
示例: 输入: 140 1-1 01 00 -1 输出:-1 999000000 1 -999000001 题意:给定平面上一系列的点,求一条以(x1,y1),(x2,y2)两点表示的直线将平面分为包含点数量相等的两部分,其中直线不能穿过任何一点。 思路: 1 #include<bits/stdc++.h> 2 using namespace s...
2019-07-29 17:28:00
286
转载 Crazy Binary String(前缀和)(2019牛客暑期多校训练营(第三场))
示例: 输入: 801001001 输出:4 6 题意:一段长度为n且只有 ‘0’ 和 ‘1’ 的字符串,求子串中 ‘0’ 和 ‘1’ 数目相等和子序列中‘0’ 和 ‘1’ 数目相等的最大长度。 思路:子序列的最大长度为 ‘0’ 和 ‘1’ 的个数中最小的两倍; 求字串的最大长度就用前缀和,将 ‘1’ 的价值设为1,‘0’ 的价值设为-1,用数组book[i]记录从 0...
2019-07-29 17:23:00
150
转载 free(分层图最短路)(2019牛客暑期多校训练营(第四场))
示例: 输入: 3 2 1 3 11 2 12 3 2 输出:1 题意:求s,t最短路,可将k条边权值置零。 题解:分层图最短路原题 #include<bits/stdc++.h> using namespace std; typedef long long int ll; const int maxn = 1e5+10; const int IN...
2019-07-29 15:39:00
168
转载 sequence(线段树+单调栈) (2019牛客暑期多校训练营(第四场))
示例: 输入: 31 -1 11 2 3 输出: 3 题意:求最大的(a区间最小值*b区间和) 线段树做法:用单调栈求出每个数两边比b数组大的左右边界,然后用线段树求出每段区间的和sum、最小前缀lsum、最小后缀rsum,枚举每个数a[i],设以a[i]为最小值的区间为[l,r] 若a[i]>0,则最优解就是a[i]*(b数组[l,r]的区间和),因为a数组[l...
2019-07-29 15:27:00
173
转载 K number(思维和后缀以及3的特性)(2019牛客暑期多校训练营(第四场))
示例1: 输入:600 输出:4 说明:'600', '0', '0', '00' are multiples of 300. (Note that '0' are counted twice because it appeared two times) 示例2: 输入:123000321013200987000789 输出:55 题意:给一个全由数字字符组成的字符串,...
2019-07-29 13:28:00
337
转载 triples I(按位或运算及3的特性)(2019牛客暑期多校训练营(第四场)D)
示例1: 输入: 2 3 7 输出: 1 32 3 6 说明:3=3, (3|6)=7 题意:输出尽可能少的数字,他们的按位或结果为输入的数字a。 题解:(表示看不懂题解,看山东大佬的代码看懂的)首先:有两个奇怪的现象,就是一个数字的二进制(我的定义是第一位为0,即偶数)有且只有2个1,且分别在奇数位和偶数位上时,这个数一定是3的倍数。如果一个数字a(a>3)...
2019-07-29 12:59:00
232
转载 2019牛客暑期多校训练营(第四场)A meeting(dfs或dp,dp待更新)
示例1: 输入: 4 21 23 13 42 4 输出:2 说明: They can meet at place 1 or 3. 题意:从K个点到达不联通图某个点需要的最短时间,这个最短时间是这K个人最后到达的人所需的时间。 思路:(我觉得官方给的题解挺好理解的就直接复制过来了) 一句话题解:考虑距离最远的两个关键点,设它们的距离为d,d/2上取整即为答案。 必要性...
2019-07-29 11:51:00
167
转载 2019牛客暑期多校训练营(第二场)H Second Large Rectangle
示例一: 输入 : 1 2 01 输出: 0 示例二: 输入 : 1 3 101 输出: 1 示例三(自己自测找错误用的): 输入 : 6 6100111111011111111111111111111101111 输出: 16 题意:在由1和0构成的矩形中找到由仅由1构成的第二大的矩形。(前缀和思维) 解题思路:(1)这是比赛后看别人代码的...
2019-07-21 17:36:00
174
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅