摘要: dfs一遍给每个齿轮随便标个值看是否矛盾就行了。 阅读全文
posted @ 2018-11-03 14:07 Gloid 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 先考虑题目所说的太简单了的问题。注意到只要把加减号相取反,就可以得到一对除了第一项都互相抵消的式子。于是得到答案即为Σf(i)g(i),其中f(i)为前缀积,g(i)为第i个数前面所有符号均填乘号,第i个数后面符号不填乘号,剩余任意填的方案数,也即g(i)=2*3n-i-1(i<n),g(n)=1。 阅读全文
posted @ 2018-11-03 13:21 Gloid 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 考虑需要资瓷哪些操作:区间赋值为0;统计区间1的个数;将区间前k个0变为1;询问区间最长全0子串。于是线段树维护区间1的个数、0的个数、最长前缀后缀全0子串即可。稍微困难的是用一个log实现将区间前k个0变为1,线段树上二分尽量往左边改即可,可以令修改函数返回值为剩余能改的1的个数。 阅读全文
posted @ 2018-11-03 11:47 Gloid 阅读(216) 评论(0) 推荐(0) 编辑
摘要: 注意到模数很小,容易想到使用卢卡斯定理,即变成一个2333进制数各位组合数的乘积。对于k的限制容易想到数位dp。可以预处理一发2333以内的组合数及组合数前缀和,然后设f[i][0/1]为前i位是否卡限制的贡献就很好dp了。为什么大家都要化式子呢。 阅读全文
posted @ 2018-11-03 10:40 Gloid 阅读(203) 评论(0) 推荐(0) 编辑
摘要: 二分答案,分别往尽量小的和尽量大的二分即可。 阅读全文
posted @ 2018-11-03 09:45 Gloid 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 如果值域不大,容易想到设f[i][j]为第i个学校选了j的方案数,枚举上一个学校是哪个选了啥即可,可以前缀和优化。于是考虑离散化,由于离散化后相同的数可能可以取不同的值,所以枚举第一个和其所选数(离散化后)相同的学校是哪个,考虑这一段里选几个学校怎么选数,组合数即可。各种显然的优化后即可做到O(n3 阅读全文
posted @ 2018-11-03 02:00 Gloid 阅读(227) 评论(0) 推荐(0) 编辑