自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 atcoder abc404(A-E)题解

每个动物园也不会超过2此参观,因为如果参观3次以上,那一定有喜欢的动物倍参观三次以上,这非常浪费,所以一个动物园至多被参观两次。,那我问你,你把i的豆子给j,那i的豆子是不是就可以搭顺风车?如果他能转移到的人,都一穷二白。因为i的豆子总要给一个人,而不论给谁,有豆子还是有豆子,没豆子还是没豆子。无论给谁,只要它也有豆子,那么有无豆子的状态就都不会变(除了i)。因为所以科学道理,那么如果i有豆子,且他能转移到的人中,也有拥有豆子的,直接给他。所以,如果能转移到的人都一穷二白,就给那个最阳光开朗的大男孩。

2025-05-04 11:20:25 306 1

原创 P1173

可以想到,对于每个黑点,保留它本身以及他周围上下左右,和四个斜的方向,那么一个黑点保留九个点,总点数是9*c,不过这样有bug,经过我的尝试。接下来,看到,删点与联通两个词,我们可以想到一个叫做割点的东西,它的定义指的是,在一个连通图上,求出删此点和与此点直接相邻的边后,图变为不连通的所有点。因为你必须只少把一只跳蚤变成蛐蛐,否则图联通,但是,无论你变那一只跳蚤,剩下的跳蚤也只有一只。接下来,答案为-1是,要么是原来跳蚤就没有两个,这时顶多一直跳蚤,都一只了,绝不可能再不连通。那么,什么时候答案为0呢?

2025-04-07 20:32:38 320

原创 高精度超全解析

首先,对于两个数的运算,我们一般是用c++中的变量来进行,一般情况下,变量可以解决大部分问题,但是,遇到连long long这种类型都装不下的的时候,我们就需要用数组来表示一个属,并用竖式的原理进行运算了。如果是正着存,那么会出现如下情况:假设a有三位,b有四位,那么a的最高位,b 的最高位对其,也就是百位和千位,不符合加法要对位。毕竟这是最常用的高精乘,但是缺点是:复杂度太高,高达O(n*n),但是,我用的是快速傅里叶变换,O(nlogn)!其实本来我是想用普通高精乘的,后来,因为FFT太恶心!

2025-03-16 17:58:15 169

原创 洛谷P2801 教主的魔法

首先,如果我要求一段区间的和,这个区间中顶多有sqrt(n)块,零碎的值不超过2*sqrt(n),总时间复杂度sqrt(n),但问题是,修改操作的时间复杂度毫无疑问是O(n),因为不仅是块要改,所有值也要改,否则他们做零散值时值就不正确了。需优化时间复杂度,只需建立一个专门表示每一个块里的所有值加了多少的数组,如果你学过线段树,就知道他叫lazytag,每一个值得真实值,就是它本身加他所属的快对应的lazytag。另外,本人的分块是细节最好写的一种,不用复杂的运算,具体见代码。平时少抄袭,棕名两行泪。

2025-02-23 22:07:06 366

原创 atcoder agc015 c

首先,注意到题目中的条件,“每个联通块都是树”,那么,假设有一个子矩阵包含这棵树的一部分,那么这部分也一定是树。我们又知道,每棵树的点树减边数等于一。所以,前缀和表示的就是点数和边数。点数是前缀和模板,变数稍有不同,带入我的代码中理解一下即可。不过,边数要分和横边和竖边来求,否则很麻烦。第一种太复杂无法实现,而第二种无法直接用前缀和数组表示连通块数量,所以前缀和要改变一下形式。假设一个字矩阵中有边数e,点数v,一共有k个连通块。那么子矩阵的总点数-总边数=1。这题的思路无非两种:线段树,前缀和。

2025-01-12 22:26:04 303

原创 codeforces 1940B

1.假设放了a个连续一(这种方法的一是连续的,且从第一个位置开始连续),在(a+1)*2位置放一个1,然后对1~(a+1)*2执行二类型操作(下面解释为什么可以执行二操作),现在就有2*(a+1)个一。然和更新a为2*(a+1),那么下一次操作的a就是这次的(a+1)*2了。解释:1~(a+1)*2的长度是2*(a+1),原先放了a个一,现在有a+1个,正好有一半。我们在第一个和第四个上面放1,在第十个上面放1,在最后一个上面放1,这个操作使原来不可以执行2类型操作的1到10变得可以执行二类型操作。

2024-12-09 18:18:00 240

原创 c++提升速度

