09 2017 档案
摘要:题意:给你一个序列,长度不超过52,每个元素不超过13。让你重新对这个序列排序,sum(i)表示i的前缀和,使得排序过后,对每个i,都有sum(i)%i==0。 深搜,加两个优化:①倒着从后向前搜;②枚举的时候不要枚举52个,而枚举值域(只有13),能快一点。 另外,一开始想的是相同的元素在最后一定
阅读全文
摘要:题意:给你一个凸多边形,和多次询问,每次询问给你一条直线,问你这条直线与凸包上的顶点的最近距离是多少。 记当前询问的直线的斜率为K, 先找到与这条直线距离最远的两个点: 就把凸包所有的边当做有向直线进行排序,那么距离最远的两个点一定是斜率最接近+K和-K的,可以通过二分求得。 然后这两个点把凸包分成
阅读全文
摘要:题意:给你一个序列,支持两种操作:单点修改;询问一个区间中所有相邻位置下标奇偶性均不同的子序列中,和最大的是多少。 线段树每个结点维护四个值: 以奇数下标开始到奇数下标结束的最大子序列和; 以偶数下标开始到偶数下标结束的最大子序列和; 以奇数下标开始到偶数下标结束的最大子序列和; 以偶数下标开始到奇
阅读全文
摘要:题意:给你一个串,让你从左到右构造这个串,一次操作可以直接在当前串后面添加一个任意字符,或者拷贝当前串的任意一个子串到当前串的后面。问你最少要多少次操作才能构造出这个串。 从前向后贪心,从当前已构造的串的后面开始,尽量往后走,尝试在后缀自动机上转移,直到不能转移为止,便求出了后面的串的在当前串中能找
阅读全文
摘要:来源:http://www.cnblogs.com/haolujun/archive/2012/11/11/2765102.html 假如现在让你随机生成k个范围在1-n内的随机数,那么你能得到多少个不同的随机数呢?刚开始想得时候,我认为当k<=n时,可以得到k个不同的随机数,但是显然这个想法错了。
阅读全文
摘要:题意:给你一张简单无向图(但可能不连通),再给你一个K,让你求解任意一个问题:K染色或者输出一条K长路径。 直接贪心染色,对一个点染上其相邻的点的颜色集合之中,未出现过的最小的颜色。 如果染成就染成了。如果到某个点,发现染不成,则倒着按照颜色从大到小回去,则一定恰好可以找出一条K长度的路径。
阅读全文
摘要:题意:有n个土豆,每个有体积V(i),你可以将每个土豆等分为不超过K份,问你最大块和最小块比值最小为多少。 直接枚举切法,只有n*K种,然后保证其为最大块,去算其他块的切法,即让其他块切得尽可能大即可。O(n*n*K)。
阅读全文
摘要:题意: 给你一个n,问你R(n)对应的字符串长度最小的是啥。 dp打个表出来,f(i)表示i值对应的字符串的最小长度,发现f(1)=1,f(2)=2,其他的情况下,若是偶数,则恰好在其外面加一对中括号,然后中间填i/2最优,若是奇数,恰好在i-1前面加个1最优。 于是递归输出答案即可。
阅读全文
摘要:题意:给你一个长度为n的数组,每个元素都在1~n之间,要你改变最少的元素,使得它变成一个1~n的排列。在保证改动最少的基础上,要求字典序最小。 预处理cnt数组,cnt[i]代表i在原序列中出现的次数。b数组,代表没有出现过的数是哪些。b数组的长度就是答案。 b数组是从小到大排好的,然后for循环b
阅读全文
摘要:题意:给你三个半径相同的圆,它们切在一起,然后让你往缝里一个一个地塞圆,问你塞到第k个的半径是多少。 就把上面那两个圆的切点当成反演中心,然后会反演成这个样子,两个平行直线和一个圆。 然后就是往那个圆上面再塞圆,然后反演回去算面积就行了。
阅读全文
摘要:题意:平面上n个点,问你是否存在一种黑白染色方案,使得对于该方案,无法使用一条直线使得黑色点划分在直线一侧,白色点划分在另一侧。如果存在,输出一种方案。 如果n<=2,显然不存在。 如果所有点共线,且n>2,只需交替染色即可。 设凸包上的点数为K,如果K==n,且n==3,不存在,如果n>3,只需交
阅读全文
摘要:题意:给你一个序列(长度不超过2^17),支持两种操作:单点修改;询问区间中最小的ai*aj是多少(i可以等于j)。 只需要线段树维护区间最小值和最大值,如果最小值大于等于0,那答案就是minv*minv; 如果最大值小于等于零,那么答案就是maxv*maxv; 要是最小值小于零,最大值大于零,答案
阅读全文
摘要:题意:给你一个串,仅含有a~g,且每个字母只出现最多一次。和一个光标初始位置,以及一个目标串,问你最少要多少的代价变化成目标串。 有五种操作:在光标前添加一个未出现过的字母,代价1。 删除光标前或者光标后的字母,代价1。 光标左移或者右移,代价0.5。 哈希,把串弄成一个八进制数,加上一个光标位置,
阅读全文
摘要:题意:交互题:存在一个至少有一个0和一个1的长度为n的二进制串,你可以进行最多15次询问,每次给出一个长度为n的二进制串,系统返回你此串和原串的海明距离(两串不同的位数)。最后要你找到任意一个0的位置和任意一个1的位置。 先问n个0,返回你的原串中是1的数量,记为X。然后将任意一位改成1,倘若答案增
阅读全文
摘要:题意:给你n,x,均不超过10^5,让你构造一个无重复元素的n个元素的非负整数集合(每个元素不超过10^6),使得它们的Xor和恰好为x。 如果x不为0: 随便在x里面找一个非零位,然后固定该位为0,其他位随意填写,恰好弄出n-1个数来,然后对这n-1个数求xor和,记作sum,再输出x xor s
阅读全文
摘要:题意:给定一个n次多项式f(x)的各项系数,让你求f(x-Σai)的各项系数。 http://blog.csdn.net/v5zsq/article/details/76780053 推导才是最关键的部分……我的数学推导能力很弱,比赛的时候很难推出来……尤其是累加变量交换顺序、换元这两个常用的技巧在
阅读全文
摘要:以上是一份NTT专用模数与原根的对照表…… 然后从网上爬了一份NTT代码:http://www.cnblogs.com/candy99/p/6641972.html
阅读全文
摘要:题意:有一堆数据,某些是样例数据(假设X个),某些是大数据(假设Y个),但这些数据文件的命名非常混乱。要你给它们一个一个地重命名,保证任意时刻没有重名文件的前提之下,使得样例数据命名为1~X,大数据命名为X+1~X+Y。 先把未使用的名字压进两个栈。 分为三轮:第一轮把占用了对方名字的样例数据以及占
阅读全文
摘要:题意:给一棵树,每个点有权值。q次询问a,b,k,问你从a点到b点,每次跳距离k,权值的异或和? 预处理每个点往其根节点的路径上隔1~sqrt(n)的距离的异或和,然后把询问拆成a->lca(a,b),lca(a,b)->b,讨论一下即可,细节比较多。 队友的代码:
阅读全文
摘要:题意:2种操作:①往集合里添加一个串 ②给你四个小串a b c d,问你集合里有几个串S满足S=a+S1+b+c+S2+d的形式。S1 S2可以为空,并且a+S1+b=c+S2+d。 就搞四颗Trie出来,分别存的是 所有S的前半部分 + 所有a串; 所有S的前半部分倒置 + 所有b串倒置; 所有S
阅读全文
摘要:题意:给你n,m,让你求cos(nx)的展开式的(cos(x))^m项的系数。 更一般的式子是这样的:。 队友的代码:
阅读全文
摘要:题意:一张有n个点的图,结点被编号为0~n-1,i往所有编号比它大的点j连边,权值为i xor j。给你n,问你最大流。 打个表,别忘了把相邻两项的差打出来,你会发现神奇的规律……你会发现每个答案都是由某些特定的数加起来组成的,最好把它们也打出来。
阅读全文
摘要:题意:S(x)被定义为x的十进制表示下的数位之和。给你x,让你找一个正整数k,使得S(kx)能被233整除。k不超过2千位。 由于x不超过1000000,不论x是多少,10000000重复233次一定是合法的。
阅读全文
摘要:题意:投一枚硬币向上的概率是q/p。问你投K枚硬币,向上的枚数为偶数枚的概率是? 要求的即为。 这个东西是个二项展开式的偶数项系数和,来,我们复习一下高中数学,设f(x)=(ax+b)^n,则其偶数项系数和为(f(1)+f(-1))/2。
阅读全文
摘要:题意:让你求空间内n个点的最小覆盖球。 模拟退火随机走的时候主要有这几种走法:①随机旋转角度。 ②直接不随机,往最远的点的方向走,仅仅在尝试接受解的时候用概率。(最小圆/球覆盖时常用) ③往所有点的方向的总和走,仅仅在尝试接受解的时候用概率。(费马点时常用) 像这题,我用第一种最暴力的随机,死活过不
阅读全文
摘要:题意:平面上找一个点,使得其到给定的n个点的距离的最小值最大。 模拟退火看这篇:http://www.cnblogs.com/autsky-jadek/p/7524208.html 这题稍有不同之处仅有:多随机几个初始点,以增加正确率。 另:WA了几百遍竟然是因为最后输出了-0.0这样的值……
阅读全文
摘要:题意:求平面上一个点,使其到给定的n个点的距离和最小,即费马点。 模拟退火的思想是随机移动,然后100%接受更优解,以一定概率接受更劣解。移动的过程中温度缓慢降低,接受更劣解的概率降低。 在网上看到的代码都不太靠谱,我这个代码的关键之处在于,每一次随机走点时,不是1次,而是在10次随机中取最优者作为
阅读全文
摘要:题意:让你求一些数在XOR下的带权极大无关组。 带权极大无关组可以用贪心,将这些数按权值从大到小排序之后,依次检验其与之前的数是否全都线性无关。可以用线性基来搞。 可以用拟阵严格证明,不过也可以脑补一下……
阅读全文
摘要:给你n个数,问你将它们取任意多个异或起来以后,所能得到的第K小值? 求出线性基来以后,化成简化线性基,然后把K二进制拆分,第i位是1就取上第i小的简化线性基即可。注意:倘若原本的n个数两两线性无关,也即线性基的大小恰好为n时,异或不出零,否则能异或出零,要让K减去1。 这也是线性基的模板。
阅读全文
摘要:部分引用自:http://blog.csdn.net/v5zsq/article/details/77255048 所以假设方程 x^2+x+1=0 在模p意义下的解为d,则答案就是满足(ai/aj) mod p = d的数对(i,j)的数量(i<j)。 现在把问题转化为解这个模意义下的二次方程。
阅读全文
摘要:题意:给你一个字符串和一个正整数K,让你输出恰好出现K次的子串的数量。 对后缀链接树进行dp预处理后,SAM每个点的endpos大小就是该点结尾的子串出现的次数,maxlen-minlen+1就是子串的数量,所以直接对endpos大小为K的点的(maxlen-minlen+1)求和即可。
阅读全文
摘要:题意: 给你n(不超过200w)个数,和一个数r,问你有多少种方案,使得你取出某个子集,能够让它们的乘积 mod 2017等于r。 2017有5这个原根,可以使用离散对数(指标)的思想把乘法转化成加法,然后就可以用bitset优化dp了。 裸的dp方程是f(i,j)=f(i-1,j)+f(i-1,(
阅读全文
摘要:一个数m如果有原根,则其原根个数为phi(phi(m))。特别地,对素数有phi(p)=p-1。 假设g是奇素数p的一个原根,则g^1,g^2,...,g^(p-1)在模p意义下两两不同,且结果恰好为1~p-1,由此可以定义“离散对数”,与连续数学中的对数有异曲同工之妙。 离散对数又叫做“指标”,有
阅读全文
摘要:思路是hdu6134的简化版,只需要在外面套上一个枚举素数就行了。 http://www.cnblogs.com/autsky-jadek/p/7491730.html
阅读全文
摘要:http://blog.csdn.net/Clove_unique/article/details/51089272 Key:1、连接平面上某个整点(a,b)到原点的线段上有gcd(a,b)个整点。 2、欧拉函数的性质之一:若(N%a==0 && (N/a)%a==0) 则有:phi(N)=phi(
阅读全文
摘要:看这个题解吧:http://blog.csdn.net/wubaizhe/article/details/77338332 代码里顺便把几个常用的线性筛附上了。 Key:1、gcd(i,j)==1利用莫比乌斯函数的性质进行转化。 2、变换求和符号的顺序。 3、发现,该式可以递推。 4、线性筛约数个数
阅读全文
摘要:对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数。 100%的数据满足:1≤n≤50000,1≤a≤b≤50000,1≤c≤d≤50000,1≤k≤50000 看这个:http://blog.csdn.
阅读全文
摘要:题意:给你n个数,一次操作可以选一个数delete,代价为x;或者选一个数+1,代价y。你可以进行这两种操作任意次,让你在最小的代价下,使得所有数的GCD不为1(如果全删光也视作合法)。 我们从1到max(ai)枚举最后都变成的gcd是多少,假设为g,那么所有数都必须变成一个比g大的最小的g的倍数k
阅读全文
摘要:题意:给你五维空间内n个点,问你有多少个点不是坏点。 坏点定义:如果对于某个点A,存在点B,C,使得角BAC为锐角,那么A是坏点。 结论:如果n维空间内已经存在2*n+1个点,那么再往里面添加任意多个点,就会导致所有点都变成坏点。 容易看出来(?),把2*n+1个点分别放在原点处和每个坐标轴的正负半
阅读全文
摘要:题意:给你平面上3个不同的点A,B,C,问你能否通过找到一个旋转中心,使得平面绕该点旋转任意角度后,A到原先B的位置,B到原先C的位置。 只要A,B,C构成等腰三角形,且B为上顶点。那么其外接圆圆心即是一个合法的旋转中心。画个图很显然。 注意A,B,C三点共线时不可。
阅读全文
摘要:题意:有个沙漏,一开始bulb A在上,bulb B在下,A内有a数量的沙子,每一秒会向下掉落1。然后在K个时间点ri,会将沙漏倒置。然后又有m个询问,每次给a一个赋值ai,然后询问你在ti时刻,bulb A的沙子数。保证A和B的总沙子数为X。 函数ft(x)表示t时刻,初始bulb A中的沙子数为
阅读全文
摘要:题意:平面上给你N个点。对于一个“凸多边形点集”(凸多边形点集被定义为一个其所有点恰好能形成凸多边形的点集)而言,其对答案的贡献是2^(N个点内在该凸多边形点集形成的凸包内的点数 - 该凸多边形点集的点数)。问你N个点的所有凸多边形子点集的贡献之和是多少。 因为是2的多少次方的形式,容易发现,它其实
阅读全文
摘要:题意:给你一个排列a,每次可以交换相邻的两个数。让你用最少的交换次数使得a[i] != i。 对于两个相邻的a[i]==i的数,那么一次交换必然可以使得它们的a[i]都不等于i。 对于两个相邻的,其中一个a[i]==i,另一个a[i]!=i的数,一次交换也必然可以使得它们的a[i]都不等于i。 于是
阅读全文
摘要:给你一个这样的图,那些点是舞者,他们每个人会在原地待ti时间之后,以每秒1m的速度向前移动,到边界以后停止。只不过有时候会碰撞,碰撞之后的转向是这样哒: 让你输出每个人的停止位置坐标。 ①将x轴上初始坐标记为(pi,0),y轴上的初始坐标记为(0,pi)。只有pi-ti相同的才有可能发生碰撞。于是可
阅读全文
摘要:题意:让你构造一个只包含小写字母的可重集,每次可以取两个元素,将它们合并,合并的代价是这两个元素各自的从‘a’到‘z’出现的次数之积的和。 给你K,你构造的可重集必须满足将所有元素合而为一以后,所消耗的最小代价恰好为K。 考虑只包含一种类字母的消耗代价,以a为例: a 0 aa 1 aaa 3 aa
阅读全文