07 2018 档案

摘要:【题解】 维护个队列即可。 1 #include<cstdio> 2 #include<algorithm> 3 #include<cstring> 4 #define LL long long 5 #define rg register 6 #define N 200010 7 using nam 阅读全文
posted @ 2018-07-31 21:23 Driver_Lao 阅读(222) 评论(0) 推荐(0) 编辑
摘要:【题解】 简单粗暴的模拟题。 1 #include<cstdio> 2 #include<algorithm> 3 #include<cstring> 4 #define LL long long 5 #define rg register 6 #define N 200010 7 using na 阅读全文
posted @ 2018-07-31 20:53 Driver_Lao 阅读(289) 评论(0) 推荐(0) 编辑
摘要:【题解】 答案就是总的边权和减去最小生成树上的边权和。 1 #include<cstdio> 2 #include<algorithm> 3 #include<cstring> 4 #define LL long long 5 #define rg register 6 #define N 2000 阅读全文
posted @ 2018-07-31 20:50 Driver_Lao 阅读(121) 评论(0) 推荐(0) 编辑
摘要:【题解】 裸的最短路。直接跑dijkstra即可。 1 #include<cstdio> 2 #include<algorithm> 3 #include<cstring> 4 #define LL long long 5 #define rg register 6 #define N 200010 阅读全文
posted @ 2018-07-31 20:20 Driver_Lao 阅读(238) 评论(0) 推荐(0) 编辑
摘要:【题解】 最小生成树。区别仅仅是不需要连城一棵树,而是连成k棵树,也就是选择最小生成树里面最小的k条边。 1 #include<cstdio> 2 #include<algorithm> 3 #include<cstring> 4 #define LL long long 5 #define rg 阅读全文
posted @ 2018-07-31 20:18 Driver_Lao 阅读(204) 评论(0) 推荐(0) 编辑
摘要:【题解】 二分答案+贪心check. 1 #include<cstdio> 2 #include<algorithm> 3 #include<cstring> 4 #define LL long long 5 #define rg register 6 #define N 200010 7 usin 阅读全文
posted @ 2018-07-31 20:15 Driver_Lao 阅读(179) 评论(0) 推荐(0) 编辑
摘要:【题解】 洛谷标签上说是二分,其实是个小学数学题??可以直接算的。 1 #include<cstdio> 2 #include<algorithm> 3 #include<cstring> 4 #define LL long long 5 #define rg register 6 #define 阅读全文
posted @ 2018-07-31 19:02 Driver_Lao 阅读(112) 评论(0) 推荐(0) 编辑
摘要:【题解】 纯模拟题。 我们都知道十进制数化成m进制数可以用短除法,即除m取余、逆序排列。而m进制数化为十进制数,按权展开求和即可。 但在本题中进制的基数R可能为负数,我们知道a%R的符号与R一致,也就是说在本题中我们用短除法得到的某一位上的值可能为负数,要注意向上一位借1化成正的。 1 #inclu 阅读全文
posted @ 2018-07-31 19:00 Driver_Lao 阅读(221) 评论(0) 推荐(0) 编辑
摘要:【题解】 最短路。那么直接写dijkstra就好了。 1 #include<cstdio> 2 #include<algorithm> 3 #include<cstring> 4 #define LL long long 5 #define rg register 6 #define N 20001 阅读全文
posted @ 2018-07-31 18:47 Driver_Lao 阅读(161) 评论(0) 推荐(0) 编辑
摘要:【题解】 线段树基础题。对于每个修改操作把相应区间的sum改为区间长度-sum即可。 1 #include<cstdio> 2 #include<algorithm> 3 #include<cstring> 4 #define LL long long 5 #define rg register 6 阅读全文
posted @ 2018-07-31 18:44 Driver_Lao 阅读(142) 评论(0) 推荐(0) 编辑
摘要:【题解】 就是个树链剖分的模板题。 1 #include<cstdio> 2 #include<algorithm> 3 #include<cstring> 4 #define LL long long 5 #define rg register 6 #define N 200010 7 #defi 阅读全文
posted @ 2018-07-31 18:42 Driver_Lao 阅读(149) 评论(0) 推荐(0) 编辑
摘要:【题解】 线段树或者单调队列都可以。 1 #include<cstdio> 2 #include<algorithm> 3 #include<cstring> 4 #define LL long long 5 #define rg register 6 #define N 1000010 7 #de 阅读全文
posted @ 2018-07-31 18:40 Driver_Lao 阅读(224) 评论(0) 推荐(0) 编辑
摘要:【题解】 最大值最小化,那么一般要联想到二分。二分一个最大值,然后check一下能否分成小于等于m段即可。 1 #include<cstdio> 2 #include<algorithm> 3 #include<cstring> 4 #define LL long long 5 #define rg 阅读全文
posted @ 2018-07-31 18:39 Driver_Lao 阅读(244) 评论(0) 推荐(0) 编辑
摘要:【题意概述】 给出一个长度为n的序列a,求有多少对[i,j]满足i<j且a[i]>max(a[i+1],a[i+2],...,a[j]). 【题解】 单调栈。 倒着处理序列的元素,维护一个单调递减的栈,同时记录栈中的每个元素进栈的时间。如果当前元素x大于栈顶元素,那么栈顶到第二个元素在原素列之间的这 阅读全文
posted @ 2018-07-31 17:55 Driver_Lao 阅读(266) 评论(0) 推荐(0) 编辑
摘要:【题解】 维护一个单调栈即可。 但是因为有相同身高的存在,所以要稍微考虑下相同身高的处理。因为这个卡了一下下QAQ... 1 #include<cstdio> 2 #include<algorithm> 3 #include<cstring> 4 #define LL long long 5 #de 阅读全文
posted @ 2018-07-30 17:39 Driver_Lao 阅读(159) 评论(0) 推荐(0) 编辑
摘要:【题解】 每个软件只依赖另一个软件,且依赖关系不构成环,那么很容易想到这是树形结构。 我们用1表示以安装,用0表示未安装或已卸载;那么安装一个软件,就是把它到树根的路径上所有的点都改为1;卸载一个软件,就是把它的子树全部改为0. 状态改变的软件包数就是操作前后整棵树的点权和。 这样我们直接树链剖分即 阅读全文
posted @ 2018-07-28 10:32 Driver_Lao 阅读(217) 评论(0) 推荐(0) 编辑
摘要:【题解】 其实解法 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #define LL long long 5 #define rg register 6 #define N 200010 7 using namespa 阅读全文
posted @ 2018-07-21 22:50 Driver_Lao 阅读(236) 评论(0) 推荐(0) 编辑
摘要:【题解】 用最短路算法求A到B被扣除的最小百分比即可。稍微修改一下最短路的更新方式即可。 1 #include<cstdio> 2 #include<algorithm> 3 #include<cstring> 4 #include<cmath> 5 #define LL long long 6 # 阅读全文
posted @ 2018-07-21 21:59 Driver_Lao 阅读(234) 评论(0) 推荐(0) 编辑
摘要:【题解】 线段树维护区间中1的个数就好了。每次修改就打上标记并把区间的sum改为len-sum. 1 #include<cstdio> 2 #include<algorithm> 3 #include<cstring> 4 #define LL long long 5 #define N 20001 阅读全文
posted @ 2018-07-20 22:40 Driver_Lao 阅读(148) 评论(0) 推荐(0) 编辑
摘要:【题解】 其实就是求逆序对。直接上树状数组就好了。 1 #include<cstdio> 2 #include<algorithm> 3 #include<cstring> 4 #define LL long long 5 #define rg register 6 #define N 500010 阅读全文
posted @ 2018-07-13 20:53 Driver_Lao 阅读(216) 评论(0) 推荐(0) 编辑
摘要:【题解】 题意就是判断树上两条链是否有交。口诀是“判有交,此链有彼祖”。即其中一条链的端点的Lca在另一条链上。 我们设两条链的端点的Lca中深度较大的为L2,对L2与另一条链的两个端点分别求Lca,若满足其中一个Lca等于L2,即表示两链有交。 1 #include<cstdio> 2 #incl 阅读全文
posted @ 2018-07-12 18:48 Driver_Lao 阅读(619) 评论(0) 推荐(0) 编辑
摘要:【题解】 直接二分答案即可。 1 #include<cstdio> 2 #include<algorithm> 3 #include<cstring> 4 #define LL long long 5 #define rg register 6 #define N 200010 7 using na 阅读全文
posted @ 2018-07-11 21:36 Driver_Lao 阅读(227) 评论(0) 推荐(0) 编辑
摘要:【题解】 二分答案。 check的方法:把给出的坐标排序,从小到大扫一遍,如果当前坐标与上一个放牛的位置相差超过mid,就把cnt加一,最后判断cnt是否符合要求即可。 1 #include<cstdio> 2 #include<algorithm> 3 #include<cstring> 4 #d 阅读全文
posted @ 2018-07-11 18:49 Driver_Lao 阅读(267) 评论(0) 推荐(0) 编辑
摘要:【题解】 二分答案即可。 注意树的总高度会超过int,所以尽管M不超过int,check的时候还是要开Long Long,避免不必要的麻烦。 1 #include<cstdio> 2 #include<algorithm> 3 #include<cstring> 4 #include<cstdlib 阅读全文
posted @ 2018-07-11 18:34 Driver_Lao 阅读(132) 评论(0) 推荐(0) 编辑
摘要:【题解】 二分答案。 给出的是两位小数,并没有什么影响,乘100转化成整数就很方便了。 1 #include<cstdio> 2 #include<algorithm> 3 #define LL long long 4 #define rg register 5 #define N 200010 6 阅读全文
posted @ 2018-07-11 18:31 Driver_Lao 阅读(284) 评论(0) 推荐(0) 编辑