原理是利用get/put char的极快速度,把一个整型变量转换成一堆字符,用getchar/putchar进行输入输出。(1).数组可以转化成vector, vector的时间比同等大小的数组时间上快了很多倍。所以在需要以下技巧,当然还有很多,因为我能力有限,先介绍这些。首先,当你写了一份程序,可时间却慢如蜗牛,接下来这几个方法,让你速度直接起飞。题目 给出n个数和一个数k,问是否有一种方法,使这些数中其中两个数的和是k。一个程序的核心就是算法,当时间过长,需考虑换算法。对于n较大,无法解决。

2024-10-03 21:58:22 555

原创 atcoder abc 373 (A-D)

思路:如果出现x->y4题(你也可以看看)。支持一下我把呜呜呜。

2024-10-01 14:50:56 620 1

原创 算法学习笔记(1)并查集

其实,并查集的大概思路就是对于每一组,选出一个老大,查询时,看看两个数的老大是否相同就可以了。合并时,让一个老大臣服于另一个老大,这样,两个组的人都有共同的老大了。第二个,由于每次合并,需要查一下根,下一次又查一下根。(让高度大的树的根成为高度小的树的根的父亲,有效避免退化)这是第一个优化的地方。加入这两种优化后并查集效率极高,所有操作都是O(a(n)),a(n)这个函数比logn还快!合并1和4所在的组(这里的1的所在的组并不是1单个数,是【1,3】这个大组)然后,合并了1和3所在的一组。

2024-05-02 21:05:21 299

原创 挑战,用4种方法做a+b问题

(2)高精度方法,就是模拟竖式的过程,一般用数组进行,可是我胆小包天,直接不转存了,干脆用字符串做。(3)dijkstra,建一个图,3个顶点2个边,边权是a和b,求最远的两个点之间的最短距离。当然,方法还有很多,平方分割,线段树.....,我是个小学生,只有这么多啦。(4)最小生成树算法。(由于prim自认为比较简单,所以这里用prim)

2024-05-02 10:38:31 215 1

原创 codeforces 41B

本题是给出n天的一只股票的价格(第i天时股价为ai),你目前手上有b元钱。选择在一天买入,并在后面的一天中卖出,但你只能买卖一次(可以买多股,比如你有6元,今天股价为3元,你可以买6/3=2股,卖出时,你的钱数就是 买的股数*卖出时的股价)。那你的钱将从b变成(b/x)*y+b%x。最大差值最大是10-6=4,可只能买一股,卖出后是10元。可如果选 1,3进行买卖,你却能得到(6/1)* 3+6%1=18元,可见不仅与差值有关,也与买股数的相关。一开始有人可能会想,求一下最大差值都就行了,是错的。

2024-05-01 22:06:48 168 2

原创 codeforces 20C

由于数据范围到了2e5。只好用dijkstra。可dijkstra只能求起点到所有点的最短路。1到v的最短路可以求了,如何求路径呢?这里有一个路径还原的方法,就是记录每个节点到一的最短路中,此节点的前一个结点。求好后写一个循环,每次去他的前一个结点,到一路径还原就完成了。这题就是一个带权无向图,求节点1到节点v的最短路,输出路径即可。题目保证不出现负边。这是本小学生地一次发题解,建议丝滑连招。1.不开longlong见祖宗!2.v很大,存边权别用数组!

2024-05-01 20:10:35 208

C++ MC(交互简易版)

具有大型2D游戏我的世界的基础系统,用c++编出来的,可以存档读档,有一个比较全面的升级系统,每个等级对应不同的经验值,另外还有一个完善的交互系统以及各种有趣的功能。 运行效率极高。缺点是占用内存。另外有几种游戏机制供大家选择,会定期更新版本。

2024-09-17

游戏,游戏基础系统,好玩,用来玩的

这是一个由纯c++编出的游戏。代码简洁,游玩简单易懂,还可以在此基础上加以改进。是一个比较全面的框架。 具体是有一个升级系统,战力系统,和一个刷怪系统。升级系统共九个级别,并且有战力排行榜。战力系统,包括血量,攻击和防御。并且带有两个附属技能。另外还有一个属性点商店,可以用钱买到一些有趣的属性。目前无bug。杀怪系统带有各种属性不同的怪。打死也有不同的经验和金币奖励。

2024-09-16

Lu.MathV1.1.0

在加减法方面超过普通手机计算机,用处繁多,商业,数学,统计,日常生活,容量超大。

2024-05-05

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除