
题解
文章平均质量分 71
Just__Do__IT__
you and me ,day day up togeter
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
2021CCPC中国大学生程序设计竞赛女生专场 A. 公交线路
题目链接题目描述解题思路根据 m 前后遍历对比一下,判断正反两种顺序是不是都可以,如果都可以那就Unsure,否则如果正序符合,那就是Right,如果逆序符合,那就是Left,如果都不符合,那就是Wrong。代码#include<bits/stdc++.h>#include<stdio.h>#include<vector>#include<string>#include<algorithm>#include<map>原创 2021-11-05 23:33:11 · 419 阅读 · 0 评论 -
2021CCPC中国大学生程序设计竞赛女生专场 D. 修建道路
题目链接题目描述解题思路题目中 i-j 相连的费用是从i到j连续区间的最大费用,所以最小的总花费就是依次连接,两两取max值(因为如果要跨越多个点,假设是x1,x2,.....xmx_1,x_2,.....x_mx1,x2,.....xm,那么这条道路的花费一定大于等于max(x1,x2)max(x_1,x_2)max(x1,x2),所以还不如就直接连接相邻的节点)代码#include<iostream>#include<stdio.h>#include&l原创 2021-11-05 23:20:19 · 500 阅读 · 0 评论 -
2021CCPC中国大学生程序设计竞赛女生专场 I. 驾驶卡丁车
题目链接题目描述解题思路大模拟题代码#include<iostream>#include<stdio.h>#include<vector>#include<string>#include<algorithm>#include<map>#include<queue>using namespace std;const int maxn = 1e5+7;const int mod = 1e9+7;原创 2021-11-05 23:04:06 · 368 阅读 · 0 评论 -
2021CCPC中国大学生程序设计竞赛女生专场 G. 3G网络
题目链接题目描述解题思路当 r->∞ 时,圆相当于几乎重合,所以答案是1/n代码#include<iostream>#include<stdio.h>#include<vector>#include<string>#include<algorithm>#include<map>#include<queue>using namespace std;const int maxn = 1e5+7;原创 2021-11-05 23:01:04 · 472 阅读 · 0 评论 -
2021CCPC中国大学生程序设计竞赛女生专场 K 音乐游戏
题目链接题目描述解题思路这是一个签到题,只要统计_的个数就行了代码:#include<iostream>#include<stdio.h>#include<vector>#include<string>#include<algorithm>#include<map>#include<queue>using namespace std;const int maxn = 1e5+7;const i原创 2021-11-05 22:56:05 · 2545 阅读 · 0 评论 -
Codeforces Round #744 (Div. 3) D. Productive Meeting(贪心)
题目链接题目大意:n个人两两之间可以谈话,每个人的谈话次数为 aia_iai ,每和别人谈话一次,aia_iai 减一,当 aia_iai 为0时,他不能再和别人谈话。问你怎样分配谈话,使得总体的谈话次数最多,输出总次数,以及每次谈话的两个人的编号。解题思路:每一步直接让剩余谈话次数最多的和最少的交谈是最优的。每次找出最大的和最小的两个人,然后减一,如果还能和别人谈话,然后再放回,重新排序。注意:不要直接让他们俩一直交谈,直到一个人的次数用完,这样不是最优的!第三个例子就可以验证自然想原创 2021-10-05 18:20:21 · 181 阅读 · 0 评论 -
Codeforces Round #743 (Div. 2) C. Book
原题链接题目大意:一本书,看每个章节前必须要提前看某些章节才能看懂,询问需要看几遍,才能完全理解书。解题思路:比如:看第4章节之前,必须要先看1,2,3章节。很容易可以想到拓扑排序。在上面的例子中,只要按照 1,2,3,4,5,6 的顺序看完一遍就可以了。代码:#include <bits/stdc++.h>#include <iostream>#include <string.h>#include <algorithm>#defi原创 2021-09-22 09:28:41 · 184 阅读 · 0 评论 -
Codeforces Round #743 (Div. 2) B. Swaps
原题链接题目大意:给定两个数组 aaa 和 bbb ,aaa 数组是 1~2n 当中的所有 奇数 的一个排列,bbb 数组是1~2n当中 偶数 的一个排列,现在你可以做如下操作:选择两个序列中的任意一个选择一个位置 i(1≤i≤n−1)i(1≤i≤n-1)i(1≤i≤n−1),交换 iii 和 i+1i+1i+1 位置上的数字计算将 aaa 序列的第一个数小于 bbb 序列的第一个数的最少操作次数。1≤n≤1e51≤n≤1e51≤n≤1e5解题思路:有三种情况:第一种情况,只需要原创 2021-09-21 12:45:34 · 165 阅读 · 0 评论 -
Codeforces Round #742 (Div. 2) E. Non-Decreasing Dilemma(线段树)
题目链接题目大意:给你一个长度为nnn 的数组 aaa每次有两种操作1 x y:ax=y1 \ x \ y: a_x = y1 x y:ax=y2 l r:询问区间[l,r]内有多少对(p,q),l≤p≤q≤r 满足子序列ap≤ap+1≤⋯≤aq2 \ l \ r:询问区间 [ l , r ] 内有多少对 (p, q), l \leq p \leq q \leq r \ 满足子序列 a_p \leq a_{p+1原创 2021-09-07 00:38:15 · 177 阅读 · 0 评论 -
Codeforces Round #742 (Div. 2) D. Expression Evaluation Error(思维)
题目链接题目大意:输入两个数字 sum,nsum,nsum,n ,让你构造 nnn 个数字,使得他们的十进制之和等于 sumsumsum ,11进制之和最大解题思路:根据进制的计算方法可知,其实就是每一位上的数字乘以进制的几次方,位数越高,值越大,所以就要在能凑够n个数字的前提下,是尽可能多的数字,位数多。代码中有步骤解释。代码:#include <bits/stdc++.h>#include <iostream>#include <string.h>原创 2021-09-06 23:37:18 · 131 阅读 · 0 评论 -
Codeforces Round #742 (Div. 2) C. Carrying Conundrum(思维)
题目链接题目大意:定义了一种新的加法进位的方式,给你一个数 nnn ,计算有多少组两个数之和等于 nnn 。解题思路:将 nnn 的奇偶位分开,变成两个数 num1,num2num1,num2num1,num2,因为奇偶位之间的进位并不影响。答案就是(num1+1)∗(num2+1)−2(num1+1)*(num2+1)-2(num1+1)∗(num2+1)−2代码:#include <bits/stdc++.h>#include <iostream>#inclu原创 2021-09-06 22:24:26 · 353 阅读 · 1 评论 -
Codeforces Round #742 (Div. 2) B. MEXor Mixup(异或性质)
题目链接题目大意:构造一个非负数的数组,使得数组中最小的不属于这个数组的非负数(MEX)为 aaa,数组中所有数的异或值等于 bbb,输出构造的这个数组的最短长度解题思路:根据第一个条件,很容易能够想到从 0~ (a−1)(a-1)(a−1) 构造,然后避免数组中出现 aaa 。假设前a项的异或值等于 sumsumsum如果 sum==bsum== bsum==b ,那么数组构造结束;如果不等于,就得再凑其他数,此时要知道异或的一个性质:A⊕B=C,则有A⊕C=B,B⊕C=AA \oplus原创 2021-09-06 22:05:15 · 167 阅读 · 0 评论 -
【算法】单调栈
目录单调栈的定义:伪代码:应用1.模板题2.视野总和问题3.柱状图中的最大矩形4.最大区间碎碎念:单调栈的定义:从名字上就能猜出来,这种数据结构在栈的基础上,栈内的元素是单调有序的,所以单调栈分为单调递增栈和单调递减栈(增减性的划分是根据栈顶到栈底的元素变化规律)(搞不懂为什么定义要从栈顶开始看,栈是从栈底开始加入元素的呀,好像有一点反思维)单调递增栈: 从栈顶往栈底看,是单调递增的关系(含相等)单调递减栈: 从栈顶往栈底看,是单调递减的关系(含相等)例子:现在有一组数:3,4,2,6,4,5原创 2021-08-05 23:16:41 · 6619 阅读 · 1 评论 -
【hdu】1828 Picture —— 扫描线求周长
原题链接目录题目:解题思路:代码:碎碎念:题目:解题思路:题目大意:给你n个边平行与坐标轴的矩形,矩形可能有重叠部分,问你所有矩形构成的图形的轮廓线多长(即外周长+内部中空的周长)错误想法:做了之前的求矩形面积和的问题,那么自然会想到每一根扫描线都用线段树维护了有效的长度,那么每一次都加上那个长度,先从左往右跑一边,再从上往下跑一遍,答案不就出来了?这真的对吗?答案是:错误的!题目只要求出轮廓线长度,如果那样算,结果比答案大很多,因为算了很多不必要的长度。正确做法:先考虑横边:观察下图中原创 2021-08-10 21:12:58 · 406 阅读 · 0 评论 -
【ACWing】248. 窗内的星星——扫描线
原题链接目录题目:解题思路:代码碎碎念题目:解题思路:设某颗星星的坐标为 (x,y)(x,y)(x,y) ,那么当窗户的右上角端点的坐标在 (x∼x+w−1,y∼y+h−1)(x\sim x+w-1 , y\sim y+h-1)(x∼x+w−1,y∼y+h−1) 这个范围内时,星星就会出现在窗户里。(因为题目中说边界的星星不算,所以长和宽都要减1)于是我们可以将每个星星都扩展成一个矩形,通过画图我们可以发现:若两个矩形之间有重叠部分,那么他们便可以放在同一个窗户中,那么这个窗户的亮度就是这两原创 2021-08-10 14:06:30 · 337 阅读 · 0 评论 -
【hdu】1255 覆盖的面积——扫描线求重叠面积和
原题链接目录题目:解题思路:代码:碎碎念:题目:解题思路:这题的思路和 【ACWing】247. 亚特兰蒂斯 的差不多,只不过线段树中需要多存储一个变量val2,记录区间内被覆盖2次及以上的线段的长度,在维护的时候,需要根据 cover 的值,分类讨论。当 cover=0 的时候,代表该区间没有被全部覆盖过,那么该区间的 val1,val2 的长度分别是各自左子区间和右子区间长度之和;当 cover>=2 的时候,代表该区间至少被完全覆盖了两次,那么 val1,val2 的长度都等于原创 2021-08-10 14:03:59 · 262 阅读 · 1 评论 -
【ACWing】247. 亚特兰蒂斯——扫描线求面积
原题链接目录题目:解题思路:代码:题目:解题思路:多个矩形的面积之和,那应该要去除掉重叠部分,我怎么知道哪些重合了呢?那就看最终所有矩形堆一起的状态,转化成了一个多边形的面积。根据初中的几何知识可以知道,要求一个多边形的面积,可以采取切割的办法。切割时,每一条分界线就可以看作是一条从左往右的扫描线。来模拟一下我们记录每一条竖直方向上的线段(一个含x坐标,下端y坐标y1,上端y坐标y2,加减的标记k的四元组(x,y1,y2,k))然后按照x坐标进行排序,从左往右扫描一遍。每一段矩形的宽原创 2021-08-10 13:18:37 · 462 阅读 · 0 评论 -
【ACWing】245. 你能回答这些问题吗(线段树)
原题链接目录题目:输入输出样例:解题思路:代码:碎碎念:题目:输入输出样例:解题思路:单点修改和区间查询问题,而且数据是 5e55e^55e5 的,很自然想到了用线段树来维护。区间最大连续子段和=max(左子树的最大连续子段和,右子树的最大连续子段和)区间最大连续子段和=max(左子树的最大连续子段和,右子树的最大连续子段和)区间最大连续子段和=max(左子树的最大连续子段和,右子树的最大连续子段和)???这样想的话,那么遗漏了一种情况:左端点在左子树,右端点在右子树。所以,最终父节点的答案原创 2021-08-05 11:05:50 · 293 阅读 · 0 评论 -
Bin Packing Problem (线段树+multiset)
原题链接目录题目:输入输出样例:题目大意:解题思路:代码:碎碎念:题目:输入输出样例:题目大意:装箱问题。给你含有nnn个数字的一个数组,每个数字代表物品的重量,给你每个箱子的最大容量ccc。有两种装箱子的策略:1:首次适应算法:每次从前往后遍历每个已经开的箱子,如果可以放得下,那就放进去;如果都放不下,那就新开一个箱子。2:最佳适应算法:找到所有已经打开的箱子中可以放下这个物品的箱子中剩余容量最小的那个箱子。如果都放不下,那就新开一个箱子。求:分别运用两种算法,按顺序将所有物品装箱,至原创 2021-08-04 17:28:27 · 549 阅读 · 0 评论