摘要:题目描述 一个只有两个物品的背包问题,但是范围都是1e9,需要考虑根号或者log的复杂度。 如果这两个物品中的某一个花费超过了根号C,那么我们可以直接枚举这件物品的数量,另一件物品的数量可以计算得出。 若没有 假设 v1/c1>v2/c2 也就是v1*c2>v2*c1 假设第一件物品有c2件,也就是 阅读全文
posted @ 2018-07-01 14:56 LeTri 阅读(257) 评论(3) 推荐(0) 编辑
摘要:题目描述 记f[i]表示经过i号点的概率。 那么点v从点u到达的概率=经过点u的概率/点u的出度。由于v可以由多个点走到,所以f[v]+=f[u]/out[u]。 计算f的过程可以在拓扑中完成,同时可以记录走过这条边的期望,相加就是答案。 阅读全文
posted @ 2018-06-08 19:23 LeTri 阅读(103) 评论(0) 推荐(0) 编辑
摘要:题目描述 初看每一个点被选它自己而被染色到的概率都是1/n,但仔细想想就会发现,某一个点对答案的贡献只与这个点有多少个祖先有关。 因为如果这个点会被选到,当且仅当它的所有祖先都没有被选到(题目中说会将选到的点所在的整棵子树都染成黑色),所有每个点被选而被染色的概率为1/deep[i]。 又因为每次选 阅读全文
posted @ 2018-06-08 18:43 LeTri 阅读(242) 评论(0) 推荐(1) 编辑
摘要:题目描述 又是一道扩欧的题。 要求一个最小的m使得 Ci+Pi*x≡Cj+Pj*x mod m(i!=j) 在x在第i个人和第j个人的有生之年无解。 也就是 (Pi-Pj)*x+m*y=Cj-Ci 在min(Li,Lj)上无解。 题目限制了保证有解且m<=1e6,那么可以考虑枚举m,在暴力地对每个人 阅读全文
posted @ 2018-06-07 20:37 LeTri 阅读(135) 评论(0) 推荐(0) 编辑
摘要:题目描述 题目要求就是求满足A+C*x≡B mod 2^k,移向得C*x≡B-A mod 2^k,这也就变成了求解同余方程的问题,即求满足C*x+2^k*y=B-A的x和y。 类似于 青蛙的约会 那道题,令a=C,b=2^k,r=Gcd(a,b),扩展欧几里得算法求的是满足ax+by=gcd(a,b 阅读全文
posted @ 2018-05-20 20:11 LeTri 阅读(149) 评论(2) 推荐(0) 编辑
摘要:题目描述 考虑到H-素数的定义与素数类似,那么能否用一种类似于筛素数的方式筛出所有的H-素数呢? 假设i是H-素数,那么i*(4*n+1)一定是H数且不是H-素数。 那么就可以筛出所有的H-素数,进而求出所有的H-合成数。 阅读全文
posted @ 2018-05-20 16:17 LeTri 阅读(106) 评论(0) 推荐(0) 编辑
摘要:题目描述 要求最后所有仓库的库存相同,那么就可以想到求出这个值,也就是仓库库存量的平均值delta。 如果某一个仓库的库存量x大于这个平均值,那么就从源点向这个店连一条流量为x-delta的边,表示这个仓库可以向外搬运的货物数量,费用为0。 反之,如果某一个仓库的存货量小于x这个平均值,就从这个店向 阅读全文
posted @ 2018-05-13 21:45 LeTri 阅读(240) 评论(0) 推荐(0) 编辑
摘要:题目描述 二分图最大点独立集问题。 要求在棋盘上放最多互不攻击的骑士,即在棋盘中拿走最少的骑士,使得剩下的骑士互不攻击。 黄格只能攻击红格,红格也只能攻击黄格,所以考虑建立二分图。 源点向所有红格连流量为1的边,所有黄格向汇点连流量为一的边,再由红格向它能攻击到的黄格连流量为1的边,有障碍物的点不连 阅读全文
posted @ 2018-05-12 21:24 LeTri 阅读(181) 评论(0) 推荐(0) 编辑
摘要:题目描述 对牛进行拆点 源点——食物——牛——饮料——汇点连边 边的流量都为1,以保证每种食物、牛以及饮料对答案的贡献为1。 阅读全文
posted @ 2018-05-12 18:02 LeTri 阅读(84) 评论(0) 推荐(0) 编辑
摘要:题目描述 还是看了题解 结论:gcd(f[n],f[m])=f[gcd(n,m)] 引理:gcd(f[n],f[n+1])=1 证明:利用辗转相减法:gcd(f[n],f[n+1])=gcd(f[n],f[n+1]-f[n])=gcd(f[n],f[n-1]),一直相减,最后得到gcd(f[n],f 阅读全文
posted @ 2018-04-10 16:10 LeTri 阅读(79) 评论(0) 推荐(0) 编辑