上一页 1 ··· 42 43 44 45 46 47 48 49 50 ··· 65 下一页
摘要: 容易想到二分答案。问题变为判断是否所有条件都被满足,可以发现这是很多变量间的相对关系,取个log之后就是经典的差分约束模型了。特殊的地方在于某些人的分数已被给定,从每个人开始跑一遍最短路判断一下是否能满足关系即可。 阅读全文
posted @ 2018-10-09 20:46 Gloid 阅读(247) 评论(0) 推荐(0) 编辑
摘要: 打猝死场感觉非常作死。 A:判一下起点和终点是否在其两侧即可。 #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #include<cstring> #include<algorithm> using name 阅读全文
posted @ 2018-10-08 12:50 Gloid 阅读(279) 评论(0) 推荐(0) 编辑
摘要: 既然已经学傻了,这个题当然是上反演辣。 对于求积的式子,考虑把[gcd=1]放到指数上。一通套路后可以得到∏D∏d∏i∏j (ijd2)μ(d) (D=1~n,d|D,i,j=1~n/D)。 冷静分析一下,由μ*1=e,后面一串ij相关的式子仅当D=1时有贡献。这一部分就非常好算了。而d对某个D的贡 阅读全文
posted @ 2018-10-07 23:59 Gloid 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 容易想到设f[i]为杀死i号怪物所消耗的最小体力值,由后继节点更新。然而这显然是有后效性的,正常的dp没法做。 虽然spfa已经死了,但确实还是挺有意思的。只需要用spfa来更新dp值就可以了。dij看起来也差不多。 更新部分写的看起来就很慢很能优化一波,在luogu上T一个点,然而实在太懒了就算了 阅读全文
posted @ 2018-10-06 23:10 Gloid 阅读(197) 评论(0) 推荐(0) 编辑
摘要: A:搜索好难啊根本不会啊。 B:暴力枚举给哪段前缀乘,维护一些前后缀最大最小值之类的东西就很好算了。 #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<al 阅读全文
posted @ 2018-10-06 19:11 Gloid 阅读(143) 评论(0) 推荐(0) 编辑
摘要: A:做法应该很多,比较好想的是每个点都往上倍增找到其能更新到的点。 #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<algorithm> using na 阅读全文
posted @ 2018-10-06 02:01 Gloid 阅读(193) 评论(0) 推荐(0) 编辑
摘要: A:签到 #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #include<cstring> #include<algorithm> using namespace std; int read() { int 阅读全文
posted @ 2018-10-06 01:54 Gloid 阅读(171) 评论(0) 推荐(0) 编辑
摘要: A:搜索好难啊根本不会啊。 B:原题都能写挂没救了啊。考虑求出每个数作为最小值时能向左向右扩展到的最远位置,那么这段区间里的所有数就不可能作为唯一的最小值成为最优解了,否则假设可以的话这段区间里的数都能整除该数,也一定能整除之前找到的最小值,区间就可以扩展到这里。所以从左往右从右往左各扫一遍即可,注 阅读全文
posted @ 2018-10-05 16:02 Gloid 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 设f(n)为模n时的答案,由2k mod n=2k mod φ(n)+φ(n) mod n(并不会证),且k mod φ(n)=f(φ(n)),直接就可以得到一个递推式子。记搜一发即可。 阅读全文
posted @ 2018-10-04 23:45 Gloid 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 没事干写一发模板。 阅读全文
posted @ 2018-10-04 20:47 Gloid 阅读(151) 评论(0) 推荐(0) 编辑
上一页 1 ··· 42 43 44 45 46 47 48 49 50 ··· 65 下一页