ACM---大一第三周周赛(Floyd算法+并查集算法学习周)

news2025/1/16 17:55:34

🚀write in front🚀
📝个人主页:认真写博客的夏目浅石.CSDN
🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​
📣系列专栏:ACM周训练题目合集.CSDN
💬总结:希望你看完之后,能对你有所帮助,不足请指正!共同学习交流 🖊
✉️为什么我们不知疲倦,因为我们都在做自己所热爱的事 ♐

文章目录

  • A - Color the ball
  • B - Suits
  • C - 六度分离
  • D - 无处不在的宗教
  • E - 农场派对
  • F - 怪物(简易版)
  • G - 嫌疑犯
  • 比赛情况:
  • 总结


在这里插入图片描述

A - Color the ball

杭电—Color the ball
在这里插入图片描述
解题思路:考察差分数组,基础模板

#include<iostream>
#include <cstring>

using namespace std;

int arr[100010];
int n,i;

int main()
{
	while(scanf("%d", &n), n!=0)
	{
		memset(arr, 0, sizeof(arr));
		for(i=1;i<=n;i++)
		{
			int l,r;
			cin>>l>>r;
			arr[l]++;
			arr[r+1]--;
		}
		for(i=1;i<=n;i++)
		{
			arr[i]+=arr[i-1];
			if(i!=n)
			{
			    printf("%d ", arr[i]);
			}
			else printf("%d",arr[i]);
		}
		cout<<endl;
	}
	return 0;
}

B - Suits

洛谷—Suits
在这里插入图片描述
解题思路:数学问题,一直分类讨论就可以解了

#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>

using namespace std;

int a,b,c,d,e,f;
typedef long long ll;
ll m1,m2;
ll mn=-1;


int main() 
{	
	cin>>a>>b>>c>>d>>e>>f;
	int max=0;
	
	int mn=min(a,d);
    int mx=min(c,d);
	if(e*mn+f*min(b,min(c,d-mn))>max)
	{
		max=e*mn+f*min(b,min(c,d-mn));
	}
	
	if(e*min(a,d-min(b,mx))+f*min(b,mx)>max)
	{
		max=e*min(a,d-min(b,mx))+f*min(b,mx);
	}
	
	if(e*mn>max)
	{
		max=e*mn;
	}
	
	if(f*min(b,mx)>max)
	{
		max=f*min(b,mx);
	}
	
	cout<<max;
    return 0;
}

C - 六度分离

杭电—六度分离
在这里插入图片描述

#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>

using namespace std;

#define inf 0x3f3f3f3f

int g[101][101];
int n,m,ans;


int main()
{
    while(cin>>n>>m)
    {
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<n;j++)
            {
                if(i==j) g[i][j]=0;
                else g[i][j]=inf;
            }
        }
        
        while(m--)
        {
            int a,b;
            cin>>a>>b;
            g[a][b]=g[b][a]=1;
        }
        
        for(int k=0;k<n;k++)
        {
            for(int i=0;i<n;i++)
            {
                for(int j=0;j<n;j++)
                {
                    if(g[i][j]>g[i][k]+g[k][j])
                    {
                        g[i][j]=g[i][k]+g[k][j];
                    }
                }
            }
        }
        //以上全部是模板
        int flag=0;
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<n;j++)
            {
                if(g[i][j]>7)
                {
                    puts("No");
                    flag=1;
                    break;
                }
            }
            if(flag) break;
        }
        if(flag==0)
            puts("Yes");
    }
    
    return 0;
}

D - 无处不在的宗教

POJ无处不在的宗教

在这里插入图片描述

//水题,竟然我也能AC....
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>

using namespace std;

int n,m;
int p[100010];


int find(int x)
{
    return p[x]==x?x:(p[x]=find(p[x]));//算法模板
    
}
int s=1;
int main()
{
    cin>>n>>m;
again:
    int ans=0;
    for(int i=1;i<=n;i++) p[i]=i;
    
    while(m--)
    {
        int i,j;
        cin>>i>>j;
        i=find(i);
        j=find(j);
        if(i!=j)
        {
            p[i]=j;//模板
        }
    }
    
    for(int i=1;i<=n;i++)
    {
        if(find(i)==i)
        {
            ans++;
        }
    }
    printf("Case %d: %d\n",s++,ans);
    
    cin>>n>>m;
    if(n==0&&m==0) return 0;
    else goto again;
    
    return 0;
}

E - 农场派对

#10075. 「一本通 3.2 练习 1」农场派对
在这里插入图片描述

