C++题解
文章平均质量分 90
conti123
看博客请按访问量看!(水的有点多)
展开
-
【题解】洛谷 CF11D A Simple Task
求无向图中的简单环个数,保证不存在重边和自环。简单环:除起点外,其余的点都只出现一次的回路。就为起点,那就是找到环了,直接统计即可。个节点走过的状态,起点为。原创 2023-11-29 13:51:09 · 974 阅读 · 0 评论 -
【题解】P2622 关灯问题II
现在这些灯都是开的,给出所有开关对所有灯的控制效果,求问最少要按几下按钮才能全部关掉。一个整数,表示最少按按钮次数。的话,如果这盏灯是关的,那么把它打开,否则也不管;,那么当这盏灯开了的时候,把它关上,否则不管;然后暴力枚举当前状态按下第几个开关后的状态。个按钮,对于所有的灯都有一个效果。的大小并不确定,无法保证DP条件中的。考虑用宽搜,存的状态为当前灯的状态。其中,按下每个开关,对于其对第。,无论这灯是否开,都不管。,那按完后这个灯一定关着。,那按完后这个灯一定开着。串来表示灯的开关状态,原创 2023-11-29 13:08:35 · 2015 阅读 · 0 评论 -
【题解】P2627 [USACO11OPEN] Mowing the Lawn G 题解
在一年前赢得了小镇的最佳草坪比赛后,Farmer John 变得很懒,再也没有修剪过草坪。现在,新一轮的最佳草坪比赛又开始了,Farmer John 希望能够再次夺冠。只连续的奶牛,那么,这些奶牛就会罢工去开派对 😃。因此,现在 Farmer John 需要你的帮助,计算 FJ 可以得到的最大效率,并且该方案中没有连续的超过。然而,Farmer John 的草坪非常脏乱,因此,Farmer John 只能够让他的奶牛来完成这项工作。第一行:一个值,表示 Farmer John 可以得到的最大的效率值。原创 2023-11-28 13:28:16 · 937 阅读 · 0 评论 -
【题解】洛谷 P2704 [NOI2001] 炮兵阵地
现在,将军们规划如何部署炮兵部队,在防止误伤的前提下(保证任何两支炮兵部队之间不能互相攻击,即任何一支炮兵部队都不在其他支炮兵部队的攻击范围内),在整个地图区域内最多能够摆放多少我军的炮兵部队。如果在地图中的灰色所标识的平原上部署一支炮兵部队,则图中的黑色的网格表示它能够攻击到的区域:沿横向左右各两格,沿纵向上下各两格。从图上可见炮兵的攻击范围不受地形的影响。由于每一行都受上两行的状态的影响,所以我们需要开三维数组。一行一个整数,表示最多能摆放的炮兵部队的数量。的网格地图上部署他们的炮兵部队。原创 2023-11-27 14:07:12 · 2029 阅读 · 0 评论 -
【题解】洛谷 P1433 吃奶酪
一只小老鼠要把它们都吃掉,问至少要跑多少距离?处理完这些之后,就是裸的状压DP了,直接套模板即可。考虑状压DP,定义状态。点,走过的点的状态为。,然后枚举由哪个节点。两点之间的距离公式为。原创 2023-11-25 11:13:12 · 979 阅读 · 0 评论 -
【题解】洛谷 CF788B Weird journey
而对于删除的第二条边,如果是非自环,那么图就有两个积点,存在欧拉路径,如果是自环,那么图所有点为偶点,存在欧拉回路。否则我们在分析:由于我们是将每条边当作两条边的,那么对于建的图来说,每个顶点的度数为偶数,及一定存在欧拉路。条路径仅走一遍,问不同的路径总数有多少,如果仅走一遍的两条边不同则将这两条路径视为不同。如果删除了一个自环,那剩下的所有点的度数仍然为偶数,所以可以随意删除下一条边。如果删除两条非自环,如果可行,那么它们一定共顶点,只有这样才会使共顶点的度数。,为积点,存在欧拉路径。原创 2023-11-25 08:43:54 · 1085 阅读 · 0 评论 -
【题解】洛谷P6423 [COCI2008-2009#2] SVADA
肯定是二分了,于是我们在考虑怎么计算生产和开的椰子数。只第一种猴子的两个相关数据,具体解释请参照题目描述。只第二种猴子的两个相关数据,具体解释请参照题目描述。生产的椰子个数很容易得出为每个猴子生产的椰子个数总和。秒的椰子,找出一个分界点,使得分界点前生产的椰子。,表示猴子在花园中度过的总时间,以秒为单位。题目说的有点绕,但读懂题意后还是很简单的。只猴子能开椰子,一共生产/开了。最终看 cnt 是否大于。,表示第一种猴子的只数。,表示第二种猴子的只数。只猴子能生产椰子,有。原创 2023-11-24 13:00:03 · 772 阅读 · 0 评论 -
【题解】洛谷P3443 [POI2006] LIS-The Postman 题解
最后还有一个小技巧,及我们如果合并了边,在最后输出时还有点儿麻烦,所以=我们可以加几个数组,让程序在求欧拉回路时如果碰到了指定序列(合并后)中的边,就只能遍历完序列的边,这样输出也方便。那么在我们就来考虑怎么将边合成了,如果直接按照每条序列合并的话,会发现可能存在几条序列刚好有公共部分从而卡掉我们的程序。所以我们先给每条边编上一个编号,在维护指向这条边的上一条边和这条边指向的下一条边,及前驱和后继。而维护起来也是很容易的,用 map 存边的编号,开个数组记录后继,再用循环不断合并边。原创 2023-11-23 13:33:59 · 184 阅读 · 0 评论 -
NOIP2011提高组 P1313
NOIP2011提高组 二项式定理原创 2023-08-27 14:47:49 · 46 阅读 · 0 评论 -
【题解】洛谷 P9584
个点两两之间距离求出来。这一步可以转换为求路径,及每条边经过的次数。个点到连接点的距离之和和新连接的边的经过次数。个点的距离之和可以转换为两个东西:剩下。个点两两之间距离之和也可以求出来。,我们发现,对于一个子节点。为根节点的子树有几个节点。后,对于每次的询问,可以。那么在第一次 dfs 中,在第二次 dfs 中而前。个点,我们发现其和前。原创 2023-08-27 07:58:49 · 45 阅读 · 0 评论 -
【题解】洛谷 CF4A
判断输入的正整数能否分成两个正偶数,能则输出YES,不能则输出NO。首先,能拆成两个偶数的一定是偶数。也不对,0不是正偶数。原创 2023-08-09 19:47:38 · 101 阅读 · 0 评论 -
【题解】洛谷 CF1A
用 a×a 的石板覆盖 n×m 的长方形广场,允许石板覆盖的区域超出广场,不允许打破石板,石板的两侧应平行于广场两侧,要求覆盖完广场所需的石板数量最少是多少。但这也不是对的,因为可能覆盖不完全,导致你还要多一张,而C++的除自动向下取整,所以我们还要判断是否要+1。要求用a* a的覆盖n*m的,我们可以想到算出它行需要几个,列需要几个,再乘起来就好了。于是就有人说道:这也太简单了。原创 2023-08-09 19:34:29 · 119 阅读 · 0 评论 -
【题解】洛谷 CF139B
每个房间的四周要贴上同种墙纸,多了也不能用到别的房间,墙纸可以裁剪但不能旋转,且首尾不能拼接(竖直方向必须是同一张墙纸,不能底下用第一张上面用第二张),问至少需要多少钱。然后我们就可以开始贴壁纸了,这个就不说了,计算过程很简单,看程序即可。所以我们直接暴力枚举每一个房间的最小花费,再累加即可。有 n 个房间,m 种墙纸,第。种墙纸的长宽价格分别是。个房间的长宽高分别是。原创 2023-08-08 21:28:10 · 33 阅读 · 0 评论 -
【题解】洛谷 CF141E
有一个 n 个点 m 条边的无向图,每条边可能有两种颜色 S 或 M ,请你判断是否存在并输出一种这样的方案,使得其生成树中边的颜色为 S 和 M 的正好各占一半。如果无解,输出 −1 ,否则先输出这样的生成树的边的个数,再输出一种合法的情况的边的集合。我们先来分析一下什么情况是合法的,什么情况是不合法的。原创 2023-08-08 20:17:52 · 82 阅读 · 0 评论 -
【题解】洛谷 CF708C
给定一个含有n个点的树,如果以某点i为根,其所有的子树的大小(节点个数)都不大于n/2,则称这个点为该树的重心,现在你有一种操作,操作可以任意删除树中的一条边,然后再任意加入一条边,删除和加入后还要保证是一棵树,问第i个点是否可以通过这种操作变成树的重心,如果可以输出1,若不不行,输出0。我们一定是从这个子树里面选一个子树接在当前的根上面,否则不是最优的,那么就要从该子树里面找到一个小于等于。题目是让我们求每个点作为根节点时能否成为树的重心,所以我们用换根DP的做法来解这题。同时,别忘了更新up[i]原创 2023-08-07 21:39:49 · 53 阅读 · 1 评论 -
【题解】洛谷 CF358A
种状态,分别是外离,外切,内切,相交,内含。其中有交点的是外切,内切,相交。由于我们知道了直径,所以圆心的位置是可以算出来的,所以圆心距也能算出来。轴重合,显然不为所求。所以我们就是要判断是否有两圆相交。,若两圆相切,则切点在两圆连心线上,而两圆圆心都在。连线作为直径向上作半圆,问是否有除x轴上的交点。根据数学书的某一页,两个圆一共有。所以我们就可以开始暴力出奇迹了。轴上,所以其连心线也一定和。所以我们直接暴力枚举。原创 2023-08-07 19:07:06 · 39 阅读 · 1 评论 -
【题解】洛谷 P4047
我们知道,同一个部落的野人总是生活在附近。我们把两个部落的距离,定义为部落中距离最近的那两个居住点的距离。聪聪研究发现,荒岛野人总是过着群居的生活,但是,并不是整个荒岛上的所有野人都属于同一个部落,野人们总是拉帮结派形成属于自己的部落,不同的部落之间则经常发生争斗。对于任意一种部落划分的方法,都能够求出两个部落之间的距离,聪聪希望求出一种部落划分的方法,使靠得最近的两个部落尽可能远离。我们先算出边权,然后从小到大排序,然后把小的边划分到一个部落里,这样任意两个部落间的最小距离就一定大于等于这条边。原创 2023-08-07 11:14:28 · 50 阅读 · 1 评论 -
【题解】洛谷P1991
任意两个配备了一条卫星电话线路的哨所(两边都有卫星电话)均可以通话,无论他们相距多远。而只通过无线电收发器通话的哨所之间的距离不能超过 D,这是受收发器的功率限制。收发器的功率越高,通话距离 D 会更远,但同时价格也会更贵。收发器需要统一购买和安装,所以全部哨所只能选择安装一种型号的收发器。换句话说,每一对哨所之间的通话距离都是同一个 D。你的任务是确定收发器必须的最小通话距离 D,使得每一对哨所之间至少有一条通话路径(直接的或者间接的)。2 种不同的通讯技术用来搭建无线网络;同时,这里的ans应该是。原创 2023-08-07 10:29:57 · 38 阅读 · 1 评论 -
【题解】洛谷 CF1076B
给定一个整数n,按照如下算法进行操作如果1.n=0,结束算法;2.找到n的最小质因子;3.n−=d并回到操作1;原创 2023-08-06 21:08:06 · 32 阅读 · 0 评论 -
【换根DP例题】——P3047 [USACO12FEB] Nearby Cows G
给你一棵 n 个点的树,点带权,对于每个节点求出距离它不超过 k 的所有节点权值和 m i。原创 2023-08-06 20:00:28 · 50 阅读 · 0 评论 -
【题解】洛谷 CF334B
他认为,任何像样的八点集都必须由三条不同的整数垂直直线和三条不同整数水平直线的所有成对交集组成,除了这九点的平均值。输入8个点的坐标,如果这八个点是由三个不同的横坐标和三个不同的纵坐标任意组合而成的9个点中的外围8个点,输出 “respectable”,否则输出"ugly"。其中,红点是合法的,蓝点是不合法的。了解完这些之后我们就可以打代码了。个点不能有重复的(否则就没有。个点能否组成如图的红色点。值的不同的个数必须恰好有。而我们的问题就是求给出的。个,这样才能满足上图。个点组成了一个矩形。原创 2023-08-06 19:44:29 · 35 阅读 · 0 评论 -
【换根DP例题】——深度和最大 P3478
给定一个 n 个点的树,请求出一个结点,使得以这个结点为根时,所有结点的深度之和最大。一个结点的深度之定义为该节点到根的简单路径上边的数量。定义:f[i]为i节点为根时的所有深度和,d[i]表示以i为根节点的所有子节点的个数(包含自身)对比发现:所有2号点的子树的深度都-1,同时除了2号点的子树外,其他的点的深度都+1。先用一遍dfs预处理d数组,再用一遍dfs处理f数组,最后输出。上图是以1为根节点时各节点的深度。这是以2为根节点时各节点深度。其中,v为子节点,u为父节点。原创 2023-08-04 21:42:11 · 213 阅读 · 1 评论 -
【树形DP例题】——树上染色
树上染色 有一棵点数为 n的树,树边有边权。给你一个在 0~n 之内的正整数 k,你要在这棵树中选择 k个点,将其染成黑色,并将其他的 n-k个点染成白色。将所有点染色后,你会获得黑点两两之间的距离加上白点两两之间的距离的和的收益。问收益最大值是多少。0原创 2023-08-03 20:01:22 · 365 阅读 · 0 评论 -
【DP例题】滑雪
Bessie买了一张地图,地图上显示了N(1原创 2023-07-14 22:38:00 · 119 阅读 · 1 评论 -
【LCA变式例题】—— Trees and Queries
给定一个 n 个点的树,相邻点的距离为 1。q 个询问,每个询问包含五个整数: x,y,a,b,k。含义是:在原树上新连上一条边 (x,y) ,要求判断一下从 a 点是否有距离为 k 的到 b 的路径。注意:每个询问是独立的,即上次询问加上的边,不能为这一次的询问所用。这一条路径也许会重复经过某一条边或某一点。原创 2023-07-18 07:00:00 · 125 阅读 · 1 评论