2023/6/21总结

news2024/11/16 13:41:23

JS

解绑事件

对象.on事件      对象.on事件=null  

如果是  addEventListener方式必须使用 对象.removeEventListener ()   匿名函数无法解绑 

  • mouseover和mouseout会有冒泡效果
  • mouseenter和mouseleave没有冒泡效果

事件委托:

事件委托是利用事件流的特征解决一些开发需求的知识技巧

原理利用事件冒泡的特点,给父元素注册事件,当我们触发子元素的时候,会冒泡到父元素身上,从而触发父元素的事件。

 target属性下面的标签还有一个tagName属性,tagName属性是该标签对应的名称

 阻止默认行为:

preventDefault()函数

其他事件

  • 页面加载事件

  • 加载外部资源(比如图片、外联CSS和JavaScript)加载完毕时触发的事件

 当初始的HTML文档被完全加载和解析完成之后,DOMContentLoaded事件会被触发,无需等待样式表、图像等完全加载。

事件名:DOMContentLoaded

元素滚动事件:滚动条在滚动的时候持续发生的事件

 srollLeft和srollTop属性  可以获得被滚动的大小

如果需要获得整个页面的scrollTop属性,就是获得html标签对应的滚动条距离,还可以更改这个值,不用带单位

应该这样写:document.documentElement().scrollTop

获取宽高

clientWidth   和    clientHeight   包括padding值不包括border值

元素尺寸于位置

前面所说的滚动距离,都是自己得到的一个确切的值,通过这个可以得到元素在页面中的位置。

获取宽高

获取元素自身的宽高,包含元素自身设置的·宽高、padding、border   使用    offsetWidth   和   offsetHeight

获取位置

获得元素距离自己定位父级元素(必须是带有定位的父级元素)的左、上距离  offsetLeft  和  offsetTop  但是这俩个是只读属性

element.getBoundClientRect()  获得元素的大小以及相对于 视口 的位置  会返回一个对象

 实现页面滚动光滑:

html

{

        scroll-behavior:smooth;

}

 日期对象

实例化

const date = new Date()

一些日期对象方法:

 时间戳

是指从1970年1月1号时0时0分0秒到现在的毫秒数,是一种特殊的计量时间的方式

获取时间戳

  • getTime()
  • +new Date()
  • Date.now()

DOM节点

查找节点

  • 父节点查找,parentNode属性,返回最近一级的父节点,没有为NULL 
  • 子节点查找  childNodes 所有节点,返回的是一个伪数组
  • 兄弟节点查找,nextElementSibLing 属性 下一个兄弟节点  previousElementSibling 属性 上一个兄弟节点

增加节点

document.creatElement('标签')  

追加节点

  •   父元素.appendChild(要插入的元素) ——插入到父元素的最后一个子元素
  • 父元素.insertBefore(要插入的元素,插入到哪一个元素)——插入到该元素前面

克隆节点

cloneNode(布尔值)  true代表克隆后代节点,false代表不克隆后代节点  默认是false

删除节点

父元素.removeChild(要删除的元素)  必须再父元素下删除

M端事件

移动端会有自己独特的一个事件——触屏事件touch

  • touchstart  手指触摸到一个DOM元素触发
  • touchmove  手指在一个DOM元素上滑动时触发
  • touchend  手指从一个DOM元素上移开时触发

题解:

第四次题组 [Cloned] - Virtual Judge (vjudge.net) 

1.这个题目的意思是构建一个数组,每一位都要被对应的下标整除,加起来要被n整除。

2.我们从后往前,除了第一位,其他各位都是对应的下标  i  ,这样能保证每一位都满足,第一位因为1可以被任何数字整除,所以第一位的数字是n-res%n

#include<stdio.h>
#define Maxsize 210
int main()
{
	int t,n,i;
	long long res=0;
	int a[Maxsize];
	scanf("%d",&t);
	while(t--)
	{
		res=0;
		scanf("%d",&n);
		for(i=n;i>1;i--)
		{
			a[i]=i;
			res+=a[i];
		}
		a[1]=n-(res%n);
		for(i=1;i<=n;i++)
		{
			printf("%d ",a[i]);
		}
		puts("");
	}
	
}

