avatar
文章
165
标签
111
分类
5

首页
分类
友链
说说
Doraemon's Blog
搜索
首页
分类
友链
说说

Doraemon's Blog

并查集求联通块
发表于2021-02-26|题目|并查集求联通块
P1197 [JSOI2008]星球大战 题意n个星球,m条边,k此摧毁,每次都会摧毁一个星球,摧毁一次求一次联通块,没摧毁时也要输出一次 解法求联通块有两种方法 利用dfs或者bfs从每一个点出发,把能到达的点都标记,每一个点都走一次,时间复杂度为O(n), 使用并查集,单独n个点联通块就是n个,当两个点连接起来并且这两个点分别属于两个不同的联通块时,把他们合并成一个集合,联通块数量-1,时间复杂度差不多等于边的数量,>O(m) 如果只是求一次联通块的数量显然第一种方法更优,但是这道题每少一个点就要求一次联通块,如果用第一种方法时复O(kn),这道题会超时,这时如果用并查集正着来做,时复O(mk),也会超时,但是换一种思路,这道题要摧毁星球,我们倒着来,修建星球,每修建一个求一次联通块,而这时并查集时复就是常数级别O(max(m,k)),每修建一个多了一个点,联通块+1,看看和这个点相连的点是否属于一个集合,属于就-1,一个pair存点,再用链式前向星存一下图 CODE12345678910111213141516171819202122232425262728293031 ...
种类并查集
发表于2021-02-25|算法|种类并查集
种类并查集可以解决多种关系的问题,比如两个人不是朋友的关系,其思想是多开几倍的空间,假如有n种关系,就开n倍的空间,然后用+n来表示两个不同集合的关系 食物链P2024链接:https://www.luogu.com.cn/problem/P2024 开3倍空间维护3个集合,分别表示A、B、C,例如1和2是朋友,那就把3个集合中的1和2合并,1吃2,就把A集合中1和B集合中的2合并,B集合中的1和C集合的2合并,C集合的1和A集合的2合并,再来一个2吃3,这样一来C中的3和A中的1也在一个集合里了,维护了C吃A的关系,也就是如果Ai和Bj的祖先相同就表示Ai吃Bj,另外两个同理 CODE12345678910111213141516171819202122232425262728293031323334353637383940414243444546#include <bits/stdc++.h>#define debug freopen("in.txt","r",stdin); freopen("out.txt" ...
洛谷P1069-细胞分裂
发表于2021-02-25|题目|质因子分解
题目链接 题目描述 题目大意:有n种不同数量的细胞,每一个细胞每一秒都会分裂出一个新的,现在要把某一种细胞平均分到m1^m2^个容器里面,问选一种细胞,使得等待的时间最短,如果无法均分到容器中,就输出-1 做法要均分就表示Si^t^%m1^m2^==0求t的最小值,看一下数据范围发现m1比较小,而Si很大,分别对Si和m1分解质因子,只要m1中的每一个质因子Si中都有,那么Si就可以通过分裂均分到m1^m2^中,因此不需要把Si的所有质因子都找到,只需要找到小于等于m1的所有质因子即可,因此时间复杂度就是n*3e3就是3e7,对于m1和Si共有的质因子需要满足pi*t>=pm1*m2,要让满足条件的t最小就是取所有共有质因子的最大比值,然后所有比值中取最小 CODE12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667#include <bits/stdc++.h>#defi ...
牛客小白月赛29
发表于2021-02-21|题目|题目
B 二进制题目链接: https://ac.nowcoder.com/acm/contest/8564/B 单纯与或者单纯或单纯异或都支持交换律,但是他们放在一起就不支持交换律了,比如1先和0与再和1或结果是1,但是1先和1或再和0与结果就不一样,可以设两个数,一个所有位都是0,一个所有位都是1,把这两个分别进行上述操作,最后得出来的结果按位对比,如果0变成了1且1变成了0则这个位肯定是异或1,如果0变成0且1变成0则这一位是与0,如果0变成1且1变成1这一位肯定是或1,按照这个规律可以求出这个数,任何一个数与1或0异或0都不变,所以可以设置三个数,一个全设为1,另外两个全设为0,当这个位是与0时,就用全为1的变量减去(1<<i)这一位上的数,另外两个同理 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748#include <bits/stdc++.h>#define debug freopen("in.txt",& ...
凸包讲解
发表于2021-02-08|算法|凸包
凸包(百度百科): 讲解凸包之前先讲解一下极角排序、叉积 叉积就是数学上的叉乘,两个向量叉乘,有正有负,相乘的两个向量前后顺序颠倒符号相反,乘出来的的结果也是一个向量,值等于以这两个向量作为平行四边形的两条边长的面积,方向指向与两个向量垂直的方向,右手定则,拇指指向x轴弯向y轴大拇指指向方向就是叉积的方向 数学上叉积非常重要,利用它可以计算出来不规则图形的面积,只需要知道不规则图形的顶点坐标。 利用叉积求多边形面积 两个向量的叉积值等于以这两个向量作边的平行四边形的面积 求多边形面积,就可以把多边形分解成许多三角形,求各个三角形面积加起来即可,从原点到各个点做向量,逆时针或者顺时针依次作叉积/2求和即可,顺时针和逆时针求出来的叉积方向不同,正负不同逆时针为正,顺时针为负 例题:HDU2036 123456789101112131415161718192021222324252627282930313233>#include <bits/stdc++.h>>#define debug freopen("in.txt","r&q ...
Codeforces Round
发表于2021-01-21|题目|div3
A. Cards for Friends给一个宽度和一个长度的蛋糕,只有为长或宽为偶数时才能切一刀数量乘以2,问给定尺寸的蛋糕能否分够k块。 分别对宽和长除2,只要是偶数就除,看看能除几次,得到两个次数相乘就是能分的最大数量,和k比较一下 123456789101112131415161718192021222324252627282930313233#include <bits/stdc++.h>#define ios ios::sync_with_stdio(0); cin.tie(0); cout.tie(0)using namespace std;typedef long long ll;const int SUP=0x800000;const int MAXN=1e5;const int INF=0x3f3f3f3f;const double eps=1e-4;int num[MAXN];int main(){ ios; int t; cin>>t; while(t--){ int w,h,k; cin>>w> ...
线段树区间修改
发表于2021-01-19|算法|线段树
朴素版的线段树只能实现单点修改区间查询,修改和查询的时间复杂度都是O(logn) 懒标记问题加上懒标记后的线段树就可以实现区间修改了,比如我要把[a,b]的值加上k,肯定不会傻到n次单点修改,是个人都会想到假如递归到一个包含在[a,b]的区间时就不用继续往下递归了,直接告诉这个区间的管理员,把这个区间的和直接给修改了,但是假如你上面第一次增加时增加区间为[c,d],并且区间[c,d]是包含在[a,b]中间的,现在又要在[e,d]增加k,e>c的,这个时候你就会发现[e,d]这个区间增加了两次,因为第一次增加时你根本没有递归到[e,d],而是递归到这个区间的上一层就直接返回了,现在你再在[e,d]区间增加值就会出错,因为少加了第一次的增值,所以应该找一个东西记录下来第一次增值,并且把他带到下面去,这时懒标记就出来了,新开一个数组lazy[i],表示编号为i的区间的累计增值,那么第一次修改[c,d]时,lazyu\就会记录下来增值,lazy[u]+=c,第二次修改经过这个已经修改过的区间时,就要顺带着把这个区间的修改值一起带过去,正所谓父亲欠下的债儿子去偿还,当修改[e,d]时,经过 ...
2020summary
发表于2021-01-07|生活|2020
2020年度总结 转眼间已是2021,想一想我的大学生活已经过去将近一半,真是快呀!总结一下我的2020年叭~ 成就 ACM 天梯赛(铜奖) CCPC省赛银奖 CET 成绩还没出,不过感觉是考的不错 体测 79,已经非常满意了,只要过了75就满足了~ 学业 比较满足了,相比于上学期确实进步了好多,可能是因为新图书馆建好了的缘故叭~ 想说的话寒假​ 2020年寒假在家,对视频剪辑,PS,特效制作兴趣比较大,就学了十多天吧,当时还去淘宝上买了好几个教学视频呢,现在都还在百度网盘存着,就是做特效的时候才发现AE对电脑的配置需求太大了!5千多的电脑根本带不起来…CPU在燃烧🔥~最后也是做出来了一个爱情公寓版的开头片,个人感觉还是不错的,做了两天呢!遗憾的是最后失误把源文件了导致图片链接不上了,最后也是啥也没做成,现在也忘了软件咋用了。 接触Hexo​ 从过年开始疫情就开始了,过年的那两天啥也没干,亲戚也不敢串,都窝在家里,当时一整天有半天多都是躺在被窝里玩游戏或者看爱情公寓5,好慵懒😶~然后就是因为疫情一直没有开学,从2月底开始上网课,记得刚听说要上网课 ...
Shoka主题配置Algolia搜索
发表于2020-12-25|技术|hexo
原来使用的Sakura主题已经没人维护了,写作时因为没有集成插件很多标签都没有,因此写出来的文章就比较丑,最重要的原因还是shoka这个主题太好看了,个人实在是喜欢(❤ ω ❤),忍不住就咕哝了两天,在这里记录一下迁移过程遇到最棘手的问题Algolia的配置吧。 :::success 主题优点 先给新主题shoka打个广告,继承了许多优秀插件,尤其是写作标签非常多,写作标签介绍,就光这一点就足够吸引我了,其次就是好看,贼好看,这个布局确实是让人看着赏心悦目,而且配置简单,因为很多东西都集成了,就方便了很多操作。 ::: 回归主题,由于以前没用过algolia,导致我还得去网上查资料一点一点学,好在最后弄好了。 Algolia配置 首先第一步就是安装hexo-algolia,右击博客根目录输入npm i hexo-algolia 打开网页algolia,注册账户,新建一个Indice,名字随便起,然后根据提示完成后续工作,大致就是让你选择根据什么来搜索 之后在左侧导航栏中找到Api Keys 点击All API Keys,然后点击右上角New API Key,新建一个API ...
win10美化
发表于2020-12-10|技术|win10
你是否还在为这丑陋的window10界面而叹气(win10界面其实还可以),你是否还在为怎么美化界面而烦恼?不用叹气,不用烦恼!这篇博客可以解决你的问题 众所周知,一个简单漂亮的界面对人的心情也是有很大影响的,假如一个人不整理文件,桌面上乱七八糟,什么都往桌面上放,那迟早是受不了的,将来一定有一天你都不想开电脑 先来放一张美化过后的图片吧 效果还不错吧 强烈推荐 致美化(里面什么都有) Mydock仿MAC-dock栏,官网,随便选择一个下载渠道,下载后安装 找到一个空白地方右击可以设置大小,图标,开机启动等等,还可以设置最小化动画 Translucent(汉化版)任务栏透明化,在桌面时可以使任务栏变得透明,点击左下角windows图标,选择所有应用,找到M开头的应用,找到Micrsoft Store,打开后搜索Translucent(汉化版)一定要是汉化版除非您是英语大佬 下载就可以了 雨滴皮肤雨滴是一款占内存非常小的软件,里面有桌面时钟效果,可以添加到桌面动态时钟 皮肤下载地址: Here 自行设置效果吧 本人还是觉得简约效果最好: 任务栏图标居中 找一个安全位置新 ...
1…101112…17
avatar
Doraemon
记录成长经历
文章
165
标签
111
分类
5
Follow Me
公告
纵岁月在笔尖洇开深浅,初心始终是砚台上那方不涸的墨。
最新文章
进程上下文到底是什么东西?
进程上下文到底是什么东西?2025-10-02
协程食用指南
协程食用指南2025-10-01
利用 Redis 实现分布式锁
利用 Redis 实现分布式锁2025-09-27
分布式 ID 的生成方案
分布式 ID 的生成方案2025-09-20
分布式事务
分布式事务2025-09-19
最新评论
正在加载中...
分类
  • 技术8
  • 生活5
  • 算法88
  • 记录23
  • 题目36
标签
win10 kmeans 种类并查集 雪花算法 小游戏 可持续化并查集 线性回归 随笔 异或题 状压+前缀异或和 2020 bitset优化 DFS NIO GC 考研 题目 BIO 分组背包 笔试 爬虫 基础数学 遗传算法 背包 dfs 内核 倍增 sql语法 字典树 离散化差分 KMP 矩阵快速幂 三分 单调栈 UUID 刷题日记 CSS tarjan 算法 纪念我的ACM史
归档
  • 十月 20252
  • 九月 20255
  • 三月 20252
  • 二月 20255
  • 一月 20251
  • 九月 20243
  • 八月 20242
  • 七月 20242
网站资讯
文章数目 :
165
已运行时间 :
本站总字数 :
257.7k
本站访客数 :
本站总访问量 :
最后更新时间 :
©2020 - 2025 By Doraemon
框架 Hexo|主题 Butterfly
Hi, welcome to my blog!
搜索
数据库加载中