首页 > 其他分享 >2023.7.17小结

2023.7.17小结

时间:2023-07-17 20:45:47浏览次数:42  
标签:return 17 int long fa 2023.7 include 小结 find

前排碎碎念

今天是去if楼的第二天,昨晚开了好久好久的会,小狮子要来湘潭找我了,有些开心。但是好好学习比较重要捏,那就让他先独守空房一阵子叭,诶嘿今天我值日,虽然我早上起不来但是可以晚上晚点走,主打一个新加坡作息。
浅浅看一下今天的任务清单好咯。

任务清单

  1. 高精度
  2. 快速幂
  3. 并查集
  4. 前缀和与拆分
  5. 最小生成树

并查集

简单来说并查集的任务就是查找祖先,合并祖先。是五一假期的任务,今天想去写最小生成树所以先复习一下下。
写的是板子:https://www.luogu.com.cn/problem/P3367
MLE了一发TLE了一发第三次才AC。
MLE是因为把合并和查找是否共同祖先都单独写了函数出来,开辟的空间有点大了。
TLE是因为find函数的路径压缩写错了
最后附一下AC代码:

点击查看代码
#include<iostream>
using namespace std;
int fa[10005];

int find(int a){
	if(fa[a]==a)return a;
	else return fa[a]=find(fa[a]);
}

int main(){
	int n,m,z,x,y;
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		fa[i]=i;
	}
	while(m--){
		cin>>z>>x>>y;
		if(z==1){
			fa[find(x)]=find(y);
		}
		if(z==2){
			if(find(x)==find(y))cout<<"Y"<<endl;
			else cout<<"N"<<endl;
		}
	}
	return 0;
}

最小生成树

首先还是对板子题下手:https://www.luogu.com.cn/problem/P3366
感觉理解了但是写不出来,呜呜呜呜emo了。
最小生成树的两个算法分别是:kruskal算法和prim算法。
krusal的特点是归并边,每次选取不在同一个连通分量的权值最小的边加进来。
prim算法的特点是归并点,每次选取在该集合的点但是终点不在集合中的权值最小的边。

由于不会链式前向星于是想用prim算法,疑问点在于如何选取权值最小的边,因为起点是集合中的任意点所以...如何综合排序呢。

遇事不决抄题解bushi(怎么能学术作弊呢,当然是要做到学术诚信咯),但我还是在想要放弃的时候看了一下题解,发现自己实际上是被邻接表和邻接矩阵绕进去了,除了链式前向星这个比较难以理解的存储方式之外还有一个更为省事的,那就是结构体直接存图啊!!!好嘞开写!

然后用kruskal算法做了,但是连续两发WA,但是样例是ok的,所以纠结了一下发现自己的注释没有删...然后发现最后一个测试点RE了(芜湖起飞)
然后保存一下结果的输入输出,发现标准输出的结果是orz回想起题目说如果不连通输出orz...额外添加了一个判断是否遍历到最后一条边的if,然后快乐AC

代码如下:

点击查看代码
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;

int fa[5005];
struct edge{
	int u,v,w;
}e[200005];

int find(int x){
	if(fa[x]==x)return x;
	else return fa[x]=find(fa[x]);
}

bool cmp(edge x,edge y){
	return x.w<y.w;
}

int main(){
	int n,m,x,y,z,tt=0,cnt,p;
	cin>>n>>m;
	
	for(int i=1;i<=n;i++){
		fa[i]=i;
	}

	for(int i=1;i<=m;i++){
		cin>>e[i].u>>e[i].v>>e[i].w;
	}
	sort(e+1,e+m+1,cmp);
	cnt=n-1;p=0;
	while(cnt!=0){
		p++;
		x=e[p].u;y=e[p].v;z=e[p].w;
		if(find(x)!=find(y)){
			tt+=z;
			cnt--;
			fa[find(x)]=find(y);
			//cout<<x<<" "<<y<<" "<<z<<endl;
		}
		if(p>m){
			cout<<"orz"<<endl;
			return 0;
		}
	}
	
	cout<<tt<<endl;
	return 0;
}

高精度

我哭死,高精度减法调了好久
实际上高精度本质就是将一个很大很大的数用字符串表示,然后对这个字符串进行操作。
要注意的就是需要把字符串反置存入数组,以及加减乘除的借位与进位,减法更要注意的是减数与被减数的大小差别(也就是是否会产生负数)

高精度复读机

点击查看代码
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;

int a[1004];

int main(){
	char s[1004 + 1];
	scanf("%s", s);
	int len=strlen(s);
	for(int i=0;i<len;i++){
		a[len-i-1]=s[i]-'0';
	}
	int i;
	for(i=len-1;i>=1;i--){
		if(a[i]!=0)break;
	}
	for(;i>=0;i--){
		cout<<a[i];
	}
	cout<<endl;
	return 0;
}

快速幂

本质:将a的(b+c)次方转换为a的b次方乘以a的c次方,从而降低复杂度。
方法:例如计算a的n次方,将n用二进制进行表示,二进制位置为1的地方相加
代码如下:

long long binpow(long long a, long long b) {
  long long res = 1;
  while (b > 0) {
    if (b & 1) res = res * a;
    a = a * a;
    b >>= 1;
  }
  return res;
}

前缀和

