上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 15 下一页
摘要: 【题解】 先把区间按照未离散化的长度排序,保存区间长度,然后离散化区间端点。每次把区间覆盖的点的覆盖次数加1,如果某个点被覆盖次数大于等于m,就从前往后开始删除区间直到没有一个点被覆盖的次数大于等于m,然后继续加入区间。边做边维护答案即可。 1 #include<cstdio> 2 #include 阅读全文
posted @ 2018-04-07 16:33 Driver_Lao 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 【题解】 第一眼看题飞快地想到一种做法,然后假掉了。 这道题其实是主席树的模板题来着。但是也有别的水法。 我们可以发现每个位置的查询区间是[1,min(a[i],i-1)],所以我们可以把查询区间按照右端点排序。开一个权值树状数组记录前i个a[i]的出现情况。我们从1到n按顺序插入a[i],每个位置 阅读全文
posted @ 2018-04-06 19:00 Driver_Lao 阅读(547) 评论(0) 推荐(0) 编辑
摘要: 【题意概述】 给出平面上的10W个点,要求判断这些点能否被两条直线穿过,即一个点至少在一条直线上。 【题解】 思路很快可以想到。取3个不共线的点,它们形成一个三角形;如果有解,其中的一条直线一定与三角形的一条边重合。于是用这三条边一一进行验证即可。 第一次交被卡了精度,后来意识到判断三个点是否共线写 阅读全文
posted @ 2018-04-06 12:07 Driver_Lao 阅读(264) 评论(0) 推荐(0) 编辑
摘要: 50%的数据满足:1 <= k <= 5, 1 <= ci <= 3 100%的数据满足:1 <= k <= 15, 1 <= ci <= 5 【题解】 本题中ci很小,因此可以直接5维保存可以涂i块的油漆有多少种颜色。然后利用乘法原理进行DP 1 #include<cstdio> 2 #inclu 阅读全文
posted @ 2018-04-05 21:31 Driver_Lao 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 【题解】 二分答案+二分图匹配。 先二分最小值Min,然后扫一遍这个矩阵,把满足a[i][j]<=Min的i,j连边,之后跑二分图匹配,如果最大匹配数大于等于n-k+1,当前的Min即是合法的。题目中要求选出的数不能在同一行或者同一列,而这种行与列连边跑二分图的做法就保证了一行与一列对应,最多只能选 阅读全文
posted @ 2018-04-04 22:57 Driver_Lao 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 【题解】 给出一条路径,问树上的点被经过了几次。 显然树剖之后树上差分就好了。 1 #include<cstdio> 2 #include<algorithm> 3 #define N 300010 4 #define rg register 5 using namespace std; 6 int 阅读全文
posted @ 2018-04-03 11:14 Driver_Lao 阅读(203) 评论(0) 推荐(0) 编辑
摘要: 【题解】 我们可以轻松想到朴素的状态转移方程,但直接这样做是n^2的。所以我们考虑采用树状数组优化。写法跟求逆序对很相似,即对前缀和离散化之后开一个权值树状数组,每次f[i]+=query(sum[i]),再把f[i]加入到sum[i]位置上。这样可以保证每次f[i]加上的是在它前面的、sum小于它 阅读全文
posted @ 2018-04-03 06:52 Driver_Lao 阅读(192) 评论(0) 推荐(0) 编辑
摘要: 【题解】 每个情报员的危险值val[i]应该是一个分段函数,前面一段是平行于x轴的横线,后面一段是一次函数。我们可以用fx(t)=t-b[x]表示这个一次函数。每次询问一条链上fx(t)大于c的点的个数,也就是问有多少个点满足t-b[x]>c,移项得b[x]<t-c,不等式左边只与点有关,可以当做点 阅读全文
posted @ 2018-04-02 19:51 Driver_Lao 阅读(240) 评论(0) 推荐(0) 编辑
摘要: 【题解】 因为这道题中n比较小,n^2效率是可以接受的。 枚举两个矩形,如果它们有重叠部分,就用并查集合并一下即可。 1 #include<cstdio> 2 #include<algorithm> 3 #define N 8000 4 #define rg register 5 using nam 阅读全文
posted @ 2018-04-02 13:55 Driver_Lao 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 【题解】 n^6的做法很好想,然而这样复杂度不对。。 然后我们可以发现R和C可以分开求,这样复杂度降到了n^4. 使用树状数组可以把复杂度降到n^3logn,可以顺利通过。 1 #include<cstdio> 2 #include<algorithm> 3 #define N 1010 4 #de 阅读全文
posted @ 2018-04-02 11:15 Driver_Lao 阅读(197) 评论(0) 推荐(0) 编辑
摘要: 【题解】 烧开每一杯水之后都用它去把其他没烧开的水焐热,这样显然是最优的。然后推推式子或者列表找规律就好了。 1 #include<cstdio> 2 #include<algorithm> 3 #define rg register 4 using namespace std; 5 int n; 阅读全文
posted @ 2018-04-02 08:17 Driver_Lao 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 【题解】 鲜活的大水题。。。 把区间排个序然后瞎搞就可以了,发现现在区间的左端点比之前区间的最大的右端点还大,那就增加一个答案区间。每次更新目前最大右区间。 1 #include<cstdio> 2 #include<algorithm> 3 #define N 200010 4 #define r 阅读全文
posted @ 2018-04-01 21:50 Driver_Lao 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 【题解】 直接把松弛操作中dis[to]=dis[now]+e[i].dis改成dis[to]=dis[now]*e[i].dis是不行的,因为这样做会爆long long. 同时也可以发现在最短路中我们并不能边松弛边取模,这会导致答案错误。 其实我们可以把边权取个log. 因为log(M*N)=l 阅读全文
posted @ 2018-04-01 20:13 Driver_Lao 阅读(401) 评论(0) 推荐(0) 编辑
摘要: 【题解】 最短路计数的模板题吧。。要把重边判掉。。 1 #include<cstdio> 2 #include<algorithm> 3 #define N 2010 4 #define rg register 5 using namespace std; 6 int n,m,tot=0,dis[N 阅读全文
posted @ 2018-03-30 22:00 Driver_Lao 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 【题解】 扫描线+线段树。 我们记第i部电影上次出现的位置是$pre[i]$,我们从$1$到$n$扫描,每次区间$(pre[i],i]$加上第i部电影的贡献$w[f[i]]$,区间$[pre[pre[i]],pre[i]]$减去第i部电影的贡献$w[f[i]]$. 1 #include<cstdio 阅读全文
posted @ 2018-03-29 13:53 Driver_Lao 阅读(189) 评论(0) 推荐(0) 编辑
摘要: ·求1到n的严格次短路。 【题解】 dijktra魔改?允许多次入队,改了次短路的值也要入队。 1 #include<cstdio> 2 #include<algorithm> 3 #define M 200010 4 #define N 5010 5 #define rg register 6 u 阅读全文
posted @ 2018-03-26 21:46 Driver_Lao 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 【题解】 活捉水题一只。。。 RMQ问题,ST表即可。区间最大最小各求一遍。 1 #include<cstdio> 2 #include<algorithm> 3 #include<cmath> 4 #define N 200010 5 #define rg register 6 using nam 阅读全文
posted @ 2018-03-26 19:15 Driver_Lao 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 【题解】 为了让某个选手能够获得总分第一,就让他最后一天的得分是n,并且让别的选手的得分的最大值尽量小。于是我们先把目前积分排序,并且让他们最后一天的排名刚好与积分排名相反。即某个积分排名为X的人最后一天排名为n-X+1. 然后我们在里面找出最高总分mx。 接着依次枚举每个人,如果他的积分加上n≥m 阅读全文
posted @ 2018-03-23 17:05 Driver_Lao 阅读(267) 评论(0) 推荐(0) 编辑
摘要: 【题解】 题目要求找到一个集合点,使3个给定的点到这个集合点的距离和最小,输出集合点的编号以及距离。 设三个点为A,B,C;那么我们可以得到Dis=dep[A]+dep[B]+dep[C]-dep[Lca]-dep[Lca2]*2;其中Lca是A,B的最近公共祖先;Lca2是Lca与C的最近公共祖先 阅读全文
posted @ 2018-03-22 21:59 Driver_Lao 阅读(240) 评论(0) 推荐(0) 编辑
摘要: 【题解】 手残写错调了好久QAQ...... 洛谷的数据似乎比较水。。 n个正整数!!这很重要 这道题是个类似two pointer的思想,外加一个单调队列维护当前区间内长度为d的子序列中元素之和的最大值。 枚举右端点,如果左端点到右端点的元素和减去区间内长为d的子序列中元素和的最大值,大于给定的P 阅读全文
posted @ 2018-03-22 19:46 Driver_Lao 阅读(172) 评论(0) 推荐(0) 编辑
上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 15 下一页