摘要:
分析 关于此题的 \(dp\) 思路,其实可以先去做一做这道题P1220 关路灯。两道题的思路大体相同,不过这道题有一个细节,就是露水的水分不会降为负数,因此不能一次 \(dp\) 完,因此我们考虑枚举喝到多少枚露水,以避免过程中出现某一滴露水过度消费的情况。 思路 用 \(dp[i][j][0/1 阅读全文
摘要:
分析 在我看了二十分钟题后,才发现被模的数是下标,不是值(美好),然后就开始换做法。 对于每一个模数 \(x\) ,我们发现第一个符合要求的就是 \(y\) ,之后每一个符合要求的数就是前一个数加上 \(x\) ,这样的话每一次的操作时间复杂度就是 \(n/x\),这样我们发现如果每一个 \(x\) 阅读全文
摘要:
分析 题意就是将给定的 \(N\) 分为四块作为一个四边形的四条边长,因此可以得到一个信息,最大的一条边长最大必须小于 \(n\) 的一半(类比于三角形两边之和大于第三边),此前提下才能保证四条边能形成四边形。 想到 \(dp\),对于现在连接第 \(i\) 条边时,先枚举连出这条边后的总长度 \( 阅读全文
摘要:
分析 很简单的一道找规律的题目,经过列出前几个数的两条函数可以发现,\(i\) 的$l_2$ 就是 \(i+1\) 的$l_1$,并且对于每一个 \(i\),它的两条直线的交点的横坐标与纵坐标都为-1,而 \(i\) 为1时的 \(l_1\) 已经与坐标原点有交点,之后每一条直线与 \(x\) 轴的 阅读全文
摘要:
分析 首先,数组大小为 \(2^n\),所以可以确保2和3操作都能覆盖到整个数组,而且我们可以将整个数组分为 \(n+1\) 层。 在分层之后,我们该怎么处理2操作和3操作呢?首先理解3操作,将题面简化就是将每个大小为 \(2^{k+1}\) 里面的左右两块整体交换,在此基础上,我们就可以进一步理解 阅读全文
摘要:
分析 刚开始此题被放在了第一道,第一眼我没有算对复杂度,写了一个极易理解的暴力算法,而且还因为看错下标做得更加麻烦,思路是这样的。 for(int i=tot;i>=1;i--){ if(cz[i]==0){ if(x<=mid){ x=2*x-1; } else { x=(x-mid)*2; } 阅读全文
摘要:
分析 看到题的第一反应,存储前面 n 位的值乘坐标,然后暴力检查,然而时间复杂度虽是可的,但没有正确性,我们发现对于同一个值,可能有多种可能性,比如第一位为三,第二位为一和第一位为三,第二位为二以此种方法计算出的值是相同的,但很明显他们对应的方案不一样。 因此我们需要考虑一种对于一个计算出的值,我们 阅读全文
摘要:
分析 题意就是在 n 双鞋里买 k 双,有一些优惠方式可以使你少付一些鞋子的钱,计算最少的花费。 我们发现 k 很小,因此建立在它上面思考,我们又发现买入的鞋子为严格的 k 双,因此这道题就得到了极大的简化。鞋子数我们只需要留下最便宜的 k 双,优惠方案我们只需要留下 x 范围在 k 之内的最优的 阅读全文
摘要:
分析 首先是对极小值均是0的理解,它的意思即为在每一次函数斜率改为-1后,一定要一直下降到0才可以。 因此我们就可以给方案数另一种理解方式,在1到 n 之间,可以选择多少种不同的函数下降点,使它经过所有的确定点。 这样一来就好分析多了,我们可以将问题转化为每两个定点之间,前一个的方案数可以如何转移到 阅读全文
摘要:
分析 题意就是对于一个数组,有多少个子集中的各项乘起来为完全平方数,记录个数并取模。 首先观察数据范围,发现数的大小很小,又想到平方数可以进行质因数分解,分解后,每一组相同项的个数都应为偶数。 于是第一步就想到了,因为70内的质数只有19个,于是我们状态压缩,用19位的二进制数,每一位表示对应位置的 阅读全文