#include<iostream>
#include<algorithm>
#include<cstring>

using namespace std;

#define inf 0x3f3f3f3f//结论,一个很大的数,适合这个算法的初始化

int n,m,x;
long long g[1010][1010];
long long path[1010][1010];

int main()
{
    int max=0;
    cin>>n>>m>>x;
    
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
        {
            if(i==j) g[i][j]=0;
            else g[i][j]=inf;
        }
    }
    
    for(int i=1;i<=m;i++)
    {
        int a,b,t;
        cin>>a>>b>>t;
        g[a][b]=t;
    }
	
    for(int k=1;k<=n;k++)
    {
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=n;j++)
            {
                if(g[i][j]>g[i][k]+g[k][j])
                {
                    g[i][j]=g[i][k]+g[k][j];
                }
            }
        }
    }
    //以上全部是算法模板
    for(int i=1;i<=n;i++)
    {
        if(g[i][x]+g[x][i]>=max)//这里根据题目要求来写就对了,调试了一会儿AC了
        {
            max=g[i][x]+g[x][i];
        }
    }
    
    cout<<max<<endl;
    
    return 0;
}

F - 怪物(简易版)

A. Monsters (easy version)
在这里插入图片描述

#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>

using namespace std;

typedef long long ll;

ll t,n,arr[200010],i,j;


int main()
{
    cin>>t;
    while(t--)
    {
        ll cnt=0;
        cin>>n;
        
        for(i=1;i<=n;i++) cin>>arr[i];
        
        sort(arr+1,arr+n+1);
        
        if(arr[1]!=1)
        {
            cnt+=arr[1]-1;
            arr[1]=1;
        }
        
        for(i=2;i<=n;i++)
        {
            if(arr[i]-arr[i-1]>=2)
            {
                cnt+=arr[i]-arr[i-1]-1;
                arr[i]=arr[i-1]+1;
            }
        }
        cout<<cnt<<endl;
    }
    
    return 0;
}

G - 嫌疑犯

The Suspects
在这里插入图片描述

#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>

using namespace std;

int n,m,ans,k;
int p[100010];
int a[100010];

int find(int x)
{
    return p[x]==x?x:(p[x]=find(p[x]));//并查集的固定模板
}

inline void he(int i,int j)
{
    int x=find(i);
    int y=find(j);
    if(x<y)//这里意思是:让小的数做根节点,也是为了贴近题目要求
    {
        p[y]=x;
    }
    else p[x]=y;
}

int main()
{
    while(cin>>n>>m&&n||m)
    {
        ans=0;
        for(int i=0;i<n;i++) p[i]=i;//初始化
        
        while(m--)
        {
            cin>>k;
            cin>>a[0];//合并
            for(int i=1;i<k;i++)
            {
                cin>>a[i];
                he(a[i],a[i-1]);
            }
        }
        for(int i=0;i<n;i++)
        {
            if(find(i)==0)//根据题意来求解。
            {
                ans++;
            }
        }
        cout<<ans<<endl;
    }
    return 0;
}

比赛情况:

大一第十(前面有个学长试水~),退步好多这一次,下面做一下这一周比赛的一个总结,以便于后面的学习。
在这里插入图片描述
表述题目难度以及做题时候的感想:
A---临时加上去的,感觉学长们为了照顾那些爆0的同学加的,简单差分模板。

B---这个是我第二个做出来的,花费了我巨多时间,哭了,我的思维还是不够敏捷,需要多加练习思维题目,不然这种题目大家都拿到了,我还要花好多时间才能过,真的很难受的

C---没时间做,后面自己尝试了一下子,发现只要根据题目逻辑去写是完全套板子的问题,就是多加一点循环和判断的问题。

D---这个更加的板子,我一次可AC了,非常模板。

E---Floyd算法的板子题目,我第一个AC的这个题目,相对于板子,只需要加一点判断就可以了,简单。

F---没时间做,后面自己尝试了一下子,思维题,被我的好哥们讲懂了,我还是不擅长写思维题目,脑子很笨。

G---这个比赛的时候写了,but没写完全,就结束了,后面补了一下题,发现这个题目就是并的时候需要注意外,别的就是板子,害,我可能太笨了。

总结

心态:就是可能看到别人比我聪明,就心里非常难受,比赛的时候落后,心里更是难受,觉得算法好难学啊,好想退缩,但是算法迟早是要学习的,不如顶住压力,好好学,哪怕倒数第一,也要勇往直前,放平心态,继续加油夏目浅石

