呃呃
好久没管博客了,结果发现图床挂了,等有空了再找个新图床修一下博客吧。
flood fill算法
Flood Fill 算法就是一种遍历搜索算法,用于寻找连通块
时间复杂度时间复杂度为 $O(n)$
算法实现遍历图, 当找到没有访问的点的时候,搜索这个点所有的联通点,标记为已访问,这样就把图划分为若干连通块了, 由于每个点只能访问一次,所以事件复杂度为$O(n)$
联通方式联通方式一般是四联通或者八联通
遍历方式dfs和bfs都可以, bfs比较好写
例题https://www.acwing.com/problem/content/1099/
https://www.acwing.com/problem/content/1100/
https://www.acwing.com/problem/content/1108/
字节青训营前端实践02
为“弹球”示例添加新功能在上一篇文章字节青训营前端实践01里我们构建了一个弹球程序,接下来我们继续给它添加一些有趣的功能。
项目简介我们的弹球 demo 很有趣,但是现在我们想让它更具有互动性,我们为它添加一个由玩家控制的“恶魔圈”,如果恶魔圈抓到弹球会把它会吃掉。我们还想测验你面向对象的水平,首先创建一个通用 Shape() 对象,然后由它派生出弹球和恶魔圈。最后,我们为 demo 添加一个计分器来记录剩下的球数。
程序最终会像这样:
代码实现创建我们的新对象首先,改变你现有的构造器 Ball() 使其成为构造器 Shape() 并添加一个新的构造器 Ball() :
构造器 Shape() 应该像构造器 Ball() 那样的方式定义 x, y, velX, 和 velY 属性,但不包括 color 和 size 。
还应该定义一个叫 exists 的新属性,用来标记球是否存在于程序中(没有被恶魔圈吃掉)。这应该是一个布尔型((true/false)。
构造器 Ball() 应该从构造器 Shape() 继承 x, y, velX, velY,和 exists 属性。
构 ...
字节青训营前端实践01
使用canvas来实现一个弹跳小球小游戏本文通过编写一个弹球 demo 来展示 JavaScript 中对象的重要性。我们的小球会在屏幕上弹跳,当它们碰到彼此时会变色。最终会像这样:
这个实例将会利用 Canvas API 来在屏幕上画小球,还会用到 requestAnimationFrame API 来使整个画面动起来,这个过程中我们会用到一些技巧,比如小球从墙上反弹,检查它们是否撞到了对方(也就是碰撞检测)。
项目结构包含以下三个文件:index.html、style.css 和 main.js。它们分别包含以下内容:
一个非常简单的 HTML 文档,包括一个 <h1> 元素、一个<canvas> 元素来画小球,还有一些元素将 CSS 和 JavaScript 运用到我们的 HTML 中。一些非常简单的样式,主要是 <h1> 元素的样式和定位,另外还能使画面填充整个页面从而摆脱滚动条和边缘的空白(这样看起来非常简洁)一些 JavaScript 用来设置 <canvas> 元素,并提供我们要用到的基本函数。
1234567891011 ...
字节青训营前端day-02上课笔记
Day2 前端与 HTML1. 前端工程师是使用web技术栈解决多端gui交互的工程师2. 前端技术栈
html(内容) css(样式) javascript(行为)
网络协议
3. DOM树dom树根据标签将html转化成树形结构
4. HTML 标签
标题: h1~h6
列表:
有序列表: ol(ordered-list) > li
无序列表: ul(unordered-list) > li
定义列表: dl(defination-list) > dt > dd
链接: a href属性(url) target=”_blank”新窗口打开
图片:img alt属性(替代性的文本)
音频: audio control属性默认控件
输入: input placeholder属性(占位符) type属性(range拖动条 number数字 date日期 checkbox多选框 radio单选)
textarea 文本框
下拉选择: select > option(选项)
5. 网页的内容划分
6. HTML是传达内容的 ...
字节青训营前端day-01上课笔记
Day01学习笔记Day01学习笔记今天学习的内容是前端语言串讲,前端通常指的是构建网页和应用程序用户界面(UI)的技术。前端开发涉及使用一种或多种前端编程语言和框架来实现网站和应用程序的外观和交互。
课上内容
01 前端语言介绍
HTML(超文本标记语言):HTML 是用于创建网页结构和内容的标记语言。通过使用不同的 HTML 元素和标签,可以构建页面的文本、图像、链接等元素。
CSS(层叠样式表):CSS 是用于样式化网页的样式表语言。通过 CSS,可以定义页面的布局、颜色、字体等外观方面的样式。
JavaScript:JavaScript 是一种用于添加交互性和动态功能的脚本语言。它能够处理用户输入、操作 DOM(文档对象模型)、发送网络请求等。
02 前端语言的协作配合 关于前端语言的协作配合可以通过下面这个例子来看:
123456789101112131415161718192021222324252627282930313233343536373839404142434445<!DOCTYPE html><html lang="e ...
solving problems 9
插入乘号二进制枚举, 枚举乘号的位置123456789101112131415161718192021222324252627282930313233343536373839404142434445464748#include <iostream>#include <cstring>#include <algorithm>using namespace std;typedef long long LL;signed main(){ ios::sync_with_stdio(false),cin.tie(0),cout.tie(0); int n, m; string s; cin >> n >> m >> s; int cnt = n - 1; LL ans = 0; for (int i = 0; i < 1 << cnt; i ++) { int t = 0; for (int j = 0; ...
暑期刷题日记08
旧日不见,哥们又来水题解啦
最大子数组和题目描述给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
子数组 是数组中的一个连续部分。
样例123输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1] 的和最大,为 6。
算法dp维护一个以当前数字结尾的最大值和全局的最大值即可
状态转移方程: $curmax = max(curmax + nums[i], nums[i])$由于题目要求子数组最少包含一个元素,所以是以nums[i]重新开始的
C++代码12345678910111213class Solution {public: int maxSubArray(vector<int>& nums) { int maxn = nums[0], curmax = 0; for (auto num : nums) { curmax = max(n ...
暑期刷题日记-07
下降路径最小和数字三角形的变形题,线性dp
12345678910111213141516171819202122232425262728int minFallingPathSum(vector<vector<int>>& matrix) { int n = matrix.size(); vector<vector<int>> f(n, vector<int>(n)); for (int i = 0; i < n; i ++) { f[0][i] = matrix[0][i]; } for (int i = 1; i < n; i ++) { for (int j = 0; j < n; j ++) { if (j == 0) ...
暑期刷题日记-06
无限区域《模拟》
1234567891011121314151617181920212223242526272829#include <iostream>#include <cstring>#include <algorithm>#include <cmath>using namespace std;signed main(){ ios::sync_with_stdio(false),cin.tie(0),cout.tie(0); int t; cin >> t; double pi = acos(-1); for (int i = 1; i <= t; i ++) { int r, a, b; cin >> r >> a >> b; double ans = 0; while (r) { ans += pi * r * ...