第四次题组 [Cloned] - Virtual Judge (vjudge.net)

1.这道题的意思是求出最大的k 要满足 j-i=k 交换i j能够保持顺序

2.因为每一个数字都只有一个,那么我们找到最大需要交换的其实是i对于a[i]的距离,对于每一个a[i] 我们都去求出距离,然后求出最大公约数即可

#include<stdio.h>
#include<math.h>
#define maxsize 200010
int a[maxsize];
int fun(int a,int b)
{
	int r;
	r=a%b;
	while(r)
	{
		a=b;
		b=r;
		r=a%b;
	}
	return b;
}
int main()
{
	int t,n,i;
	int res;
	scanf("%d",&t);
	while(t--)
	{
		res=0;
		scanf("%d",&n);
		for(i=1;i<=n;i++)
			scanf("%d",&a[i]);
		for(i=1;i<=n;i++)
		{
			if(res==0)
			{
				res=abs(a[i]-i);
			}
			else if(abs(a[i]-i))
			{
				res=fun(res,abs(a[i]-i));
			}
		}
		printf("%d\n",res);
	}
	return 0;
}

第四次题组 [Cloned] - Virtual Judge (vjudge.net)

1.这个题目的意思是交换俩个不相同的字母一次,是否能保证,是一个回文串

2.只需要计算 俩个不同元素的字母个数是否大于等于2即可,当然还要判断是否能构成回文,是否能构成回文很简单,去判断元素的出现的个数,只能有一个是奇数,或者全都是偶数

#include<stdio.h>
#include<string.h>
#define size 60
int main()
{
	int t,i,j,flag,res;
	char str[size];
	scanf("%d",&t);
	while(t--)
	{
		scanf("%s",str);
		//小写字母
		res=0;
		flag=0;
		int alp[27]={0},count=0,book[27]={0};
		for(i=0;str[i];i++)
		{
			alp[str[i]-'a']++;
			if(alp[str[i]-'a']>=2&&book[str[i]-'a']==0) 
			{
				book[str[i]-'a']=1;
				count++;
			}
			res=res^str[i];
		}
		if(res==0||(res>='a'&&res<='z'))
		{
			if(count>=2)
			{
				puts("YES");
			}
			else puts("NO");
		}
		else puts("NO");
	}
	return 0;
}

第五周任务 [Cloned] - Virtual Judge (vjudge.net)

1.这道题的意思其实就是求组合数,可以先求出杨辉三角

2.利用插空法计算出来

#include<stdio.h>
#define Maxsize 2010
#define mod 1000000007
long long a[Maxsize][Maxsize];
int main()
{
	a[0][0]=1;
	int i,j;
	for(i=1;i<Maxsize;i++)
	{
		a[i][0]=a[i][i]=1;
		for(j=1;j<=i;j++)
		{
			a[i][j]=(a[i-1][j-1]+a[i-1][j])%mod;
			
		}
	}
	int n,k,m;
	scanf("%d%d",&n,&k);
	m=n-k+1;
	for(i=1;i<=k;i++)
	{
		printf("%lld\n",(a[k-1][i-1]*a[m][i])%mod);
	}
	return 0;
}

第五周任务 [Cloned] - Virtual Judge (vjudge.net)

1.这道题的意思是在?位填入数据,有多少种可能能够满足除以 13余下5

2.暴力+dp,dp每一位的取值能够余下的值,相乘

#include<stdio.h>
#include<string.h>
#define maxSize 1000010
#define mod 1000000007
char str[maxSize];
int dp[maxSize][13];
int main()
{
	scanf("%s",str+1);
	int i,j,k,t;
	int n=strlen(str+1);
	if(str[1]=='?')
	{
		for(i=0;i<=9;i++)
		{
			dp[1][i]=1;
		}
	}
	else 
	{
		dp[1][str[1]-'0']=1;
	}
	for(i=2;i<=n;i++)
	{
		if(str[i]=='?')
		{
			for(j=0;j<=9;j++)
			{
				for(k=0;k<=12;k++)
				{
					t=(k*10+j)%13;
					dp[i][t]=(dp[i][t]+dp[i-1][k])%mod;
				}
			}
		}
		else 
		{
			for(k=0;k<=12;k++)
			{
				t=(k*10+(str[i]-'0'))%13;
				dp[i][t]=(dp[i][t]+dp[i-1][k])%mod;
			}
		}
	}
	printf("%d\n",dp[n][5]);
	return 0;
}

