摘要:
温馨提示(放在最前面) 1.$UVA$多组数据。 2.两组数据之间应有空行。 3.所有数据都为0时,\(ans\)=0,\(anl\)=\(anr\)=1(卡了我半小时的坑)。 还有一点于代码中讲。 正文 我们可以发现影响答案的只有两个因素,前缀和就不用说了,用一个数组保存(我亲眼见证隔壁一个一个加 阅读全文
摘要:
什么是$SAT$问题 \(k-SAT\):\(k-satisfiability\),中文名叫“\(k\)-适应性问题”,它描述的是这样一类问题。 给你$n$个变量$a_i$,每个变量有$a_i$种取值,称变量$a_i$的取值集合为$a_i$的值域。同时还有一些约束,例如当$a_i$取它的值域里某个值 阅读全文
摘要:
题意 有 \(n\) 个杯子,会告诉你每一个区间 \(i\) , \(j\) 需要的花费,从而得知这一区间内所有小球总和的奇偶性,因为我们知道每一个杯子下的小球只有一个或两个,因此这道问题便可以通过最短路的方式来做了 做法 在得到两个共端点的区间奇偶性后,就可以得到非共端点之间的奇偶性,例如,你知道 阅读全文
摘要:
题意分析 最坏情况一定是这个叛徒是叶子结点,这样他才有更大的概率来影响他的上级,比如你使一个子树都变为叛徒,肯定比仅有这个子树的根节点是叛徒影响力更大。 叛徒集体一定是一棵子树,因此我们选用深搜,递归来树形 \(DP\) ,以此维护相关信息。 \(f_i\) 表示 \(i\) 不是叛徒的最小 \(x 阅读全文
摘要:
题意 你要配置一杯糖水,每次你可以选择如下几个操作中的一个。 1 加入100 \(A\) 克的水。 2 加入100 \(B\) 克的水。 3 加入 \(C\) 克的糖 4 加入 \(D\) 克的糖 此外,这杯糖水要满足以下几个要求。 1 糖的质量不能超过水的质量的 \(E/100\) 。 2 总质量 阅读全文
摘要:
题意 给出一棵含 \(n\) 个白点的有根树,每次随机选择一个还没有被染黑的节点,将这个节点和这个节点子树中的所有点染黑。 问期望操作多少次后所有点都被染黑。 分析 由题意可得,如果一个节点的祖先被选中了,那么这个节点就已经被染黑了,不会再被选中。 因此对于每个节点,只考虑这个节点和它的所有祖先,其 阅读全文
摘要:
分析 对于 \(A\) 来说,最坏情况即 \(B\) 一路走到他最不好拦下的叶子结点,因为 \(B\) 不可能往回走,否则就浪费了,任 \(A\) 宰割。 对于每一个节点来说, \(A\) 需要确保两个事情,一个是保住它的所有子节点,二是用剩余的力量去提前处理它的后代们的问题。易得这是一个树形 \( 阅读全文
摘要:
题意简化 给定一个数 \(n\),求满足以下二者条件之一的 \(n\) 的排列的个数:1、对于所有奇数项,大于所有与它相邻的项;2、对于所有奇数项,小于所有与它相邻的项,由于答案可能很大,输出答案对 \(mod\) 取模后的值。 做法 易得到两种情况的个数是相等的(可以自己打小数据的表),所以我的思 阅读全文
摘要:
分析 关于此题的 \(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位的二进制数,每一位表示对应位置的 阅读全文
摘要:
分析 对于图中每两个可形成一条路径的点之间,都会有它们的最短路,题目所求的就是对于给出的 \(m\) 条道路,有多少最短路经过该道路。 可以知道这不是一次搜索就可以做到的,因为它会在搜索过程中不断更改最短路,于是我们考虑在确定起点的情况下,它到各点的最短路经过了哪些路径。 我们以 \(f_i\) 表 阅读全文
摘要:
题意 操作1:将两点所在的区间合并。 操作2:将一点移至另一点所在集合内。 操作3:求一点所在区间的元素个数和元素的总和。 分析 并查集的大小以及元素和是很好计算的,在合并时将“认亲”的点的对应值加给它祖先就行了。主要是操作2。 对于一个点单独抽离出来,我们发现是不好弄的,按照常规的方法做的话,如果 阅读全文