Find Extra One
Position in Fraction
Remove Extra One
f[i]表示删掉i能增加的record数目
从左到右处理,记录当前最大数max1和第二大数max2。如果第i个数字a[i]大于最大数,则第i个数字本身是个record,f[a[i]]--,因为删掉它会导致减少一个record。如果a[i]在max1和max2之间,f[max1]++,因为此时删掉max1可以增加一个record。
选择f值最大的数中最小的输出即可。
Unusual Sequences
首先把y除以x,变成求最大公约数是1的序列的个数。
对于剩下的数,显然仍然有一个最大公约数,而且这个最大公约数一定是y的约数(这跟为什么y=y/x,除不尽直接输出0道理一样)。假定这个最大公约数是p,那么满足此种情况的数列的个数与加起来是y/p,最大公约数为1的数列个数相同。
假设f(t)表示加起来是t,且最大公约数是1的数列的个数;g(t)表示加起来是t,最大公约数随意的数列的个数,显然g(t)=sigma(f(d)) d|t,且g(t)=2^(t-1),从而可以根据莫比乌斯反演求出f(t)。
Maximum Questions
cost[i]表示从i开始匹配一个m所需替换次数,dp[i].first为从1到i最多能匹配的次数,second表示达到最多匹配次数时的最小替换次数。