第五周任务 [Cloned] - Virtual Judge (vjudge.net)

1.这道题是求 a序列的对于b序列 相差的大小

2.线性代数知识,先求出1-n的阶乘,遍历对于数组,数组的 i 后一位开始遍历   j 有 小于的 就记录下来,拿到n-i对应的阶乘 *   j的位置后小于当前  i   的个数,作为结果,这个是康托展开。

3.俩个都康托展开,相减即可。

#include<stdio.h>
#include<math.h>
int a[10],b[10],n;
int c[10]={1};
int solve(int k[])
{
	long long res=0;
	int i,t=0,j;
	for(i=1;i<=n;i++)
	{
		t=0;
		for(j=i+1;j<=n;j++)
		{
			if(k[j]<k[i]) t++;
		}
		res+=t*c[n-i];
	}
	return res;
}
int main()
{
	scanf("%d",&n);
	int i;
	for(i=1;i<=9;i++)
	{
		c[i]=i*c[i-1];
	}
	for(i=1;i<=n;i++)
	{
		scanf("%d",&a[i]);
	}
	for(i=1;i<=n;i++)
	{
		scanf("%d",&b[i]);
	}
	printf("%lld\n",abs(solve(a)-solve(b)));
	return 0;
}

第四次题组 [Cloned] - Virtual Judge (vjudge.net)

1.这道题目的意思是,先求出最小生成树,找到最小生成树的最长的那一条边,然后再根据最长的边作为上界,求出最大生成树。

2.需要用到并查集和kruskal算法。

#include<stdio.h>
#include<algorithm>
#define maxN 100010
#define maxM 200010

using namespace std;

int n,m;
int f[maxN];
typedef struct node
{
	int u,v,w;	
}NODE;
NODE edges[maxM];
bool cmp1(NODE a,NODE b)
{
	return a.w<b.w;
}
bool cmp2(NODE a,NODE b)
{
	return a.w>b.w;
}
int getfather(int x)
{
	if(x==f[x]) return x;
	f[x]=getfather(f[x]);
	return f[x];
}
int is(int x,int y)
{
	int i=getfather(x),j=getfather(y);
	if(i!=j)
	{
		f[i]=j;
		return 1;
	}
	return 0;
}
int main()
{
	int i,j,con=0,nox;
	long long res=0;
	scanf("%d%d",&n,&m);
	for(i=1;i<=n;i++)
	{
		f[i]=i;
	}
	for(i=0;i<m;i++)
	{
		scanf("%d%d%d",&edges[i].u,&edges[i].v,&edges[i].w);
	}
	sort(edges,edges+m,cmp1);
	
	for(i=0;i<m;i++)
	{
		if(is(edges[i].u,edges[i].v))
		{
			con++;
			if(con==n-1)
			{
				nox=edges[i].w;
				break;
			}
		}
	}
	
	for(i=0;i<=n;i++)
	{
		f[i]=i;
	}
	
	sort(edges,edges+m,cmp2);
	
	
	int newcnt=0;
	for(i=0;i<m;i++)
	{
	//	printf("%d %d %d\n",edges[i].u,edges[i].v,edges[i].w);
		if(edges[i].w<=nox&&is(edges[i].u,edges[i].v))
		{
		//	printf("%d %d %d\n",i,edges[i].u,edges[i].v);
			res+=edges[i].w;
			newcnt++;
			if(newcnt==n-1) 
			{
				
				break;
			}
		}
	
	}
	printf("%lld\n",res);
	return 0;
}

第四次题组 [Cloned] - Virtual Judge (vjudge.net)

1.这道题目的意思是,要么选择俩个不相等的下标,a[i]加到a[j]  或者把 a[i] 移除 构成一个有序的数组

2. 有序的数组其实就是变成前面全是0 后面全是1 ,不管做上面哪一种操作都是一样的,因为数组里面只有0 和 1.

