上一页 1 2 3 4 5 6 ··· 15 下一页
摘要: 【题解】 跟51nod 1105差不多。 二分答案求出第L个数和第R个数,check的时候再套一个二分或者用two pointers. 最后枚举ai在b里面二分,找到所有范围内的数,排序后输出。 注意最后找到的数可能多于R-L+1,需要考虑这一点。 阅读全文
posted @ 2018-10-28 20:18 Driver_Lao 阅读(385) 评论(1) 推荐(0) 编辑
摘要: 【题解】 二分答案,check的时候枚举ai再二分b,求出有多少个数比mid大(或小)。其实check的时候用two pointer也可以,因为mid是单调的,a、b也是单调的。 阅读全文
posted @ 2018-10-28 20:02 Driver_Lao 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 【题解】 经典的带权并查集题目。 设cnt[i]表示i前面的点的数量,siz[i]表示第i个点(这个点是代表元)所处的联通块的大小;合并的时候更新siz、旧的代表元的cnt,路径压缩的时候维护cnt即可。 阅读全文
posted @ 2018-10-27 23:14 Driver_Lao 阅读(217) 评论(0) 推荐(0) 编辑
摘要: 【题解】 拓扑排序+DP即可。 阅读全文
posted @ 2018-10-27 22:03 Driver_Lao 阅读(293) 评论(0) 推荐(0) 编辑
摘要: 【题解】 二分+dijkstra 二分需要交的过路费,然后跑dijkstra判断最短路是否小于s 阅读全文
posted @ 2018-10-27 20:24 Driver_Lao 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 【题解】 把询问离线,倒着加点,并查集维护连通性即可。 阅读全文
posted @ 2018-10-26 06:53 Driver_Lao 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 【题解】 先建反向图,用dijkstra跑出每个点到n的最短距离dis[i] 设f[u][k]表示dis(u,n)<=mindis(u,n)+k的方案数。对于边e(u,v,w),走了这条边的话需要多走的距离就是这条边的边权-原来u,v之间的距离,即w-(dis[u]-dis[v]) 那么转移就是f[ 阅读全文
posted @ 2018-10-25 16:47 Driver_Lao 阅读(227) 评论(0) 推荐(0) 编辑
摘要: 【题解】 这两道题是完全一样的。 思路其实很简单,对于两种边权分别建反向图跑dijkstra。 如果某条边在某一种边权的图中不是最短路上的边,就把它的cnt加上1。(这样每条边的cnt是0或1或2,代表经过这条边GPS报警的次数) 最后用每条边的cnt作为边权建图,跑dijkstra即可。 判断某条 阅读全文
posted @ 2018-10-25 14:46 Driver_Lao 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 【题解】 f[i][j]表示最后一个数为h[i],公差为j的等差数列的个数。n方枚举最后一个数和倒数第二个数转移即可。注意公差可能为负数,需要移动为正数再作为下标。 阅读全文
posted @ 2018-10-24 18:13 Driver_Lao 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 【题解】 x xor y的结果在二进制下有奇数个1,等价于x与y在二进制下的1的个数之和为奇数,因为x xor y减少的1的个数一定是偶数(两个数这一位都为1,xor的结果为0,减少了2个1) 那么答案就是序列中二进制下有奇数个1的数的个数 乘 二进制下有偶数个1的数的个数。 因为n有1e7,暴力算 阅读全文
posted @ 2018-10-23 15:47 Driver_Lao 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 【题解】 我们可以发现每次修改之后叶子结点到根的路径最多分为两段:一段白色或者黑色,上面接另一段灰色的。二分+倍增找到分界点,然后更新答案即可。 check的时候只需要判断当前节点对应的叶子结点的区间是否全部为同一种颜色,用树状数组维护所有叶子节点组成的序列的状态即可。 阅读全文
posted @ 2018-10-23 15:04 Driver_Lao 阅读(326) 评论(0) 推荐(0) 编辑
摘要: 【题解】 可以发现每次推的操作就是把序列中每个数变为下一个数,再打一个减一标记;而每次加球的操作就是把球的位置加上标记,再插入到合适的位置。 用set维护即可。 阅读全文
posted @ 2018-10-23 14:55 Driver_Lao 阅读(231) 评论(0) 推荐(0) 编辑
摘要: 【题解】 先建反向图,然后跑拓扑排序求出最长路。 将所有的点按照最长路从小到大分层,把上一层连向这一层的边按照边权为第一关键字、起点的排名为第二关键字排序。 按照这个顺序更新这一层的答案,按照这一层每个点被更新的顺序得到这一层的点的排名。 阅读全文
posted @ 2018-10-23 10:39 Driver_Lao 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 【题解】 DP. 设f[i]表示前i个字母,保留第i个字母,最多可以保留多少个字母;设g[i]为当前字母为i的位置对应的f的最大值。 转移方程就是f[i]=max(f[i], g[j]+1) (j与s[i]不冲突) , g[s[i]]=max(g[s[i]], f[i]) . 阅读全文
posted @ 2018-10-20 23:50 Driver_Lao 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 【题解】 平衡树模板题,不过因为可以离线,所以有别的做法。把询问倒着做,变成删掉数字、求中位数,于是可以二分+树状数组。 阅读全文
posted @ 2018-10-20 23:19 Driver_Lao 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 【题意概述】 一个区间的Mex为这个区间没有出现过的最小自然数,现在给你一个序列,要求求出所有区间的Mex的和。 【题解】 扫描线+线段树。 我们在线段树上维护从当前左端点开始的前缀Mex,显然从左到右Mex单调上升。 然后我们把区间左端点逐渐向右边移动,也就是扫描线是左端点。 我们可以发现每次移动 阅读全文
posted @ 2018-10-20 21:36 Driver_Lao 阅读(325) 评论(0) 推荐(0) 编辑
摘要: 【题解】 把某一行或某一列有4个1的都统计出来,然后首尾接上尽量长的,注意首尾不能选上同一个矩阵,要维护前缀、后缀1最大值和次大值。 还要注意维护矩阵内连续1的长度,因为可能有 0 0 0 0 这种情况。 0 1 1 0 0 1 1 0 0 0 0 0 阅读全文
posted @ 2018-10-20 09:56 Driver_Lao 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 【题解】 离散化+线段树,注意处理好几种标记之间的关系。 阅读全文
posted @ 2018-10-19 15:22 Driver_Lao 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 【题解】 先用floyed处理出两点间的最短路。 设f[i][j][k]表示走到第i个教室,总共换了j次,当前换或者不换,期望的最小移动距离。 分情况讨论来转移即可。 阅读全文
posted @ 2018-10-18 06:49 Driver_Lao 阅读(181) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2018-10-17 21:36 Driver_Lao 阅读(1) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 ··· 15 下一页