上一页 1 ··· 32 33 34 35 36 37 38 39 40 ··· 65 下一页
摘要: 夜晚使人着迷。没有猝死非常感动。 A:显然对于水平线段,只有横坐标的左端点为1的时候才可能对答案产生影响;对于竖直直线,如果要删一定是删去一段前缀。枚举竖直直线删到哪一条,记一下需要删几条水平线段就可以了。想当然的以为竖直直线横坐标是升序排的,因为这个wa了两发感觉非常惨。 #include<ios 阅读全文
posted @ 2018-11-05 10:24 Gloid 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 线段树优化建图裸题。建两棵线段树,一棵表示入一棵表示出。对题中所给的边新建一个虚拟点,将两段区间拆成线段树上对应区间,出线段树中对应区间所表示的点向虚拟点连边权0的边,虚拟点向入线段树中对应区间所表示的点连边权1的边;线段树上的点之间连边权0的边(表示入的由父亲连向儿子,表示出的由儿子连向父亲),表 阅读全文
posted @ 2018-11-05 00:00 Gloid 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 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) 编辑
摘要: 考虑统计每个数字的贡献。设f[i]为前缀i中该数的出现次数,则要统计f[r]-f[l]>(r-l)/2的数对个数,也即2f[r]-r>2f[l]-l。 注意到所有数的f的总变化次数是线性的,考虑对每次变化进行统计。 对于当前考虑位置i,统计r∈[i,nxt[a[i]])时a[i]的贡献。如果将之前的 阅读全文
posted @ 2018-11-02 21:46 Gloid 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 考虑边只有一种权值的简化情况。那么当且仅当两点可以通过边权<=x的边连通,且连通块内最大边权为x时,两点间存在路径max为x的路径。可以发现两种权值是类似的,当且仅当两点可以通过边权1<=x且边权2<=y的边连通,且连通块内最大边权1为x、最大边权2为y时,两点间存在路径max为(x,y)的路径。 阅读全文
posted @ 2018-11-02 18:00 Gloid 阅读(185) 评论(0) 推荐(0) 编辑
上一页 1 ··· 32 33 34 35 36 37 38 39 40 ··· 65 下一页