3.所以我们只需要排序输出前面对于原数组来说,出现1的位置的次数

#include<stdio.h>
#define maxSize 100010
int a[maxSize];
int main()
{
	int t,n,zero=0,one=0,i,res=0;
	scanf("%d",&t);
	while(t--)
	{
		zero=one=res=0;
		scanf("%d",&n);
		for(i=0;i<n;i++)
		{
			scanf("%d",&a[i]);
			if(a[i]) one++;
			else zero++;
		}
		for(i=0;i<zero;i++)
		{
			if(a[i]==1) res++;
		}
		
		printf("%d\n",res);
	}
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/672862.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第九章 ShuffleNetv1网络详解

系列文章目录 第一章 AlexNet网络详解 第二章 VGG网络详解 第三章 GoogLeNet网络详解 第四章 ResNet网络详解 第五章 ResNeXt网络详解 第六章 MobileNetv1网络详解 第七章 MobileNetv2网络详解 第八章 MobileNetv3网络详解 第九章 ShuffleNetv1网络详解 第十章…

【从零开始学习JAVA | 第五篇】This关键字详解

目录 前言&#xff1a; This关键字&#xff1a; 作用&#xff1a; 本质&#xff1a; 总结&#xff1a; 前言&#xff1a; 相信大家在进入JAVA面向对象编程篇章以后&#xff0c;多多少少都见过This关键字&#xff0c;而他的指向很多人总是傻傻搞不清楚&#xff0c;今天我们…

chatgpt赋能python:Python编程语言的词汇量有多少?

Python编程语言的词汇量有多少&#xff1f; Python编程语言是一种广泛使用的高级编程语言&#xff0c;被广泛用于数据科学、机器学习、人工智能、Web开发、游戏开发和其他许多领域。由于Python的简单易学以及丰富的库&#xff0c;越来越多的人开始使用Python编程语言进行编程。…

【MongoDB】四、MongoDB副本集的部署

【MongoDB】四、MongoDB副本集的部署 实验目的实验内容实验步骤实验小结 实验目的 能够通过部署副本集理解副本集机制&#xff0c;从而解决大数据项目中数据丢失的问题 实验内容 环境准备&#xff1a;根据表中的信息完成3台MongoDB服务器的部署&#xff08;XXX是姓名拼音首字母…

C语言指针初阶+进阶(看这一篇就够了)

目录 本章重点 1. 指针是什么 2. 指针和指针类型 3. 野指针 4. 指针运算 5. 指针和数组 6. 二级指针 7. 指针数组 8. 字符指针 9.数组指针 10. 指针数组 11数组传参和指针传参 12. 函数指针 13. 函数指针数组 14. 指向函数指针数组的指针 15. 回调函数 16 指针和数组面试题的解…

【从零开始学习JAVA | 第三篇】类与对象 和 封装

目录 前言&#xff1a; 类与对象&#xff1a; 封装&#xff1a; 总结&#xff1a; 前言&#xff1a; 从本篇开始&#xff0c;我们就要以面向对象编程思想来进行学习了&#xff0c;今天我们学习的内容是类与对象&#xff0c;这是JAVA中的重要知识&#xff0c;让我们一起来进…

docker 项目部署 后端/前端

1.前端部署 2.后端部署 问题一&#xff1a;build出问题 ERROR: failed to solve: failed to compute cache key: failed to calculate checksum of ref 668a7264-5d0b-45a6-b547-fa8fff014bda::g00ukurq2ipxuvrrz8rnpyskp: "/swagger2-demo-0.0.1-SNAPSHOT.jar": …

next.js博客搭建_react-markdown渲染内容(第三步)

文章目录 ⭐前言⭐引入react-markdown&#x1f496; 使用markdown渲染&#x1f496; 文章内容布局&#x1f496; react-syntax-highlighter代码高亮 ⭐结束 ⭐前言 大家好&#xff0c;我是yma16&#xff0c;本期给大家分享next项目中使用react-markdown渲染内容。 该系列的往期…

考研C语言第八章

结构体定义&#xff0c;初始化&#xff0c;结构体数组 结构体对齐 这个东西看着像数据库里面属性的定义&#xff0c;也像java里面的类的定义 #include <stdio.h> #include <string.h> #include <stdlib.h>struct student{int num;char name[20];char sex;i…

chatgpt赋能python:Python桌面编程:探索图形用户界面

Python桌面编程&#xff1a;探索图形用户界面 Python是一种广受欢迎的高级编程语言&#xff0c;被广泛应用于数据科学、人工智能、Web开发和自动化。但是&#xff0c;随着越来越多的应用程序向图形用户界面&#xff08;GUI&#xff09;转移&#xff0c;Python的桌面编程能力也…

datagrip 连接 phoenix

jar替换完后尽量重启datagrip. 然后重新连接即可. 不重启貌似报错... 效果:

chatgpt赋能python:Python更新界面:让你的应用更美观、更易用

Python更新界面&#xff1a;让你的应用更美观、更易用 Python是一门强大的编程语言&#xff0c;广泛应用于软件开发、数据分析、机器学习等领域。其中&#xff0c;Python的GUI开发能力也非常出色。Python支持多种GUI库&#xff0c;如Tkinter、PyQt、wxPython等&#xff0c;可以…

【C++篇】C++新增的一些基础特性

友情链接&#xff1a;C/C系列系统学习目录 知识总结顺序参考C Primer Plus&#xff08;第六版&#xff09;和谭浩强老师的C程序设计&#xff08;第五版&#xff09;等&#xff0c;内容以书中为标准&#xff0c;同时参考其它各类书籍以及优质文章&#xff0c;以至减少知识点上的…

Python--字典

Python--字典 <font colorblue>一、创建字典<font colorblue>二、访问字典元素<font colorblue>三、字典的增、删、查、改<font colorblue>1、添加元素<font colorblue>2、删除元素<font colorblue>3、查找元素<font colorblue>4、修…

Git——分布式版本控制系统

简介 Git是一个开源的分布式版本控制系统&#xff0c;可以高效的处理从小到很大的项目版本管理。 分类 集中式 SVN&#xff0c;CVS 使用单一的服务器用来管理和存储所有文件的修订版本&#xff1b;协同开发的成员拉取或提交都需连接到这台服务器&#xff1b;如果服务器宕机…

电控开关详细介绍 MOSFET

目录 NMOS MOSFET的开关模型 现实生活中MOSFET的截面图 输出特性曲线 总结 MOSFET的SCS模型 MOSFET的SR模型 进一步分析 例子 PMOS CMOS(Complementary Metal-Oxide-Semiconductor) NMOS 金属氧化物半导体场效应晶体管 这是一个什么样的结构呢&#xff1f; 对于…

2023 年6月开发者调查统计结果——最流行的技术(2)

2023 年6月开发者调查统计结果——最流行的技术&#xff08;2&#xff09; 本文目录&#xff1a; 二十三、编程、脚本和标记语言 二十四、数据库 二十五、云平台 二十六、网络框架和技术 二十七、其他框架和库 二十八、其他工具 二十九、集成开发环境 三十、异步工具 …

chatgpt赋能python:Python查错完全指南:如何快速诊断和解决常见的错误

Python查错完全指南&#xff1a;如何快速诊断和解决常见的错误 Python是一种高级编程语言&#xff0c;它被广泛用于数据科学、机器学习、Web开发和自动化等领域。虽然Python具有易于学习和易于使用的特点&#xff0c;但是在编写复杂的应用程序时&#xff0c;错误和异常情况经常…

chatgpt赋能python:Python构造图入门指南

Python构造图入门指南 Python是一种非常强大的编程语言&#xff0c;它可以用于各种任务&#xff0c;包括数据分析、机器学习和深度学习等领域。其中&#xff0c;构造图是Python在数据分析领域的一项非常重要的技术&#xff0c;本文将为大家介绍Python构造图的入门指南。 什么…

chatgpt赋能python:Python查找手机号码

Python查找手机号码 在今天的数字时代&#xff0c;手机号码已成为每个人生活中必不可少的一部分。虽然我们可以轻松地拥有一部手机&#xff0c;但是对于那些需要通过电话来联系客户、朋友或家庭成员的人&#xff0c;获取正确的手机号码就显得尤为重要。 这就是为什么Python查…