摘要: 坑点 不记它难解我心头之恨…… WA1:不要读错题Orz,顺序是按它给定的。那就是个类似栈的东西,重点在于输出。 然而我输出很快就模拟对了…… WA2:数据:1 int。我日了不看数据我真的去de模拟的bug了。 WA3:中间栈空是非法。 貌似建一棵树可以迅速搞掉……擦 C++ include in 阅读全文
posted @ 2019-05-30 21:22 AlphaWA 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 转化为质数域上的操作,如果用莫反的话,记录因数的cnt。 其实莫反的推式子最后和容斥做法殊途同归了,容斥的系数就是莫比乌斯函数。 C++ const int maxn = 2e5 + 5, maxa = 5e5 + 5; int n, q, a[maxn], maxx; int primes[max 阅读全文
posted @ 2019-05-30 15:30 AlphaWA 阅读(249) 评论(0) 推荐(1) 编辑
摘要: 关键是check。要注意到其实有了mid以后每个位置都是独立的,它能从哪走到哪是固定了的,只要从左到右尽量贪心压着最小值即可。 阅读全文
posted @ 2019-05-30 15:24 AlphaWA 阅读(228) 评论(0) 推荐(0) 编辑
摘要: 要点 ‘&’操作暗示二进制上按位思考 对于y为1的位,要求x和y之间要至少有两个此位为1的(包含x、y),这样&起来才不是0.而这些位中只要存在一个是ok的即可 dp去求每个x的每个位最早到达的y C++ const int maxn = 3e5 + 5, Log = 20; int n, q, a 阅读全文
posted @ 2019-05-30 15:22 AlphaWA 阅读(276) 评论(0) 推荐(0) 编辑
摘要: 要点 容易想到排序,然后对于每个数: 人的惯性思维做法是:$a[i] (rank1的+rank2的+…)$。然而解法巧妙之处在于直接把所有的加和当成一个系数,然后先假装所有情况系数都是1,接着往上加,树状数组记录着所有之前比它小的数的情况,只有这些小的数也同时存在的区间才会增大它的系数。而且只在乎数 阅读全文
posted @ 2019-05-30 14:51 AlphaWA 阅读(279) 评论(0) 推荐(0) 编辑
摘要: 要点 序列上各位置之间的关系常用连边的手段转化为图的问题。 经过一番举例探索不难发现当存在两条有向边交叉时是非法的。 1是模糊的,也就是填多少都可以,那为了尽量避免交叉我们贪心地让它后面那个连它就行了。 看到一个很简短的dfs做法。从右向左一探到底,不行时回溯,直到可行后再探。 阅读全文
posted @ 2019-05-30 14:42 AlphaWA 阅读(193) 评论(0) 推荐(0) 编辑