多维前缀和基于容斥原理
最基础的代码就是
{
b[0]=a[0];
b[i]=b[i-1]+a[i];
}
前些时候把基础的题做了一下,翻了翻列表发现自己曾经六月初有个题目没改完就放在那了所以就索性写一写这个题目了:https://www.luogu.com.cn/problem/P5638
注意他给出的数据是从i-1点到i点所用的时间ai;
ac代码如下:

点击查看代码
#include<iostream>
using namespace std;
long long a[1000005];//存储各个路的时间
long long s[1000005];//前缀和
long long as[1000005];//从ai点使用传送所能节省的时间
int main(){
	long long n,k;
	cin>>n>>k;
	for(int i=2;i<=n;i++){
		cin>>a[i];
	}
	s[1]=a[1];
	for(int i=2;i<=n;i++){
		s[i]=s[i-1]+a[i];
	}
	long long q,p;
	for(int i=1;i<=n;i++){
		q=i+k;
		if(q>n)q=n;
		as[i]=s[q]-s[i];
	}
	long long mx=0;
	for(int i=1;i<=n;i++){
		if(as[i]>mx)mx=as[i];
	}
	cout<<s[n]-mx<<endl;
	return 0;
}

标签:return,17,int,long,fa,2023.7,include,小结,find
From: https://www.cnblogs.com/muyi-meow/p/17559247.html

相关文章

  • 暑假周记(7.17)
    周一三年级的小孩一如既往的听话,四年级的小孩一如既往的让我心烦下午给小孩上完课,去剪头发,然后就被另一个补课的老师(大姨)请吃饭,这个大姨的闺女是北大学语文的,见到真人根本没有想象中的北大高材生的样子,不问学历,你就会以为她是个普通的大学生。......
  • 7月17日 附文
    1.我们将会在明天发布最近一系列博客《海岛韵律闽南奇遇》的标志2.展示之前没有发布的诗:某中不放假日光满地撒,人往地上趴。鸭子叫嘎嘎,学生哭哇哇。热气把人压,就是不放假。校长被人骂,热线忙着打。不怕救护拉,惟恐成绩差。学生把汗擦,主任笑哈哈。宿舍快要塌,这钱不能花。空......
  • 7月17日
    7月17日今天我家里有人去世,我妈要去老家一趟,我要在家里看孩子,上午准备了准备东西,给我弟弄的作业,然后打了会儿游戏,等中午把午饭搞定之后就开始歇了会儿,然后看了看科目一的题,然后就开始看了看黑马程序员的视频,下午睡了一觉,醒了之后就给我弟把作业检查完,晚上吃完晚饭就开始写今天的......
  • ML-2023-07-17
    1、用shape获取矩阵维度。 2、在list中是不限定数据的类型的,可以混杂各种不同的类型,但是在numpy中则要求数据均为统一的,不统一时会自动转换,如下图,另外观察可知,只将末尾4改成4.0,元素在打印时也有些许变化,变为以小数点结束的形式,如果想要更明显,可以改成字符‘4’再输出观察。 ......
  • VS2017配置OpenCV
    VS2017配置OpenCV0OpenCV介绍OpenCV(OpenSourceComputerVisionLibrary)是一个开源的计算机视觉库,它提供了丰富的图像处理和计算机视觉算法,可用于处理图像和视频数据。OpenCV提供了C语言版本,使开发者可以使用C语言来调用OpenCV提供的功能。OpenCV可以用来进行多种图像处理......
  • 7.17后记
    P6090题解传送门神仙题先考虑\(O(|\Sigma|^8)\)做法:\(\Sigma\):字符总数,本题为大写字母\(26\)个+小写字母\(26\)个+数字\(10\)个。预处理两个字母一首一尾可以组成多少种长度相同的字符串,枚举正方体\(8\)个顶点,计算每两个点之间贡献的积。for(inta1=1;a1<......
  • 2023年7月17日 天气:晴
          今天早上起来背了10个英语单词,然后学习了一个小时的java,写了一会英语阅读,然后和朋友出去打了两个小时的羽毛球,最后写了一会作业。    明天打算看一小时的电视剧,然后和朋友出去玩一会,打一两个小时的篮球,最后晚上练一小时的字,然后学习一小时的java。......
  • Goland 最新激活码(2023/7/17)
    33MEHOB8W0-eyJsaWNlbnNlSWQiOiIzM01FSE9COFcwIiwibGljZW5zZWVOYW1lIjoiUG9saXRla25payBNZXJsaW1hdSBNZWxha2EiLCJhc3NpZ25lZU5hbWUiOiJtYWdnaWUgc2VyIiwiYXNzaWduZWVFbWFpbCI6Im1hZ2dpZXNlckB5ZWFoLm5ldCIsImxpY2Vuc2VSZXN0cmljdGlvbiI6IkZvciBlZHVjYXRpb25hbCB1c2Ugb25seSIs......
  • 行业追踪,2023-07-17,静待减速器macd反转
    自动复盘2023-07-17凡所有相,皆是虚妄。若见诸相非相,即见如来。k线图是最好的老师,每天持续发布板块的rps排名,追踪板块,板块来开仓,板块去清仓,丢弃自以为是的想法,板块去留让市场来告诉你跟踪板块总结:成交额超过100亿排名靠前,macd柱由绿转红成交量要大于均线有必要给每个行......
  • 2023/7/17
    今天主要了解了格式化字符串String类的静态format()方法用于创建格式化的字符串package格式化字符串;importjava.util.Date;publicclass日期和时间字符串格式化{publicstaticvoidmain(String[]args){Datedate=newDate();Stringa=Str......