联赛模拟测试22 D. 简单计算】的更多相关文章

题目描述 分析 \(\sum_{i=0}^p[(p|qi)?0:1]=\sum_{i=0}^p[(p/gcd(p,q)|qi/gcd(p,q))?0:1]=\sum_{i=0}^p[(p/gcd(p,q)|i)?0:1]=p-p/gcd(p,q)\) 代码 #include<cstdio> long long t,p,q,ans; long long gcd(long long aa,long long bb){ if(bb==0) return aa; return gcd(bb,aa%bb…
题目描述 分析 我们要找的是一段区间的和减去该区间的最大值能否被 \(k\) 整除 那么对于一段区间,我们可以先找出区间中的最大值 然后枚举最大值左边的后缀与最大值右边的前缀之和是否能被 \(k\) 整除 显然暴力枚举肯定会超时 所以我们可以用启发式合并的思想,只枚举长度较小的那一半,而在某种数据结构中查询另一半对应的值 查询的过程可以用主席树,但是常数巨大 其实我们可以对于每一个 \(\%k\) 后的前缀和开一个 \(vector\) \(vector\) 中存放该值出现的位置 然后大力二分即…
题目描述 分析 首先,容易发现一个小组内的最优配对方式(能得到最大综合实力的方式) 一定是实力值最大的男生和最大的女生配对,次大的和次大的配对,以此类推. 但是每次新插入一个值时,需要用 \(nlogn\) 的时间复杂度去维护这个最大实力值 如果暴力去扩展时间效率是无法接受的 然后我们会发现答案具有单调性,可以枚举一个左区间,然后二分查找右区间 但是当遇到每一组的人数很小的情况时,二分会被卡成 \(n^2 logn\) 因此我们需要先用倍增处理出二分的区间 在处理出的区间里进行二分查找 这样,当…
在Xunit的基础上,说话模拟测试. 假如我们有这样一个控制器里面有这样一个方法,如图 我们在对Bar测试得时候,如果测试未通过,错误有可能来至于Bar,也有可能错误来至于serverde Foo方法. 这样就会干扰我们对于Bar的测试,因为我们只想测试Bar是否有问题.那我们就可以使用模拟测试,模拟server. 安装Moq包 在NuGet里搜索并安装Moq包. 安装后编写单元测试代码 using Xunit; using Moq; public void MoqTest() { Contro…
40分,15名. 1-4:120 75 70 70 35分20名...总之差距极小不想说了 昨天教练说:以后的考试还是联赛知识点,但是难度比联赛高. 没听进去,以为是对于所有人而言的,也就是T1难度变成T2那样,T2当T3,T3还是不可做. 结果并不知道其实是3个不可做. 虽说理论上暴力打满是95+分但是实际操作起来极其恶心. 开题,过一遍,全不会,也找不出来哪道题最简单. 习惯了,好几次这样了——不就是考炸的前奏吗? 于是在T1上肝了一会然后放弃了.在T2上肝了一会然后也放弃了. 看看T3貌似…
题目描述 分析 考虑自底向上贪心 \(f[x][k]\) 表示 \(x\) 下面距离为 \(k\) 的需要灭火器的房间数,\(g[x][k]\) 表示 \(x\) 下面距离为 \(k\) 的多余灭火器数 每个灭火器和房间的匹配在 \(lca\) 处处理 每次假设子树里已经最优了,那么 \(f[x][k]\) 一定要用 \(g[x][0]\) 填满 然后距离为 \(k\) 的一定会在 \(x\) 处匹配掉,否则到上面不会更 优(可以交叉互换) 在不存在距离为 \(k\) 的前提下,\(k-1\)…
题目描述 这题太虎了,所以没有背景. 给你一棵树,边有黑白两种颜色,你每次可以选择两个点,把这两个点之间的唯一简单路径上的所有边颜色取反,某些边要求最终颜色必须是黑色,还有些边没有要求,问最少操作多少次能达到目的 输入格式 第一行一个整数 \(n\),代表点数 接下来\(n-1\)行,每行三个数\(x,y,z\),代表点 \(i\) 与点 \(x\) 之间有一条边,若 \(y\) 为 \(0\) 代表初始为白色,否则为黑色,若\(z\)为\(0\)代表不对最终颜色做要求,否则代表要求为黑色. 输…
题目描述 分析 对于 \(Subtask\ 1\),可以写一个 \(n^3\) 的 \(DP\),\(f[i][j]\) 代表第 \(i\) 个建筑高度为 \(j\) 时的最小花费,随便转移即可 时间复杂度 \(O(n \times h^2)\) 对于 \(Subtask\ 2\),我们沿用 \(Subtask\ 1\)的思路,记录前缀后缀 \(min\),将复杂度优化至 \(O(n \times h)\) 但是显然两维的定义无法继续进行优化,我们可以考虑改变一下定义的方式 设 \(f[i]\)…
题目描述 \(duyege\) 的电脑上面已经长草了,经过辨认上面有金坷垃的痕迹. 为了查出真相,\(duyege\) 准备修好电脑之后再进行一次金坷垃的模拟实验. 电脑上面有若干层金坷垃,每次只能在上面撒上一层高度为 \(v_i\)的金坷垃 或者除掉最新\(v_i\) 层(不是量)撒的金坷垃.如果上面只留有不足\(v_i\) 层金坷垃,那么就相当于电脑上面没有金坷垃了. \(duyege\) 非常严谨,一开始先给你 \(m\) 个上述操作要你依次完成. 然后又对实验步骤进行了\(q\)次更改,…
题目描述 分析 暴力的思想是把 \(2^n\) 种得分枚举出来,每一种得分的概率都是相同的,然后从小到大累加,直到大于等于所给的概率 把问题转化一下,就变成了在 \(2^n\) 种元素中求 \(k\) 小值 \(n\) 的范围是 \(40\), \(2^{40}\) 不可过,但是 \(2^{20}\)可过 把序列分成两半,每一半的大小都是 \(2^{n/2}\),分别排序 二分 \(k\) 大值,在另一半中查找与当前这一半中某个元素的和恰好小于等于当前值的元素个数 因为元素大小具有单调性,所以二…