学习方法:一定要学会思考,把每一周的题目自己独立思考至少30min后不会了再去看答案学习人家的思路,不然效率很低下。还有就是,昨完一定一定要总结模板总结思路总结题型!!!!!!!!!!!

时间安排:后续要晚上7-10点好好学习算法,到宿舍补一补学校课程,看看网课,学校课程能逃就逃,然后学点有用的。

虽然很苦难,但是还是要继续坚持下去。
在这里插入图片描述
激励一下自己吧,虽然挺难过的

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

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

相关文章

【python】JSON数据类型与Python数据类型之间的转化

注&#xff1a;最后有面试挑战&#xff0c;看看自己掌握了吗 文章目录JSON格式文件JSON格式序列化与反序列化作用JSON常用数据结构键值对的集合值的有序列表JSON数据类型与Python数据类型之间的转化JSON格式和python的区别读写json文件dump 把python 写到json文件load 把json写…

王道计算机组成原理课代表 - 考研计算机 第七章 输入输出系统 究极精华总结笔记

本篇博客是考研期间学习王道课程 传送门 的笔记&#xff0c;以及一整年里对 计算机组成 知识点的理解的总结。希望对新一届的计算机考研人提供帮助&#xff01;&#xff01;&#xff01; 关于对 “输入输出系统” 章节知识点总结的十分全面&#xff0c;涵括了《计算机组成原理》…

阿里云(CentOS)中MySQL8忘记密码的解决方法

阿里云(CentOS)中MySQL8忘记密码的解决方法 方法 在 skip-grant-tables 模式下启动 MySQL&#xff0c;该模式下启动 MySQL 时不启动授权表功能&#xff0c;可以直接免密码登录 实现 编辑 /etc/my.cnf 文件 vim /etc/my.cnf在 [mysqld] 区域末尾添加配置&#xff0c;设置免密…

数组之双指针题

文章目录一、最长连续不重复子序列1.题目介绍2.思路3.二、长度最小的子数组1.题目介绍2.思路3.代码三、数组元素的目标和1.题目介绍2.思路3.代码总结其实在之前我写过不少双指针得题解&#xff0c;刷题专练之数组移除元素 刷题专练之翻转题练习这两篇文章的题解基本就是双指针法…

Protobuf简介

