摘要: 首先如果L=1,那就可以直接用一个优先队列来做 但它并不是1 所以要换个做法 假设我们已经知道第L的数是x,第R的数是y 那其实就只需要找到[x+1,y+1]这一段,然后再加上一定数量的x和y就是答案 于是可以枚举A[i],二分B[j]找到 然后考虑怎么找第L的数是多少 其实也是二分出一个数,然后比 阅读全文
posted @ 2018-10-29 21:22 Ressed 阅读(229) 评论(0) 推荐(0)
摘要: 对每趟车建一个虚点p,对于不停车的x,连边(x,p,1);对于停车的y,连边(p,y,0)有一条边(a,b,l)就是说b-a>=l由于题目保证一定能走,直接拓扑序dp算最大的就行了 阅读全文
posted @ 2018-10-29 21:09 Ressed 阅读(172) 评论(0) 推荐(0)
摘要: 设s[x][i]表示从根到x的异或和在第i位上的值(0/1),(a,b,i)表示a到b的异或和在第i位上的值那么就有(a,b,i)=(s[a][i]^s[b][i]^s[lca][i]^s[lca][i])=(s[a][i]^s[b][i])也就是说,能搞出来s[a][i]和s[b][i]的相同或不 阅读全文
posted @ 2018-10-29 21:08 Ressed 阅读(263) 评论(0) 推荐(0)
摘要: 注意到,所有的-1应该是一个不降的序列,否则不会更优那就先求出来不是-1的的逆序对个数,然后设f[i][j]表示第i个-1放成j的前i个-1带来的最小逆序对数量这个可以树状数组来求 阅读全文
posted @ 2018-10-29 21:07 Ressed 阅读(216) 评论(0) 推荐(0)
摘要: luogu1415 拆分数列的加强版 先考虑弱化版怎么做 设f[i]表示某一串数,最后一个数的右端点是i时,它的左端点的最大值(也就是说,这一串数的最后一个数尽量小) 那么有$f[j]=max\{i+1|num[i+1,j]>num[f[i],i]\}$ 这样推下去,f[N]就是最后一个数的最小值 阅读全文
posted @ 2018-10-29 10:22 Ressed 阅读(252) 评论(0) 推荐(0)