随笔分类 - OI
摘要:题意:直线上N颗行星,X=i处有行星i,行星J受到行星I的作用力,当且仅当i<=AJ.此时J受到作用力的大小为 Fi->j=Mi*Mj/(j-i) 其中A为很小的常量。请计算每颗行星的受力,只要结果的相对误差不超过5%即可. 题解:出题人脑子有坑系列。完全没见过这么扯的题目,因为${F_j} = \
阅读全文
摘要:题意:给定一个数列,要求维护:1、求倒数L个数中的最大值 2、在数列末尾插入(最近的1询问的答案+x)%D。其中初始序列为空。 法一:因为询问最多200000个,所以直接建一棵大小为M的线段树维护即可 #include <cstdio> #include <cstring> #include <cs
阅读全文
摘要:题意:给定一张无向图,不断从图上删点,询问每次删点后联通块的数量 题解:离线,在删完点后的图上不断加点,用并查集维护联通性。 #include <cstdio> #include <cstring> #include <cstdlib> #include <iostream> #include <a
阅读全文
摘要:题意:求最小生成树的方案数,保证每个边权出现的次数小于十次。 题解:首先我们需要知道:一张图对于一个确定的边权,在任意最小生成树中出现的次数是相同的(请不要问我为什么QAQ)。所以我们先求出每一种边权在MST中出现的次数,然后枚举每一个边权,暴力看取哪些边可以组出一颗MST,复杂度O(M*2^10*
阅读全文
摘要:题意:给定一个X*Y的长方形,每次可以平行长或宽切一刀,求切N-1次能得到的最小的N个子长方形中长宽比最大的值。 题解:因为N<=10,DFS乱搞就好 #include <cstdio> #include <cstring> #include <cstdlib> #include <iostream
阅读全文
摘要:题意:求[A,B]之间,任意相邻两位差值均大于等于2的数的个数题解:设f[i][j]=第i位为j的合法的数的数量,显然有f[i][j]=f[i-1][k],|k-j|≥2。至于统计答案,我们只要能求1-U之间的合法的数的数量,显然答案就是Ans[B]-Ans[A-1]。至于Ans[i]……因为Ans
阅读全文
摘要:题意:给定M个A物品和N个B物品,每个物品有x y z三个属性。求选择最少的B物品(每种物品的量是无限的,但不可拆分),使得可以组合出所有A物品,无解输出-1. 题解:题解在这里,有几个特殊情况需要判断……首先是所有金属在一条线上,其次是所有客户的金属在一条线段上。当然我是没判的,毕竟数据太弱了QA
阅读全文
摘要:题意:给定汉诺塔移动的优先级(由大到小且两次操作不移动同一个盘子,则能执行的一定执行)和盘子的数量,求移动次数。 题解:设f[i][j]=将i柱子上j个盘子移动到满足要求的柱子上的步数,g[i][j]=移走i柱子上j个盘子按要求会移动到g[i][j]这个柱子。有两种转移的情况 (以下1 2 3仅作代
阅读全文
摘要:题意:给定N个建筑,每个建筑有一个修理时间t1和报废时间t2,每个时刻只能修理一个建筑,求最多可以修理的建筑数 题解:首先将所有建筑按报废时间排序,由小到大枚举,用t1来维护堆,假如已经花费的时间+当前建筑的修理时间<当前建筑的报废时间,当前建筑入堆;否则,假如当前建筑的修理时间比堆顶元素小,并且删
阅读全文
摘要:题意:给定两个数列a b,求两数列怎样排列能使a个数列中:2*(a[i]>b[i]的数量)+(a[i]=b[i]的数量)最大和最小。 题解:将两数组排序后,按如下流程贪心:(1)如果a最弱的人强于b最弱的人,两者相赛 (2)否则,如果a最强的人强于b最强的人呢,两者相赛 (3)否则,用a最弱的人与b
阅读全文

浙公网安备 33010602011771号