摘要:
容易想到二分答案。问题变为判断是否所有条件都被满足,可以发现这是很多变量间的相对关系,取个log之后就是经典的差分约束模型了。特殊的地方在于某些人的分数已被给定,从每个人开始跑一遍最短路判断一下是否能满足关系即可。 阅读全文
摘要:
打猝死场感觉非常作死。 A:判一下起点和终点是否在其两侧即可。 #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #include<cstring> #include<algorithm> using name 阅读全文
摘要:
既然已经学傻了,这个题当然是上反演辣。 对于求积的式子,考虑把[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的贡 阅读全文
摘要:
容易想到设f[i]为杀死i号怪物所消耗的最小体力值,由后继节点更新。然而这显然是有后效性的,正常的dp没法做。 虽然spfa已经死了,但确实还是挺有意思的。只需要用spfa来更新dp值就可以了。dij看起来也差不多。 更新部分写的看起来就很慢很能优化一波,在luogu上T一个点,然而实在太懒了就算了 阅读全文
摘要:
A:搜索好难啊根本不会啊。 B:暴力枚举给哪段前缀乘,维护一些前后缀最大最小值之类的东西就很好算了。 #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<al 阅读全文
摘要:
A:做法应该很多,比较好想的是每个点都往上倍增找到其能更新到的点。 #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<algorithm> using na 阅读全文
摘要:
A:签到 #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #include<cstring> #include<algorithm> using namespace std; int read() { int 阅读全文
摘要:
A:搜索好难啊根本不会啊。 B:原题都能写挂没救了啊。考虑求出每个数作为最小值时能向左向右扩展到的最远位置,那么这段区间里的所有数就不可能作为唯一的最小值成为最优解了,否则假设可以的话这段区间里的数都能整除该数,也一定能整除之前找到的最小值,区间就可以扩展到这里。所以从左往右从右往左各扫一遍即可,注 阅读全文