Protobuf简介 1. Protocol Buffers1.1. 什么是Protocol Buffers?1.2. 选择你最喜欢的语言1.3. 如何开始2. Protocol Buffer Basics: C++2.1. 问题领域2.2. 在哪里找到示例代码2.3. 定义协议格式(Defining Your Protocol Format)1. Protocol Buffers Protocol Buffers(协议缓冲…

SpringBoot项目的快速创建方式(包含第一个程序的运行)

目录 一、IDEA所用的版本以及插件 二、操作步骤 一、IDEA所用的版本以及插件 idea的版本&#xff1a; idea2022版本下载安装配置与卸载详细步骤&#xff08;包含运行第一个java程序教程&#xff09;_idea2022下载_云边的快乐猫的博客-CSDN博客 如果英文看不懂就点击&#x1…

性能优化(1)-请求响应优化

一、请求和响应优化 目的&#xff1a;更快的内容到达时间。 1.减少DNS查找:每次主机名的解析都需要一次网络往返,从而增加了请求的延迟时间,同时还会阻塞后续的请求。 重用 TCP 连接&#xff1a;尽可能的使用持久连接&#xff0c;以消除因 TCP 握手和慢启动导致的延迟。 3.减…

C++修炼之练气期第五层——引用

目录 1.引用的概念 2.引用的性质 3.常量引用 4.使用场景 1.作参数 2.作返回值 5.传值与传引用的效率比较 6.值和引用作为返回值的性能比较 7.引用与指针 指针与引用的不同点 要说C语言中哪个知识点最难学难懂&#xff0c;大部分人可能和我一样的答案——指针。C既然…

第十四届蓝桥杯模拟赛第三期(Python)

写在前面 包含本次模拟赛的10道题题解能过样例&#xff0c;应该可以AC若有错误&#xff0c;欢迎评论区指出本次题目除了最后两题有些难度&#xff0c;其余题目较为简单&#xff0c;我只将代码和结果给出&#xff0c;如果不能理解欢迎私信我&#xff0c;我会解答滴。start 2022…

Spring面试专题

讲师&#xff1a;邓澎波 Spring面试专题 1.Spring应该很熟悉吧&#xff1f;来介绍下你的Spring的理解 1.1 Spring的发展历程 先介绍Spring是怎么来的&#xff0c;发展中有哪些核心的节点&#xff0c;当前的最新版本是什么等 通过上图可以比较清晰的看到Spring的各个时间版本…

阿赵的MaxScript学习笔记分享九《可编辑多面体的操作》

大家好&#xff0c;我是阿赵。这是MaxScript学习笔记分享的第九篇&#xff0c;可编辑多面体的操作。不知不觉写了这么多篇了&#xff0c;应该还有几篇就写完了。自己给自己加一下油。 在3DsMax里面如果需要建模&#xff0c;一般使用到的塌陷方式有3种&#xff0c;可编辑的网格、…

P6专题:P6 EPPM和PPM基本概念

目录 引言 Oracles Primavera P6 Enterprise Project Portfolio Management&#xff08;P6 EPPM&#xff09; Oracles Primavera P6 Professional Project Management 引言 Oracle Primavera系列软件专注于项目密集型企业&#xff0c;其整个项目生命周期内所有项目的组合管…

一些Linux内核内存性能调优笔记!

前言 在工作生活中&#xff0c;我们时常会遇到一些性能问题&#xff1a;比如手机用久了&#xff0c;在滑动窗口或点击 APP 时会出现页面反应慢、卡顿等情况&#xff1b;比如运行在某台服务器上进程的某些性能指标&#xff08;影响用户体验的 PCT99 指标等&#xff09;不达预期…

JavaEE学习笔记-SpringBoot快速上手、部分注解解释

SpringBoot快速上手 一、快速创建SpringBoot应用1.1利用IDEA提供的Spring Initializr创建Spring Boot应用1.2Spring Boot生成的项目结构介绍1.3初步测试后端是否OK(建立一个controll类)二、热部署2.1 添加依赖2.2 Setting处项目自动化设置2.3 具体项目设置2.4 待选步骤三、注…

渗透five86-3

本机kali ip为:192.168.56.104,靶机ip用nmap -sP或者arp-scan -l去查看靶机ip为192.168.56.121输入nmap -sS -sV -T5 -A 192.168.56.121 #进行靶机端口信息收集发现仅有80端口&#xff0c;同时发现了robots.txt文件&#xff0c;打开web端发现是Drupal 7的框架&#xff0c;之前的…

【蓝桥杯集训12】DFS(3 / 5)

目录 842. 排列数字 - DFS按位置枚举 843. n-皇后问题 - DFS按行枚举 165. 小猫爬山 - DFS枚举小猫 1209. 带分数 - DFS 3502. 不同路径数 - 842. 排列数字 - DFS按位置枚举 活动 - AcWing 题目&#xff1a; 给你一个整数n 要求将1~n的所有排列情况列出 比如&#xff1a…

stm32hal库硬件IIC使用OLED(SSD1306)

其实OLED算是非常常用的一个小模块了&#xff0c;之前用的一直用的是软件模拟的IIC&#xff0c;总的来说感觉还是都是有点"答辩"&#xff0c;经常莫名其妙的就点不亮的&#xff0c;用了cubemx之后硬件iic配置就非常方便了&#xff0c;还是想用硬件iic&#xff0c;一方…

C++ 常用命令行开发工具(Linux)

文章目录1、简介2、gcc / g2.1 system&#xff08;执行shell 命令&#xff09;2.2 popen&#xff08;建立管道I/O&#xff09;2.3 vforkexec&#xff08;新建子进程&#xff09;3、clang3.1 下载和安装clang3.2 clang和gcc比较3.2.1 gcc3.2.2 clang3.2.3 LLVM4、make4.1 例子14…

DNS作用及工作原理

文章目录1. DNS作用2 DNS 三个组成部分&#xff1a;2.1 客户端2.2Local DNS2.3 权威域 DNS 服务器3 工作过程1. DNS作用 DNS 分为 Client 和 Server&#xff0c;Client 扮演发问的角色&#xff0c;也就是问 Server 一个 Domain Name&#xff0c;而 Server 必须要回答此 Domain…

MySQL实战解析底层---深入浅出索引

目录 前言 索引的常见模型 InnoDB 的索引模型 索引维护 后言 覆盖索引 最左前缀原则 索引下推 前言 一句话简单来说&#xff0c;索引的出现其实就是为了提高数据查询的效率&#xff0c;就像书的目录一样一本500 页的书&#xff0c;如果你想快速找到其中的某一个知识点&…